RE: when do transitions occur?

Was there any follow-up on this discussion?

I'm concerned because David's description of the current spec leads me to believe that authors that write CSS3-compatible pages that rely on the text-shadow event firing will be broken if CSS4+ changes text-shadow to a shorthand.  (And likewise for all 'complex', non-shorthand CSS3 properties.)

> -----Original Message-----
> From: www-style-request@w3.org [mailto:www-style-request@w3.org] On
> Behalf Of Brian Manthos
> Sent: Friday, September 16, 2011 1:12 PM
> To: Øyvind Stenhaug; Tab Atkins Jr.; L. David Baron
> Cc: www-style@w3.org
> Subject: RE: when do transitions occur?
> 
> Brian:
> > Øyvind:
> > > On Thu, 15 Sep 2011 21:48:43 +0200, Tab Atkins Jr.
> > > <jackalmage@gmail.com>
> > > wrote:
> > >
> > > > On Thu, Sep 15, 2011 at 2:41 AM, Brian Manthos
> > > <brianman@microsoft.com>
> > > > wrote:
> > >
> > > >> Example D (CSS3)
> > > >>        from    { text-shadow: 1px 2px 3px red; }
> > > >>        to      { text-shadow: 1px 2px 3px blue; }
> > > >>
> > > >> Example E (CSSn, where n > 3)
> > > >>        from    { text-shadow: 1px 2px 3px pink; text-shadow-
> color:
> > > red;
> > > >> }
> > > >>        to      { text-shadow: 1px 2px 3px cyan; text-shadow-
> color:
> > > >> blue; }
> > >
> > > >> CSS3 browser - Example D
> > > >> 1. text-shadow event ("1px 2px 3px red" -> "1px 2px 3px blue")
> > > >>
> > > >> CSS3 browser - Example E
> > > >> 1. text-shadow event ("1px 2px 3px pink" -> "1px 2px 3px cyan")
> > > >>
> > > >> CSSn browser - Example D
> > > >> 1. text-shadow event ("1px 2px 3px red" -> "1px 2px 3px blue")
> > > >> 2. text-shadow-color event ("red" -> "blue")
> > > >>
> > > >> CSSn browser - Example E
> > > >> 1. text-shadow event ("1px 2px 3px red" -> "1px 2px 3px blue")
> > > >> 2. text-shadow-color event ("red" -> "blue")
> > > >
> > > > Agreed with all of these - this is the only way I can see it
> > working
> > > > sanely with the possibility of turning properties into shorthands
> > in
> > > > the future.
> > >
> > > So a shorthand value is constructed based on the cascaded longhand
> > > values
> > > (or something like that). What if that's not possible? No event?
> >
> > Definitely not "No event".
> >
> > Look back at my examples.  BOTH the shorthand and the longhand should
> > be sent in CSSn D & E.
> >
> >
> > > E.g.
> > >  from { border: solid; }
> > >  to { border: dotted; border-left-style: none; }
> >
> > Let's call this Example F.  Some shorthand values *can* be
> constructed
> > in this case, just not the border shorthand.  And even though you
> can't
> > construct a border shorthand, an event should fire for it.
> >
> > CSS3 browser - Example F:
> > 1. border event ("solid" -> "")
> > 2. border-top event ("solid" -> "dotted")
> > 3. border-right event ("solid" -> "dotted")
> > 4. border-bottom event ("solid" -> "dotted")
> > 5. border-left event ("solid" -> "none")
> > 6. border-style event ("solid" -> "dotted dotted dotted none")
> > 7. border-top-style event ("solid" -> "dotted")
> > 8. border-right-style event ("solid" -> "dotted")
> > 9. border-bottom-style event ("solid" -> "dotted")
> > 10. border-left-style event ("solid" -> "none")
> >
> > Again, note that the first event's end state of "" is because the
> > shorthand cannot be represented.
> >
> >
> > I think of it in somewhat simple terms.
> >
> 
> Model I:
> > Conceptually...
> > 1. Query all CSS properties (including shorthands) @ the from state
> > 2. Query all CSS properties (including shorthands) @ the to state
> > 3. Diff the results of 1 and 2
> > 4. Any properties (including shorthands) that show differences from
> > step 3 should have an event fire
> >
> >
> > A somewhat simpler border example might make it clearer.
> >
> > Example G
> >  from { border: solid; }
> >  to { border: solid; border-left-style: none; }
> >
> > CSS3 browser - Example G:
> > 1. border event ("solid" -> "")
> > 2. border-left event ("solid" -> "none")
> > 3. border-style event ("solid" -> "solid solid solid none")
> > 4. border-left-style event ("solid" -> "none")
> >
> 
> Model II:
> > So the most concise form that strikes me at the moment is, events
> > should fire for both:
> > A. longhand properties that change
> > B. all shorthand properties that contain entries from A
> 
> One more example...
> 
> Example H
>  from { border: solid; border-left-style: dotted; }
>  to { border: solid; border-left-style: none; }
> 
> CSS3 browser - Example G:
> 1. border event ("" -> "")
> 2. border-left event ("dotted" -> "none")
> 3. border-style event ("solid solid solid dotted" -> "solid solid solid
> none")
> 4. border-left-style event ("dotted" -> "none")
> 
> 
> This example illustrates (in the border event) where Model I and Model
> II are different.  The difference is that Model I suggests basing the
> event set on simple string compares of the computed values, whereas
> Model II suggests a logical compare of longhands with enumeration of
> longhands and related shorthands.
> 
> I think Model II is preferred because it minimizes "author surprise"
> w/r/t firing of shorthands.

Received on Wednesday, 28 September 2011 09:39:55 UTC