RE: [css3-animations] display:none, visibility:hidden and animations


[Tab Atkins Jr.:]
> 
> On Mon, Oct 3, 2011 at 12:16 PM, Brian Manthos <brianman@microsoft.com>
> wrote:
> > Tab:
> >> Hmm, that's more subtle then.  I *would* still like animations to run
> >> on display:none subtrees - the fact that we optimize subtrees away
> >> here seems like it could surprise authors at times, because it's
> >> detectable now.
> >>
> >> However, I'm much more concerned about animations on display:none
> >> elements.  The justification for subtrees is understandable, but
> >> stopping or pausing animations on display:none elements themselves is
> >> just wrong.  There's no efficiency justification for it, and it'll
> >> definitely be surprising when we gain the ability to animate
> >> 'display'.
> >
> > http://www.w3.org/TR/CSS21/visuren.html#display-prop

> > #9.2.4 The 'display' property
> > #none
> > #This value causes an element to not appear in the formatting
> > structure #(i.e., in visual media the element generates no boxes and
> > has no effect #on layout). Descendant elements do not generate any
> > boxes either; # the element and its content are removed from the
> > formatting structure #entirely. This behavior cannot be overridden by
> setting the 'display'
> > #property on the descendants.
> > #Please note that a display of 'none' does not create an invisible
> > box; # it creates no box at all. CSS includes mechanisms that enable
> > an element # to generate boxes in the formatting structure that affect
> > formatting but # are not visible themselves. Please consult the section
> on visibility for details.
> >
> >
> > So, Tab, you want an element that ...
> > - does not appear in the formatting structure
> > - generates no boxes
> > - has no effect on layout
> > - has its content removed from the formatting structure entirely
> > - creates no box at all
> >
> > ... to react to animation properties?
> >
> >
> > How and why?  It seems both "technically troubling" and "conceptually
> conflicting" with the the quoted "display:none" description.
> 
> They don't generate boxes, but they still have elements in the element-
> tree, and they still receive properties.  If you ignore performance
> optimizations, the only thing that display:none really does is prevent you
> from doing "used values", since those are layout-dependent.  However,
> transitions and animations operate over computed values, so that's all
> right.
> 
Right. That was my a-priori mental model. It also maps to what happens if you
animate a bunch of element properties on a display:none element using JS then
give the node its display back in the middle of the loop. 

Received on Tuesday, 4 October 2011 05:43:46 UTC