- From: Alan Gresley <alan@css-class.com>
- Date: Mon, 23 May 2011 15:14:39 +1000
- To: Estelle Weyl <estelle@weyl.org>
- CC: "www-style@w3.org CSS" <www-style@w3.org>, cmarrin@apple.com, hyatt@apple.com, Dean Jackson <dino@apple.com>
On 23/05/2011 2:43 PM, Estelle Weyl wrote: > One feature I find lacking in the webkit implementation of animations > is the ability to delay subsequent iterations of an animation. > > For example, say i have an animation that lasts 2 seconds that I want > to run every 10 seconds -- for example, if i want an element to > display for 2seconds every 10 seconds i may write my keyframe > declaration like so: > > @animation 'showbriefly' { > 0%, 20%, 100% {opacity: 0;} > 1%, 19% {opacity: 1;} > } > > .showElement { > animation-name: 'showbriefly'; > animation-duration: 10s; > animation-iteration-count: infinite; > } > > This simple example is doable, since i am only showing and hiding, > and there are really only 2 states, but the more complex an animation > with the more elements that are using that animation at different > delays and times, the crazier my code becomes. > > My stop gap measure has been to run the animation once, remove the > class on webkitAnimationEnd, and add the class back on with a > setTimeout or with WebkitAnimationEnd of a separate animation.... or > to make the animation run completely from keyframes 0 to 20% or so, > and just idle doing nothing from 20% to 100% as in the above > example... but much more complex as my animations are more complex. > this method is not robust. If i create 4 elements that need to be > animated sequentially indefinitely, i can calculate that. But what if > i want to add a 5th element? I have to redo all the keyframe % or use > JS. That is what I referred to as percentages craziness in this thread. http://lists.w3.org/Archives/Public/www-style/2011Apr/0698.html > I would prefer to write the animation this way: > > @-webkit-animation 'showhide' { > 0%,100% {opacity: 0;} > 5%, 95% {opacity: 1;} > } > > .showElement { > animation-name: 'showhide'; > animation-duration: 2s; > animation-iteration-count: infinite; > animation-iteration-delay: 8s; > } > > -Estelle http://standardista.com Would this work better? @animation 'showbriefly' { 0s, 1900ms {opacity: 1;} 2s, 10s {opacity: 0;} } .showElement { animation-name: 'showbriefly'; animation-duration: 10s; animation-iteration-count: infinite; } If the class showElement already had opacity: 0 declared, then it could be simpler. @animation 'showbriefly' { 0s, 1900ms {opacity: 1;} } .showElement { opacity: 0; animation-name: 'showbriefly'; animation-duration: 10s; animation-iteration-count: infinite; } -- Alan Gresley http://css-3d.org/ http://css-class.com/
Received on Monday, 23 May 2011 05:15:11 UTC