w3c / csswg-drafts

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

[css-color] color-mix() percentage normalization doesn't match animations. #7324

Open emilio opened 2 years ago

emilio commented 2 years ago

One nice thing of color-mix is that you can represent the interpolated values between currentColor and other colors in e.g. the computed style.

However, there's no way to represent the interpolated result of a fill animation because of the percentage normalization in https://drafts.csswg.org/css-color-5/#color-mix-percent-norm, which means that color-mix(currentColor 100%, red 100%) ends up with a different alpha rather than with a saturated color.

It'd be good to be able to represent animated colors using color-mix (in the "a bit less bit of magic" sense).

cc @weinig, @svgeesus, @birtles, @BorisChiou

svgeesus commented 2 years ago

which means that color-mix(currentColor 100%, red 100%) ends up with a different alpha rather than with a saturated color

For values that sum to greater than 100% the alpha is not affected. You get the same as color-mix(currentColor 50%, red 50%)

svgeesus commented 1 year ago

@emilio Did this answer your question?

emilio commented 1 year ago

@svgeesus: not quite. My point is that animations don't match the color-mix behavior. And probably they should?

svgeesus commented 6 months ago

Looking back over this, it isn't clear to me what change you want in animations. Could you give an apparently-identical color-mix() and animation which seem like they should give the same result but don't?

Or am I misunderstanding the problem entirely.