Re: [csswg-drafts] [css-gaps-1] Define interpolation behavior (#12431)

The CSS Working Group just discussed `[css-gaps-1] Define interpolation behavior`, and agreed to the following:

* `RESOLVED: define gap decoration animations using LCM methods`

<details><summary>The full IRC log of that discussion</summary>
&lt;kbabbitt> javierct: for interpolation, part of what we're trying to achieve is to define what interpolation behavor will be<br>
&lt;kbabbitt> ... currently the way we've been goingt about it is how grid-template-rows/columns does it<br>
&lt;kbabbitt> ... specifically we're concerned about repeater part<br>
&lt;kbabbitt> ... g-t-r/c will only interpolate repeaters if list lengths match exactly<br>
&lt;kbabbitt> ... that's how we started going about it, then there was some discussion<br>
&lt;kbabbitt> ... makes sense for grid to do that but not necessarily gap decorations<br>
&lt;kbabbitt> ... might want to interpolate repeaters with different counts<br>
&lt;kbabbitt> ... been some discussion about this, some ideas that have been floated<br>
&lt;kbabbitt> ... ideas about lining up repeaters, pullinhg out certain values so things line up<br>
&lt;kbabbitt> ... I thought about it multiple ways, couldn't find a way to generalize that behavior<br>
&lt;kbabbitt> ... I put my notes in the issue, but my conclusion / suggestion was that maybe the best way is to lean towards treating repeaters as list of values<br>
&lt;kbabbitt> ... expanding it<br>
&lt;kbabbitt> ... and then as a second step, use LCM based method of repeatable list interpolation we have for other properties<br>
&lt;kbabbitt> ... match lengths of resulting lists that way<br>
&lt;kbabbitt> ... question would arise, as we mentioned before, what we'd lose before with this way of doing it is that, intermediate values wouldn't necessarily reconstruct repeater<br>
&lt;kbabbitt> ... if the author interpolates a repeater with another repeater, intermediate steps would get list of values rather than repeater<br>
&lt;kbabbitt> ... might be a way to reconstruct repeater<br>
&lt;kbabbitt> ... from these intermediate lists of values<br>
&lt;kbabbitt> ... but I haven't been able to generalize this<br>
&lt;kbabbitt> ... even if one exists, maybe it would be easier for an author if it's not a lot of math to<br>
&lt;kbabbitt> ... if they inspect an arbitrary keyframe, it's easier to think about what these lists of values should be<br>
&lt;kbabbitt> ... but if we have a complicated formula to reconstruct a repeater, authors might not expect that<br>
&lt;kbabbitt> astearns: it's fine to have intermediate values be explicit lists<br>
&lt;kbabbitt> ... main thing is intermediate values need to be representable in a way the property can accept<br>
&lt;kbabbitt> ... if we're fudging the list of values in order to recreate a repeater, that makes it harder for script to process<br>
&lt;kbabbitt> javierct: agree with that<br>
&lt;kbabbitt> ... lean towards this idea of expanding lists<br>
&lt;kbabbitt> ... even if they don't line up in repeat count, match up lists with lcm method<br>
&lt;kbabbitt> ... that would solve interpolation between repeaters of different counts<br>
&lt;kbabbitt> ... but there's the question of auto repeaters<br>
&lt;kbabbitt> ... we don't know the number of gaps at computed-value time<br>
&lt;kbabbitt> ... so we can't expand those lists<br>
&lt;kbabbitt> ... if we see an auto repeater, would we only be able to match it with another auto repeater?<br>
&lt;kbabbitt> ... and if not, don't interpolate?<br>
&lt;kbabbitt> ... that would be the trickier part<br>
&lt;kbabbitt> ... my gut would be, lcm method solves all cases except this one, maybe we need to find some sort of exception<br>
&lt;kbabbitt> ... treat auto repeaters as their own element inthe list and only interpolate between auto repeaters if the list lengths are the same<br>
&lt;kbabbitt> astearns: you mentioned we don't know how many gaps there are<br>
&lt;kbabbitt> ... but do we need to?<br>
&lt;kbabbitt> ... could the rule be to expand auto repeaters to point where there's a common multiple between them?<br>
&lt;kbabbitt> javierct: so repeat(auto, 10 5) and repeat(auto, 2 10)<br>
&lt;kbabbitt> ... expand auto into into 10, 5<br>
&lt;kbabbitt> astearns: Haven't worked through an example in my mind<br>
&lt;kbabbitt> ... Would expect that interpolation shouldn't have anything to do with how many or which values there are<br>
&lt;kbabbitt> javierct: i can see that<br>
&lt;kbabbitt> ... can't think of any issues that would come up with that<br>
&lt;astearns> s/values there are/values are actually used in a given layout/<br>
&lt;kbabbitt> +1, I think we can lcm() between auto repeaters<br>
&lt;kbabbitt> astearns: want to go back to motivation<br>
&lt;kbabbitt> ... solution makes some sense but we passed over the 'why'<br>
&lt;kbabbitt> javierct: we don't have the interpolation behavior for gap decorations defined<br>
&lt;kbabbitt> astearns: definition could be as simple as flip at 50%<br>
&lt;kbabbitt> ... would an author want to interpolate between different gap decorations?<br>
&lt;kbabbitt> q+<br>
&lt;kbabbitt> javierct: want to change color going smoothly from one to another, smaller to bigger<br>
&lt;kbabbitt> ... I think smooth works correctly for these rather than discrete<br>
&lt;kbabbitt> ... ability we want to give the author<br>
&lt;kbabbitt> ... as far as I'm aware, with colors, that's what we usually do<br>
&lt;kbabbitt> ... at the very least match it, because that is what we do when interpolating colors<br>
&lt;kbabbitt> ... border does it this way<br>
&lt;kbabbitt> ... want to match author expectation<br>
&lt;kbabbitt> astearns: makes sense<br>
&lt;astearns> ack kbabbitt<br>
&lt;Kurt> kbabbitt: at minumum, the existing column-rule width/style are interpretable, we need to keep for back-compat<br>
&lt;Kurt> ...the question is what we do for lists now, LCM makes sense for non-auto repeater, it works...<br>
&lt;Kurt> ...for auto repeater to auto repeater, we can take the two and LCM the combination of those, I can't see why that wouldn't work<br>
&lt;Kurt> Javier: can you see a case for going from non-auto to auto, or auto to a list of values<br>
&lt;Kurt> kbabbitt: because of how auto repeaters work, they take up the slack, so it would be an auto repeater to another auto repeater with a list length of 0, and i don't know how that would work<br>
&lt;Kurt> astearns: maybe it makes sense to resolve to define interpolation to use the LCM method, and define new issues later<br>
&lt;Kurt> ...any objections?<br>
&lt;Kurt> RESOLVED: define gap decoration animations using LCM methods<br>
</details>


-- 
GitHub Notification of comment by css-meeting-bot
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/12431#issuecomment-3160718976 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Wednesday, 6 August 2025 15:53:10 UTC