css-houdini-drafts icon indicating copy to clipboard operation
css-houdini-drafts copied to clipboard

[css-properties-values-api] `initial-value` for `*` with arbitrary substitution values

Open cdoublev opened this issue 1 year ago • 1 comments

If I understand the spec correctly, initial-value does not require to be validated when syntax is *.

But in Chrome, given the CSS rules below:

  • the first rule is valid: initial-value: var(1) is discarded
  • the second rule is invalid
@property --p1 {
  inherits: false;
  syntax: "*";
  initial-value: green;
  initial-value: var(1);
}
@property --p2 {
  inherits: false;
  syntax: "*";
  initial-value: green;
  initial-value: var(--initial);
}

I am completely confused by the parse result in Chrome. Anyway, should initial-value be invalid when it includes an arbitrary substitution value?

cdoublev avatar Jan 29 '24 10:01 cdoublev

Hm, the spec is indeed unclear here. I prefer Chrome's behavior - validating the initial-value as normal for an untyped custom property. The spec just needs its conditions to be slightly rephrased to match.

tabatkins avatar Feb 01 '24 22:02 tabatkins

To clarify my understanding:

  • in the first rule, initial-value: var(1) makes the descriptor invalid and ignored
  • in the second rule, initial-value: var(--initial) makes the rule invalid because it is computationally dependent

That is, var(1) is invalid at the syntax level of initial-value, as specified:

If a property contains one or more var() functions, and those functions are syntactically valid, the entire property’s grammar must be assumed to be valid at parse time.

And initial-value: var(--initial) is invalid at the context level of @property, as specified:

  • The initial-value must be computationally independent.

If the above conditions are not met, the @property rule is invalid.

Computationally dependent values could have been specified as invalid at the context level of initial-value, but this does not seem important since authors will probably not make multiple declarations of initial-value.

So the specifications are already clear and I am closing this issue. I hope I am not missing something.

cdoublev avatar Oct 03 '24 09:10 cdoublev

Indeed, I missed something. initial-value must be computationally independent only when syntax is *.

cdoublev avatar Oct 03 '24 09:10 cdoublev