- From: L. David Baron <dbaron@dbaron.org>
- Date: Fri, 22 Apr 2016 13:13:29 -0700
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: Xidorn Quan <w3c@upsuper.org>, www-style list <www-style@w3.org>, Brian Birtles <bbirtles@mozilla.com>
- Message-ID: <20160422201329.GA17193@pescadero.dbaron.org>
On Friday 2016-04-22 12:25 -0700, Tab Atkins Jr. wrote: > On Fri, Apr 22, 2016 at 10:48 AM, L. David Baron <dbaron@dbaron.org> wrote: > > On Monday 2016-04-18 14:43 -0700, Tab Atkins Jr. wrote: > >> I'm not aware of any plans to "switch currentcolor to a computed value > >> for some cases" - can you elaborate? > > > > We've agreed to switch currentcolor to being a computed value. We > > errata'd css-color-3 to do that: > > https://www.w3.org/Style/2011/REC-css3-color-20110607-errata.html#s.4.5 > > and made it such in css-color-4: > > https://drafts.csswg.org/css-color-4/#currentcolor-color > > Ah, Xidorn's wording confused me! In particular, if currentcolor is > turned into an RGBA at computed-value time, then there's never a > problem at all and animations work exactly like animating between px > and em does; the entire issue is that we've specced it to not become > RGBA until used-value time, which instead puts us in a "px vs %" > situation, and we need a calc() equivalent for colors to represent the > intermediate animated value. > > (I think you and he use the term "computed value" to mean something > different than I do - I'd call "1em" a "computed value", because it's > absolutized at computed-value time, while "width: 10%" is a "used > value".) I think I'm using the phrase "computed value" in its CSS meaning ("thing that is a CSS computed value"), whereas you're using it in its English meaning to mean "thing that is computed as part of the process of making a CSS computed value". I think your way is confusing. :-) > If we were completely consistent, both would act as > -webkit-text-fill-color does here. If we added a blend() function and > used it for interpolation, the reverse would happen in practice; both > would act like border-color does here. Decide which one you want, and > we can make sure it happens. I'm guessing it is probably better (and generally more compatible) to use blend(), although there are many cases I haven't tested. (The thing that is known to cause compatibility problems is triggering transitions for -webkit-text-fill-color when the value changes from currentColor to currentColor (which are potentially different values because color changes). Treating currentColor as a computed value consistently, including for animations, fixes this.) > > The spec currently requires (4), but we're hoping in the long term > > to make it something more like but slightly better than (3), where > > the animation treats currentcolor as a computed value so it doesn't > > interpolate changes from currentcolor to currentcolor when color > > changes (which is the problem that caused bug 1260543, because that > > created a -webkit-text-fill-color value that inherited to a > > descendant that specified color, and then overrode that color) but > > that it does animate between currentcolor and real color values. > > This is solved by a blend() function, as I outlined above; > "currentcolor" to "currentcolor" is no change and so no transition > occurs, but "currentcolor" to "red" is animated with > "blend(currentcolor, red X%)" (even if the currentcolor was, at the > time, red). I think this makes getting blend() stable a priority, since I think having blend() may block getting the currentcolor change fully implemented. -David -- 𝄞 L. David Baron http://dbaron.org/ 𝄂 𝄢 Mozilla https://www.mozilla.org/ 𝄂 Before I built a wall I'd ask to know What I was walling in or walling out, And to whom I was like to give offense. - Robert Frost, Mending Wall (1914)
Received on Friday, 22 April 2016 20:13:59 UTC