- From: Dean Jackson <dino@apple.com>
- Date: Thu, 11 Sep 2014 09:57:13 +1000
- To: Brian Birtles <bbirtles@mozilla.com>
- Cc: "<www-style@w3.org>" <www-style@w3.org>
Hi Brian, > On 10 Sep 2014, at 12:46 pm, Brian Birtles <bbirtles@mozilla.com> wrote: > > Thanks for this. I like the features you've proposed a lot. I'm going to respond to the timebase part and the additive part in separate messages. > > First the easy one, animation-behavior. > > On 2014/09/10 7:58, Dean Jackson wrote: >> animation-behavior >> ----------------- >> >> Name: animation-behavior >> Value: replace | add > > I think this is supposed to be '[ replace | add ]#' ? Yeah. All these are lists - my grammar left that out. > >> Initial: replace >> Inherited: no >> Animatable: no >> >> Defines how multiple animations on the same property interact with each other. >> >> The default value is "replace", where the last animation will overwrite all >> other animations in definition order. > > The model in Web Animations lets you set the additive behavior per-animation and per-keyframe. This latter part, per-keyframe lets you do some powerful effects from SVG's to-animation to Kevin Doughty's seamless/relative/negative delta/hypermatic animations.[1] We should allow that. Just like animation-timing-function, the behaviour could be set within keyframes. > >> A value of "additive" means that the animation will add to the value provided >> by the previous animation. This term, and how it works on various properties >> like transform and color, is defined in lots of other specs. For example, >> section 4.1.3 of the Web Animations spec lists a lot of cases (color, transforms, >> lengths). > > We also discovered a third mode, 'accumulate' is useful which does component matching (we needed this in order to match SVG's accumulate behaviour). I left that out, but for no good reason. Let's put it back in. Dean > So for the following: > > @keyframes a { > to { > transform: scale(2); > filter: blur(5px); > } > } > @keyframes b { > to { > transform: scale(3); > filter: blur(10px); > } > } > > Using the following: > > animation: a 5s forwards, b 5s forwards add; > > You'd end with a computed style of: > > transform: scale(2) scale(3); > filter: blur(5px) blur(10px); > > But with the following: > > animation: a 5s forwards, b 5s forwards accumulate; > > You'd end with a computed style of: > > transform: scale(5); > filter: blur(15px); > > > So, in summary, the Web Animations model is: > > animation-composite: [ replace | add | accumulate ]# > > And the same property can also be used on individual keyframes and overrides in the same way as animation-timing-function. > > Best regards, > > Brian > > [1] http://kxdx.org/ >
Received on Wednesday, 10 September 2014 23:57:46 UTC