- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Sun, 4 Apr 2010 20:02:01 -0700
- To: "Alex Mogilevsky" <alexmog@microsoft.com>, Håkon Wium Lie <howcome@opera.com>, <www-style@w3.org>
-------------------------------------------------- From: "Alex Mogilevsky" <alexmog@microsoft.com> Sent: Sunday, April 04, 2010 6:05 PM To: "Håkon Wium Lie" <howcome@opera.com>; <www-style@w3.org> Subject: RE: transitions vs. animations > I didn't have an opportunity to follow this discussion closely, so perhaps > anything I'll say has been said... I think this is a very important topic, > and it really would be great if we came up with a unified model. > > One fundamental difference between transitions and animations is the > definition of start and end state. Generally, it is like this: > > (known state A) --> animation --> (no end state) > (known state A) --> transition --> (known state B) > > A transition is an animation that adapts to specific start and end state > and transition time. An animation doesn't even have to have an end state, > and if it has one it generally can't be predicted without running the > animation. > > Furthermore, transitions are actually triggered by end state: > > (any state A) --> transition --> (desired state B) > I would propose following definition: Animation is a sequence (possibly endless, repeatable) of set of transitions. Consider this sample from current CSS Animation proposal: @keyframes 'wobble' { 0% { left: 100px; } 40% { left: 150px; } 60% { left: 75px; } 100% { left: 100px; } } And now imagine that you have some timing function that changes attribute "wobble" on some element. Having such function keyframe set above can be defined as: [wobble] { transition: left(sin-in-out, Ts); } [wobble=0%] { left: 100px; } [wobble=40%] { left: 150px; } [wobble=60%] { left: 75px; } [wobble=100%] { left: 100px; } I suspect that in principle the whole animation module can be replaced by single attribute that defines timed generator: sequence : attribute-name steps duration [ number-of-repeats]; So if you will define something like div:hover { sequence: "wobble" 4 400ms forever; } div[wobble=0] { left: 100px; transition: ...; } div[wobble=1] { left: 150px; transition: ...; } div[wobble=2] { left: 75px; transition: ...;} div[wobble=3] { left: 100px; transition: ...;} you will be able to define various animations or other time based style changes. -- Andrew Fedoniouk http://terrainformatica.com
Received on Monday, 5 April 2010 03:02:29 UTC