Re: [css3-transitions] transitions and rendering objects vs. DOM nodes

2009/6/29 David Hyatt <hyatt@apple.com>:
> On Jun 28, 2009, at 11:12 PM, Robert O'Callahan wrote:
>
> On Sat, Jun 27, 2009 at 11:44 AM, L. David Baron <dbaron@dbaron.org> wrote:
>>
>> I have another question about transitions that I think ought to be
>> addressed in the spec ( http://dev.w3.org/csswg/css3-transitions/ ),
>> though in this case I'm not exactly sure how it should be addressed
>> in the spec.
>>
>> This is the question of whether transition should be associated with
>> a change in style on a content node, or a change in style on a
>> rendering object (a box).  Either solution poses a bunch of
>> problems.
>>
>> If transitions are associated with the style on an element (DOM
>> node), then we have problems in any case where a content node has
>> more than one style.  The main case of this I can think of is
>> pseudo-elements.  For example, I think it's hard to do something
>> sensible with:
>>  p { color: gray; }
>>  p::first-line { color: black; }
>>  p:hover { color: blue; }
>>  p:hover::first-line { color: aqua; }
>>  a { transition: 3s color; }
>> then it's really not clear what the transition on the anchor should
>> be when the p goes into the :hover state (either when the anchor is
>> split between the first line and the second, or when the anchor is
>> entirely in the first line).
>
> How about: if an element has a first-line or first-letter rule setting a
> property on it, then transitions on that property are disabled for the
> element and all its descendants.
>
> I'm not understanding why transitions can't be made to work on first-line
> and first-letter?
> dave
> (hyatt@apple.com)
>

Because in that case you would have two starting values and two ending
values, one for the part of element that inherits from ::first-line,
the other from the part of element that inherits from the element
directly, whereas transitions expect one.

The same happens with ::first-letter, although it is rare, because
most often the pseudo-element is contained completely inside one
element. You need punctuation across elements to get this problem.
If the innermost approach is used for text-level pseudo-element
(including ::first-letter but also ::selection and possibly others),
this is a non-issue, since nothing can inherit from such
pseudo-elements.

Giovanni

Received on Monday, 29 June 2009 14:30:39 UTC