- From: Sylvain Galineau <sylvaing@microsoft.com>
- Date: Fri, 13 Jan 2012 22:20:42 +0000
- To: Tab Atkins Jr. <jackalmage@gmail.com>
- CC: Boris Zbarsky <bzbarsky@mit.edu>, "www-style@w3.org" <www-style@w3.org>
[Tab Atkins Jr.:]
>
> On Fri, Jan 13, 2012 at 11:15 AM, Sylvain Galineau
> <sylvaing@microsoft.com> wrote:
> > [Boris Zbarsky:]
> >> On 12/14/11 1:49 PM, Tab Atkins Jr. wrote:
> >> > Yup, which is a good reason why Transitions should act like
> >> > Animations and not start if the start-state was display:none.
> >>
> >> My point is that the not-computing behavior may not be limited to
> >> display:none.
> >>
> >> Again, nothing in the spec currently says when styles are actually
> >> computed. Transition starts depend on changes to computed style, so
> >> transitions can only start if the style changes after the first time
> >> it's computed.
> >>
> >> If we seriously wanted to define this somehow, we would need to
> >> define _exactly_ when styles are computed. Doing this and getting UA
> >> vendors to agree to the definition could be exciting.
> >>
> > This definitely seems challenging. Given something like:
> >
> > E { display:none; color:red; transition: color 0.25s; }
> >
> > ...then script such as:
> >
> > e.style.color = "blue";
> > e.style.display = "block";
> >
> > The expectation is that no transition occurs because the element was
> > display:none when the color property was updated.
> >
> > But if we now did:
> >
> > e.style.display = "block";
> > e.style.color = "blue";
> >
> > ..then the expectation is that A transition should occur as the color
> > update occurs after the element is told to generate visible boxes
> > again. Which puts pretty stringent requirement on browsers with
> > respect to when styles are computed. Today only Opera and IE10 seem to
> > align with this expectation though I haven't done anywhere enough
> testing to establish that can be relied on.
>
> Actually, I'd expect both of those to act the same, since the style wasn't
> flushed between the two declarations.
Expectations based on entirely undefined browser-specific optimizations does
not sound like a sound basis for standardization. I would also, at the least,
wager that a *lot* of authors don't understand style flushing. Nor, I suspect,
do they wish to, assuming they even should.
We have defined a basic rule - transitions do not occur if display is set to
none - that would lead to certain runtime expectations given the use-case
outlined above. But browsers will currently have a hard time fulfilling those
reliably without the kind of computation definition Boris alluded to.
I wonder whether and how the Animations and Transitions spec can cover this.
(Or "define its undefinedness" ?) Once you explain that "in the absence of
some kind of synchronizing event - such as request for data that requires
style computation e.g. through getComputedStyle() - one cannot make any
assumptions as to the timing of style computations based on conflicting
property changes applied sequentially or in rapid succession by a script.
As a result, some property updates may not trigger transitions" you're pretty
much saying: "transitions start when the computed value changes, whatever
*that* means in your UA".
I think this is the point Boris has been making for quite some time. I don't
have a solution but this reflects my understanding of the constraints
implementations have in this respect.
It seems implementations have been able to achieve a useful level of interop
without defining this so this need not impede Level 3 progress. Still, it feels
really weird to leave the trigger of transitions largely undefined.
Received on Friday, 13 January 2012 22:21:20 UTC