w3c / csswg-drafts

CSS Working Group Editor Drafts
https://drafts.csswg.org/
Other
4.49k stars 660 forks source link

[css-values-4] `<integer>` grammar terms and `<number>`-returning functions #11040

Open tabatkins opened 2 weeks ago

tabatkins commented 2 weeks ago

Grammars can specify that they take either a <number>, or specifically an <integer>. This behavior is well-defined for literal tokens, but less clear for functions evaluating to these types.

Math functions that resolve to a <number> are defined to be allowed to satisfy an <integer> production; their value is rounded to the nearest integer. Similarly, interpolation between two <integer> terms is defined to round to the nearest integer. But there's not actually anything saying, one way or the other, how to treat other functions that return a <number> but aren't math functions, like sibling-index(). We have never defined a function as returning an <integer>; are these functions simply invalid to be used in z-index and the like?

I propose that we adopt the "round to the nearest integer" behavior for everything that's not a literal <number-token>. (The behavior for <number-token> is probably too entrenched to change.)

Agenda+ as this is a change to a stable spec.

Loirooriol commented 2 weeks ago

Seems reasonable, but specifically for sibling-index(), I guess it could just be defined as returning an <integer> instead? Not having a precedent doesn't seem a big deal.