w3c / w3c/csswg-drafts

[css-transition] Does `transition-property: all` really need special handling?

Open
#8,024 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

css-transitions-1
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 all value and all shorthand property work in similar ways, so the all value 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:

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 the all value).

I think compatibility may not be a problem since:

  • Only Blink supports registered custom properties
  • Even if all stops 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.