- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Thu, 15 Nov 2012 17:22:03 -0800
- To: www-style list <www-style@w3.org>
Right now, there's no good way to produce "instantaneous" transitions in a @keyframes rule. The best you can do is something like "50% {...} 50.001% {...}". This is obviously not great: if you go too far with the zeros, you run into browser precision issues and accidentally specify two identical keyframe selectors; and it's technically possible for a user to land between the two keyframes with a *very* well-timed "animation-play-state: paused;" application, or as we add more ways to control the progress of an animation, such as via script. You can hack around the issue a bit by using "animation-timing-function: step-start;" in the first keyframe, so it at least flips immediately to the next value without a transition in the middle, but this is hacky and non-obvious. It also is still subject to the "too many zeros" problem, if you're trying to minimize the size of the "dead zone" between the two keyframes. Any chance of us allowing a way to specify that a frame is "epsilon" greater than another, such that it should produce an instantaneous transition? (Note that you can already get this functionality in one specific case - for a repeating transition, the 100% value instantaneously flips to the 0% value.) As an initial terrible syntax suggestion, perhaps extend a keyframe simple selector from: "from | to | <percentage>" to "[ from | to | <percentage> ] [ + epsilon ]?" So you'd write my original example as "50% {...} 50% + epsilon {...}". (Not sure if you need the ability to do "- epsilon" - it would let you put something immediately before the 100%, but I don't see any use for that.) ~TJ
Received on Friday, 16 November 2012 01:22:51 UTC