[css-transition] Does `transition-property: all` really need special handling?
Nobody has claimed this yet.
- Dominant language
- Bikeshed
- Stars
- 4.9k
- Forks
- 816
- PR merge metrics
- PR metrics pending
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. 6d0e135e66b1aff8fe5cfb9f3c0f8d1dadfdbae2 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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the CSS Transitions definition of and compare its special handling of all with the CSS Cascade all shorthand and registered custom properties. Review the cited historical commits and specifications; done requires a resolved decision on whether the behavior should change and what normative edits or notes follow.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- css
- Domain
- web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100