-
Notifications
You must be signed in to change notification settings - Fork 765
Description
https://drafts.csswg.org/css-transitions-1/#transition-property-property
The
allvalue andallshorthand property work in similar ways, so theallvalue is just like a shorthand that covers all properties.
I think it's not obvious why <single-transition-property> = all | <custom-ident> with some special behavior for all instead of treating all as a generic shorthand.
If I get it right, the difference is that the all value affects the properties not included in the all shorthand, i.e. direction, unicode-bidi and custom properties.
The difference doesn't typically matter since direction, unicode-bidi are not animatable, and unregistered custom properties animate discretely. So it only matters for registered custom properties, right? I think this deserves a note.
But in fact, was this deliberate? Initially the all value was not allowed to appear in the list, like none, so that's why it needed special handling. 6d0e135 allowed it in the list of idents. This happened in Feb 2012 after a resolution in Nov 2011. But at that point, all was defined to include all properties:
- It included
unicode-bidianddirection, this didn't change until Jul 2013. - CSS Variables had just been created in Sep 2011, and the interaction with
allwasn't noticed/addressed until Aug 2018 - The CSS Properties and Values spec that introduced registered properties wasn't created until Feb 2015
So it seems to me that at that time, the special behavior for the all value was identical to the behavior that we would get by treating it as a reference to the shorthand all. But things changed, possibly without noticing the effect on transition-property.
I'm not a big fan of this special behavior for all. I wonder if we can:
- Remove the special behavior for
all, just treat it as other shorthands. This would only impact registered custom properties. - Add special behavior for
--to refer to all custom properties. - Optionally, add special behavior for
everything(or whatever ident that does not exist as a property) to refer to all properties (i.e. the current behavior of theallvalue).
I think compatibility may not be a problem since:
- Only Blink supports registered custom properties
- Even if
allstops transitioning registered custom properties, the standard properties that use the custom properties will still transition, so in simple cases the outcome will be the same.