css3-animations/Overview.src.html

Fri, 22 Feb 2013 13:29:38 -0800

author
Sylvain Galineau <sylvaing@microsoft.com>
date
Fri, 22 Feb 2013 13:29:38 -0800
changeset 7547
1f07df4d690e
parent 7529
01d3f8204e5d
permissions
-rw-r--r--

[css3-animations] Only the first value of animation-timing-function applies when used in a keyframe block (bug 14796)

jackalmage@5911 1 <!DOCTYPE html>
dino@937 2 <html lang="en">
dino@937 3 <head>
jackalmage@5911 4 <title>CSS Animations</title>
jackalmage@5911 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
jackalmage@5911 6 <link rel="stylesheet" type="text/css" href="../default.css">
dbaron@6736 7 <style type="text/css">
dbaron@6736 8 div.prod { margin: 1em 2em; }
dbaron@6736 9 </style>
bert@7529 10 <link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-ED.css">
dino@937 11 </head>
dino@937 12
dino@937 13 <body>
dino@937 14
dino@937 15 <div class="head">
dino@937 16 <!--logo-->
dino@937 17
simon@2533 18 <h1>CSS Animations</h1>
dino@937 19
dino@937 20 <h2 class="no-num no-toc">[LONGSTATUS] [DATE]</h2>
dino@937 21 <dl>
jackalmage@5911 22 <dt>This version:
dbaron@7504 23 <dd><a href="[VERSION]">[VERSION]</a>
jackalmage@5911 24 <dt>Latest version:
jackalmage@5911 25 <dd><a
jackalmage@5911 26 href="http://www.w3.org/TR/css3-animations/">[LATEST]</a>
jackalmage@5911 27 <dt>Editor's draft:
jackalmage@5911 28 <dd><a href="http://dev.w3.org/csswg/[SHORTNAME]/">http://dev.w3.org/csswg/[SHORTNAME]/</a>
dbaron@7459 29 (<a href="https://dvcs.w3.org/hg/csswg/log/tip/[SHORTNAME]/Overview.src.html">change log</a>)
jackalmage@5911 30 <dt>Previous version:
dbaron@7504 31 <dd><a href="http://www.w3.org/TR/2012/WD-css3-animations-20130219/">
dbaron@7504 32 http://www.w3.org/TR/2012/WD-css3-animations-20130219/</a>
jackalmage@5911 33 <dt id="editors-list">Editors:
jackalmage@5911 34 <dd><a href="mailto:dino@apple.com">Dean Jackson</a> (<a
jackalmage@5911 35 href="http://www.apple.com/">Apple Inc</a>)
sylvaing@7517 36 <dd><a href="mailto:ratan@microsoft.com">Rossen Atanassov</a>
sylvaing@7517 37 (<a class=org href="http://www.microsoft.com/">Microsoft</a>)
sylvaing@7517 38 <dd class=vcard><a class=fn href="http://dbaron.org/">L. David Baron</a>
sylvaing@7517 39 (<a class=org href="http://www.mozilla.org/">Mozilla</a>)
sylvaing@7517 40
sylvaing@7517 41 <dt>Former editors:
jackalmage@5911 42 <dd><a href="mailto:hyatt@apple.com">David Hyatt</a> (<a
jackalmage@5911 43 href="http://www.apple.com/">Apple Inc</a>)
jackalmage@5911 44 <dd><a href="mailto:cmarrin@apple.com">Chris Marrin</a> (<a
jackalmage@5911 45 href="http://www.apple.com/">Apple Inc</a>)
sylvaing@7517 46 <dd>Sylvain Galineau, Microsoft
sylvaing@7518 47
jackalmage@5911 48 <dt>Issues list:
jackalmage@5911 49 <dd><a href="https://www.w3.org/Bugs/Public/buglist.cgi?query_format=advanced&amp;product=CSS&amp;component=Animations&amp;resolution=---&amp;cmdtype=doit">in Bugzilla</a>
dbaron@3965 50
jackalmage@5911 51 <dt>Discussion:
jackalmage@5911 52 <dd><a href="http://lists.w3.org/Archives/Public/www-style/">www-style@w3.org</a> with subject line &ldquo;<kbd>[[SHORTNAME]] <var>&hellip; message topic &hellip;</var></kbd>&rdquo;
dbaron@5229 53
jackalmage@5911 54 <dt>Test suite:
jackalmage@5911 55 <dd>none yet
dino@937 56 </dl>
dino@937 57
dino@937 58 <!--copyright-->
dino@937 59
dino@937 60 <hr title="Separator for header">
dino@937 61 </div>
dino@937 62
jackalmage@5911 63 <h2 class="no-num no-toc" id="abstract">
jackalmage@5911 64 Abstract</h2>
dino@937 65
jackalmage@5911 66 <p>
jackalmage@5911 67 This CSS module describes a way for authors to animate the values of CSS properties over time,
jackalmage@5911 68 using keyframes.
jackalmage@5911 69 The behavior of these keyframe animations can be controlled by specifying their duration,
jackalmage@5911 70 number of repeats,
jackalmage@5911 71 and repeating behavior.
dino@937 72
jackalmage@5911 73
jackalmage@5911 74 <h2 class="no-num no-toc" id="status">
jackalmage@5911 75 Status of this document</h2>
dino@937 76 <!--status-->
dino@937 77
dino@937 78
jackalmage@5911 79 <h2 class="no-num no-toc" id="contents">
jackalmage@5911 80 Table of contents</h2>
dino@937 81 <!--toc-->
dino@937 82
dino@937 83
jackalmage@5911 84 <h2 id="introduction">
jackalmage@5911 85 Introduction</h2>
dino@937 86
jackalmage@5911 87 <p><em>This section is not normative.</em>
dino@937 88
jackalmage@5911 89 <p>
jackalmage@5911 90 CSS Transitions [[CSS3-TRANSITIONS]]
jackalmage@5911 91 provide a way to interpolate CSS property values
jackalmage@5911 92 when they change as a result of underlying property changes.
jackalmage@5911 93 This provides an easy way to do simple animation,
jackalmage@5911 94 but the start and end states of the animation are controlled by the existing property values,
jackalmage@5911 95 and transitions provide little control to the author on how the animation progresses.
jackalmage@5911 96
jackalmage@5911 97 <p>
jackalmage@5911 98 This proposal introduces <dfn>defined animations</dfn>,
jackalmage@5911 99 in which the author can specify the changes in CSS properties over time as a set of keyframes.
jackalmage@5911 100 Animations are similar to transitions
jackalmage@5911 101 in that they change the presentational value of CSS properties over time.
jackalmage@5911 102 The principal difference is that
jackalmage@5911 103 while transitions trigger <em>implicitly</em> when property values change,
jackalmage@5911 104 animations are <em>explicitly</em> executed when the animation properties are applied.
jackalmage@5911 105 Because of this,
jackalmage@5911 106 animations require explicit values for the properties being animated.
jackalmage@5911 107 These values are specified using animation keyframes, described below.
jackalmage@5911 108
jackalmage@5911 109 <p>
jackalmage@5911 110 Many aspects of the animation can be controlled,
jackalmage@5911 111 including how many times the animation iterates,
jackalmage@5911 112 whether or not it alternates between the begin and end values,
jackalmage@5911 113 and whether or not the animation should be running or paused.
jackalmage@5911 114 An animation can also delay its start time.
simon@1671 115
sylvaing@7391 116 <h2 id="values">
sylvaing@7391 117 Values</h2>
sylvaing@7391 118
sylvaing@7391 119 <p>
sylvaing@7391 120 This specification follows the <a href="http://www.w3.org/TR/CSS21/about.html#property-defs">CSS property definition conventions</a> from [[!CSS21]].
sylvaing@7391 121 Value types not defined in this specification are defined in CSS LevelĀ 2 RevisionĀ 1 [[!CSS21]].
sylvaing@7391 122 Other CSS modules may expand the definitions of these value types:
sylvaing@7391 123 for example [[CSS3VAL]], when combined with this module,
sylvaing@7391 124 expands the definition of the <var>&lt;length&gt;</var> value type as used in this specification.
sylvaing@7391 125
sylvaing@7391 126 <p>In addition to the property-specific values listed in their definitions, all properties defined in this specification also accept the <a href="http://dev.w3.org/csswg/css3-values/#common-keywords">''initial''</a> and <a href="http://dev.w3.org/csswg/css3-values/#common-keywords">''inherit''</a> keyword as their property value. For readability it has not been repeated explicitly.
sylvaing@7391 127
simon@1719 128
jackalmage@5911 129 <h2 id="animations">
jackalmage@5911 130 Animations</h2>
simon@1719 131
jackalmage@5911 132 <p>
jackalmage@5911 133 CSS Animations affect computed property values.
jackalmage@5911 134 During the execution of an animation,
jackalmage@5911 135 the computed value for a property is controlled by the animation.
jackalmage@5911 136 This overrides the value specified in the normal styling system.
sylvaing@6806 137 Animations override all normal rules, but are overriden by
sylvaing@6806 138 !important rules.
simon@1719 139
jackalmage@5911 140 <p>
jackalmage@5911 141 If at one point in time there are multiple animations specifying behavior for the same property,
jackalmage@5911 142 the animation whose name occurs last in the value of 'animation-name'
jackalmage@5911 143 will override the other animations at that point.
jackalmage@5911 144
simon@1719 145
jackalmage@5911 146 <p>
jackalmage@5911 147 An animation does not affect the computed value before the application of the animation,
jackalmage@5911 148 before the animation delay has expired,
jackalmage@5911 149 and after the end of the animation.
jackalmage@5911 150
simon@1719 151
jackalmage@5911 152 <div class="figure">
jackalmage@5911 153 <img src="sandwich.png" alt="">
jackalmage@5911 154
jackalmage@5911 155 <p class="caption">
jackalmage@5911 156 Computation of animated property values
jackalmage@5911 157 </div>
simon@1719 158
jackalmage@5911 159 <p>
jackalmage@5911 160 The diagram above shows how property values are computed.
jackalmage@5911 161 The intrinsic style is shown at the top of the diagram.
jackalmage@5911 162 The computed value is derived from intrinsic style
jackalmage@5911 163 at the times when an animation is not running
jackalmage@5911 164 and also when an animation is delayed
jackalmage@5911 165 (see below for specification of animation delay).
jackalmage@5911 166 During an animation,
jackalmage@5911 167 the computed style is derived from the animated value.
jackalmage@5911 168
simon@1719 169
jackalmage@5911 170 <p>
jackalmage@5911 171 The start time of an animation is the latter of two moments:
jackalmage@5911 172 the time at which the style is resolved that specifies the animation,
jackalmage@5911 173 or the time the document's load event is fired.
jackalmage@5911 174 Therefore, an animation specified in the document style sheet
jackalmage@5911 175 will begin at the document load.
jackalmage@5911 176 An animation specified on an element by modifying the style after the document has loaded
jackalmage@5911 177 will start when the style is resolved.
jackalmage@5911 178 That may be immediately in the case of a pseudo style rule such as hover,
jackalmage@5911 179 or may be when the scripting engine returns control to the browser
jackalmage@5911 180 (in the case of style applied by script).
jackalmage@5911 181
simon@1719 182
jackalmage@5911 183 <p>
jackalmage@5911 184 An animation applies to an element
sylvaing@7518 185 if its name appears as one of the identifiers in the
sylvaing@7518 186 computed value of the 'animation-name' property.
jackalmage@5911 187 Once an animation has started
jackalmage@5911 188 it continues until it ends
jackalmage@5911 189 or the 'animation-name' is removed.
jackalmage@5911 190 The values used for the keyframes and animation properties are snapshotted at the time the animation starts.
jackalmage@5911 191 Changing them during the execution of the animation has no effect.
jackalmage@5911 192 Note also that changing the value of 'animation-name' does not necessarily restart an animation
jackalmage@5911 193 (e.g., if a list of animations are applied and one is removed from the list,
jackalmage@5911 194 only that animation will stop;
jackalmage@5911 195 The other animations will continue).
jackalmage@5911 196 In order to restart an animation,
jackalmage@5911 197 it must be removed then reapplied.
jackalmage@5911 198
simon@1719 199
jackalmage@5911 200 <p>
jackalmage@5911 201 The end of the animation is defined by the combination of the
jackalmage@5911 202 'animation-duration',
jackalmage@5911 203 'animation-iteration-count' and
jackalmage@5911 204 'animation-fill-mode' properties.
jackalmage@5911 205
jackalmage@5911 206
jackalmage@5911 207 <div class="example">
jackalmage@5911 208 <pre>
jackalmage@5911 209 div {
dbaron@6082 210 animation-name: diagonal-slide;
dbaron@6082 211 animation-duration: 5s;
dbaron@6082 212 animation-iteration-count: 10;
jackalmage@5911 213 }
simon@1719 214
jackalmage@5911 215 @keyframes diagonal-slide {
simon@1719 216
dbaron@6082 217 from {
dbaron@6082 218 left: 0;
dbaron@6082 219 top: 0;
dbaron@6082 220 }
simon@1719 221
dbaron@6082 222 to {
dbaron@6082 223 left: 100px;
dbaron@6082 224 top: 100px;
dbaron@6082 225 }
simon@1719 226
jackalmage@5911 227 }</pre>
simon@1719 228
jackalmage@5911 229 <p>
jackalmage@5911 230 This will produce an animation
jackalmage@5911 231 that moves an element from (0, 0) to (100px, 100px)
jackalmage@5911 232 over five seconds
jackalmage@5911 233 and repeats itself nine times
jackalmage@5911 234 (for a total of ten iterations).
jackalmage@5911 235 </div>
dino@937 236
sylvaing@7140 237 <p>
sylvaing@7140 238 Setting the display property to 'none' will terminate any running animation
sylvaing@7140 239 applied to the element and its descendants.
sylvaing@7140 240
sylvaing@7140 241 If an element has a display of 'none', updating display to a value other than 'none'
sylvaing@7140 242 will start all animations applied to the element by the 'animation-name' property,
sylvaing@7140 243 as well as all animations applied to descendants with display other than 'none'.
sylvaing@7140 244 </p>
sylvaing@7140 245
dbaron@7313 246 <p>
dbaron@7313 247 While authors can use animations to create dynamically changing content,
dbaron@7313 248 dynamically changing content can lead to seizures in some users.
dbaron@7313 249 For information on how to avoid content that can lead to seizures, see
dbaron@7313 250 <a href="http://www.w3.org/TR/WCAG20/#seizure">Guideline 2.3:
dbaron@7313 251 Seizures:
dbaron@7313 252 Do not design content in a way that is known to cause seizures</a>
dbaron@7313 253 ([[WCAG20]]).
dbaron@7313 254 </p>
dbaron@7313 255
jackalmage@5911 256 <h2 id="keyframes">
jackalmage@5911 257 Keyframes</h2>
jackalmage@5911 258 <p>
jackalmage@5911 259 Keyframes are used to specify the values for the animating properties
jackalmage@5911 260 at various points during the animation.
jackalmage@5911 261 The keyframes specify the behavior of one cycle of the animation;
jackalmage@5911 262 the animation may iterate one or more times.
jackalmage@5911 263
jackalmage@5911 264 <p>
jackalmage@5911 265 Keyframes are specified using a specialized CSS at-rule.
jackalmage@5911 266 A @keyframes rule consists of the keyword "@keyframes",
jackalmage@5911 267 followed by an identifier giving a name for the animation
jackalmage@5911 268 (which will be referenced using 'animation-name'),
jackalmage@5911 269 followed by a set of style rules
jackalmage@5911 270 (delimited by curly braces).
jackalmage@5911 271
jackalmage@5911 272 <p>
jackalmage@5911 273 The <dfn>keyframe selector</dfn> for a keyframe style rule
jackalmage@5911 274 consists of a comma-separated list of percentage values
jackalmage@5911 275 or the keywords 'from' or 'to'.
jackalmage@5911 276 The selector is used to specify the percentage along the duration of the animation that the keyframe represents.
jackalmage@5911 277 The keyframe itself is specified by the block of property values declared on the selector.
jackalmage@5911 278 The keyword 'from' is equivalent to the value ''0%''.
jackalmage@5911 279 The keyword 'to' is equivalent to the value ''100%''.
jackalmage@5911 280 <span class='note'>Note that the percentage unit specifier must be used on percentage values.
jackalmage@5911 281 Therefore, ''0'' is an invalid keyframe selector.</span>
jackalmage@5911 282
jackalmage@5911 283 <p>
jackalmage@5911 284 If a ''0%'' or ''from'' keyframe is not specified,
jackalmage@5911 285 then the user agent constructs a ''0%'' keyframe
jackalmage@5911 286 using the computed values of the properties being animated.
jackalmage@5911 287 If a ''100%'' or ''to'' keyframe is not specified,
jackalmage@5911 288 then the user agent constructs a ''100%'' keyframe
sylvaing@6384 289 using the computed values of the properties being animated.
sylvaing@6384 290 If a keyframe selector specifies
sylvaing@6384 291 negative percentage values or
sylvaing@6384 292 values higher than 100%,
sylvaing@6384 293 then the keyframe will be ignored.
sylvaing@7141 294
sylvaing@7141 295 <p>
sylvaing@6220 296 The <dfn>keyframe declaration block</dfn> for a keyframe rule
jackalmage@5911 297 consists of properties and values.
jackalmage@5911 298 Properties that are unable to be animated are ignored in these rules,
jackalmage@5911 299 with the exception of 'animation-timing-function',
sylvaing@6220 300 the behavior of which is described below. In addition, keyframe rule declarations qualified with !important are ignored.
jackalmage@5911 301
jackalmage@5911 302 <p class="issue">
jackalmage@5911 303 Need to describe what happens if a property is not present in all keyframes.
jackalmage@5911 304
jackalmage@5911 305 <p>
jackalmage@5911 306 The @keyframes rule that is used by an animation
jackalmage@5911 307 will be the last one encountered in sorted rules order
jackalmage@5911 308 that matches the name of the animation specified by the 'animation-name' property.
jackalmage@5911 309 @keyframes rules do not cascade;
jackalmage@5911 310 therefore, an animation will never derive keyframes from more than one @keyframes rule.
sylvaing@7141 311
sylvaing@7141 312 <p class='note'>
sylvaing@7141 313 Note that since empty @keyframes rule are valid, they may hide the keyframes of
sylvaing@7141 314 those preceding animation definitions with a matching name.
jackalmage@5911 315
jackalmage@5911 316 <p>
jackalmage@5911 317 To determine the set of keyframes,
jackalmage@5911 318 all of the values in the selectors are sorted in increasing order by time.
jackalmage@5911 319 If there are any duplicates,
jackalmage@5911 320 then the last keyframe specified inside the @keyframes rule
jackalmage@5911 321 will be used to provide the keyframe information for that time.
jackalmage@5911 322 There is no cascading within a @keyframes rule if multiple keyframes specify the same keyframe selector values.
dino@937 323
jackalmage@5911 324 <p>
sylvaing@6047 325 If a property is not specified for a keyframe,
jackalmage@5911 326 or is specified but invalid,
jackalmage@5911 327 the animation of that property proceeds as if that keyframe did not exist.
jackalmage@5911 328 Conceptually,
jackalmage@5911 329 it is as if a set of keyframes is constructed for each property that is present in any of the keyframes,
jackalmage@5911 330 and an animation is run independently for each property.
jackalmage@5911 331
jackalmage@5911 332 <div class="example">
jackalmage@5911 333 <pre>
jackalmage@5911 334 @keyframes wobble {
dbaron@6082 335 0% {
dbaron@6082 336 left: 100px;
dbaron@6082 337 }
dino@937 338
dbaron@6082 339 40% {
dbaron@6082 340 left: 150px;
dbaron@6082 341 }
dino@937 342
dbaron@6082 343 60% {
dbaron@6082 344 left: 75px;
dbaron@6082 345 }
dino@937 346
dbaron@6082 347 100% {
dbaron@6082 348 left: 100px;
dbaron@6082 349 }
jackalmage@5911 350 }</pre>
dino@937 351
jackalmage@5911 352 <p>
jackalmage@5911 353 Four keyframes are specified for the animation named "wobble".
jackalmage@5911 354 In the first keyframe,
jackalmage@5911 355 shown at the beginning of the animation cycle,
jackalmage@5911 356 the value of the 'left' property being animated is ''100px''.
jackalmage@5911 357 By 40% of the animation duration,
jackalmage@5911 358 'left' has animated to ''150px''.
jackalmage@5911 359 At 60% of the animation duration,
jackalmage@5911 360 'left' has animated back to ''75px''.
jackalmage@5911 361 At the end of the animation cycle,
jackalmage@5911 362 the value of 'left' has returned to ''100px''.
jackalmage@5911 363 The diagram below shows the state of the animation if it were given a duration of ''10s''.
jackalmage@5911 364
jackalmage@5911 365 <div class="figure">
jackalmage@5911 366 <img src="animation1.png" alt="">
jackalmage@5911 367
jackalmage@5911 368 <p class="caption">
jackalmage@5911 369 Animations states specified by keyframes
jackalmage@5911 370 </div>
jackalmage@5911 371 </div>
dino@937 372
jackalmage@5911 373 <p>
jackalmage@5911 374 The following is the grammar for the keyframes rule.
jackalmage@5911 375
jackalmage@5911 376 <pre>
jackalmage@5911 377 keyframes_rule: KEYFRAMES_SYM S+ IDENT S* '{' S* keyframes_blocks '}' S*;
dino@937 378
jackalmage@5911 379 keyframes_blocks: [ keyframe_selector '{' S* declaration? [ ';' S* declaration? ]* '}' S* ]* ;
dbaron@4123 380
jackalmage@5911 381 keyframe_selector: [ FROM_SYM | TO_SYM | PERCENTAGE ] S* [ ',' S* [ FROM_SYM | TO_SYM | PERCENTAGE ] S* ]*;
dbaron@4123 382
jackalmage@5911 383 @{K}{E}{Y}{F}{R}{A}{M}{E}{S} {return KEYFRAMES_SYM;}
jackalmage@5911 384 {F}{R}{O}{M} {return FROM_SYM;}
jackalmage@5911 385 {T}{O} {return TO_SYM;}</pre>
dino@937 386
dino@937 387
jackalmage@5911 388 <h3 id="timing-functions">
jackalmage@5911 389 Timing functions for keyframes</h3>
dino@937 390
jackalmage@5911 391 <p>
jackalmage@5911 392 A keyframe style rule may also declare the timing function that is to be used
jackalmage@5911 393 as the animation moves to the next keyframe.
jackalmage@5911 394
jackalmage@5911 395 <div class="example">
jackalmage@5911 396 <pre>
jackalmage@5911 397 @keyframes bounce {
dino@937 398
dbaron@6082 399 from {
dbaron@6082 400 top: 100px;
dbaron@6082 401 animation-timing-function: ease-out;
dbaron@6082 402 }
dino@937 403
dbaron@6082 404 25% {
dbaron@6082 405 top: 50px;
dbaron@6082 406 animation-timing-function: ease-in;
dbaron@6082 407 }
dino@937 408
dbaron@6082 409 50% {
dbaron@6082 410 top: 100px;
dbaron@6082 411 animation-timing-function: ease-out;
dbaron@6082 412 }
dino@937 413
dbaron@6082 414 75% {
dbaron@6082 415 top: 75px;
dbaron@6082 416 animation-timing-function: ease-in;
dbaron@6082 417 }
dino@937 418
dbaron@6082 419 to {
dbaron@6082 420 top: 100px;
dbaron@6082 421 }
dbaron@5370 422
jackalmage@5911 423 }</pre>
dino@937 424
jackalmage@5911 425 <p>
jackalmage@5911 426 Five keyframes are specified for the animation named "bounce".
jackalmage@5911 427 Between the first and second keyframe
jackalmage@5911 428 (i.e., between 0% and 25%)
jackalmage@5911 429 an ''ease-out'' timing function is used.
jackalmage@5911 430 Between the second and third keyframe
jackalmage@5911 431 (i.e., between 25% and 50%)
jackalmage@5911 432 an ''ease-in'' timing function is used.
jackalmage@5911 433 And so on.
jackalmage@5911 434 The effect will appear as an element that moves up the page ''50px'',
jackalmage@5911 435 slowing down as it reaches its highest point
jackalmage@5911 436 then speeding up as it falls back to ''100px''.
jackalmage@5911 437 The second half of the animation behaves in a similar manner,
jackalmage@5911 438 but only moves the element ''25px'' up the page.
jackalmage@5911 439 </div>
jackalmage@5911 440
jackalmage@5911 441 <p>
jackalmage@5911 442 A timing function specified on the "to" or 100% keyframe is ignored.
dino@937 443
jackalmage@5911 444 <p>
jackalmage@5911 445 See the 'animation-timing-function' property for more information.
dino@937 446
dino@937 447
jackalmage@5911 448 <h3 id="animation-name-property">
jackalmage@5911 449 The 'animation-name' Property</h3>
dino@937 450
jackalmage@5911 451 <p>
jackalmage@5911 452 The 'animation-name' property defines a list of animations that apply.
jackalmage@5911 453 Each name is used to select the keyframe at-rule
jackalmage@5911 454 that provides the property values for the animation.
jackalmage@5911 455 If the name does not match any keyframe at-rule,
jackalmage@5911 456 there are no properties to be animated
jackalmage@5911 457 and the animation will not execute.
jackalmage@5911 458 Furthermore,
jackalmage@5911 459 if the animation name is ''none''
jackalmage@5911 460 then there will be no animation.
jackalmage@5911 461 This can be used to override any animations coming from the cascade.
jackalmage@5911 462 If multiple animations are attempting to modify the same property,
jackalmage@5911 463 then the animation closest to the end of the list of names wins.
jackalmage@5911 464
jackalmage@5911 465 <p id="list-matching">
jackalmage@5911 466 Each animation listed by name
jackalmage@5911 467 should have a corresponding value for the other animation properties listed below.
jackalmage@5911 468 If the lists of values for the other animation properties do not have the same length,
jackalmage@5911 469 the length of the 'animation-name' list
dbaron@6737 470 determines the number of items in each list examined when starting animations.
jackalmage@5911 471 The lists are matched up from the first value:
jackalmage@5911 472 excess values at the end are not used.
jackalmage@5911 473 If one of the other properties doesn't have enough comma-separated values to match the number of values of 'animation-name',
jackalmage@5911 474 the UA must calculate its used value by repeating the list of values until there are enough.
jackalmage@5911 475 This truncation or repetition does not affect the computed value.
jackalmage@5911 476 <span class="note">Note: This is analogous to the behavior of the 'background-*'properties,
jackalmage@5911 477 with 'background-image' analogous to 'animation-name'.</span>
jackalmage@5911 478
dino@937 479
jackalmage@5911 480 <table class=propdef>
jackalmage@5911 481 <tr>
jackalmage@5911 482 <th>Name:</th>
jackalmage@5911 483 <td><dfn>animation-name</dfn>
jackalmage@5911 484 <tr>
jackalmage@5911 485 <th><a href="#values">Value</a>:
dbaron@6739 486 <td><span>&lt;single-animation-name&gt;</span> [ ',' <span>&lt;single-animation-name&gt;</span> ]*
jackalmage@5911 487 <tr>
jackalmage@5911 488 <th>Initial:
jackalmage@5911 489 <td>''none''
jackalmage@5911 490 <tr>
jackalmage@5911 491 <th>Applies To:
sylvaing@7230 492 <td>all elements, ::before and ::after pseudo-elements
jackalmage@5911 493 <tr>
jackalmage@5911 494 <th>Inherited:
jackalmage@5911 495 <td>no
jackalmage@5911 496 <tr>
dbaron@6735 497 <th>Animatable:
dbaron@6735 498 <td>no
dbaron@6735 499 <tr>
dbaron@6735 500 <th>Percentages:
dbaron@6735 501 <td>N/A
jackalmage@5911 502 <tr>
jackalmage@5911 503 <th>Media:
jackalmage@5911 504 <td>visual
jackalmage@5911 505 <tr>
dbaron@6735 506 <th>Computed Value:
dbaron@6735 507 <td>As specified
jackalmage@5911 508 <tr>
jackalmage@5911 509 <th>Canonical Order:
jackalmage@5911 510 <td><abbr title="follows order of property value definition">per grammar</abbr>
jackalmage@5911 511 </table>
dino@937 512
dbaron@6736 513 <div class="prod">
dbaron@6739 514 <dfn id="single-animation-name">&lt;single-animation-name&gt;</dfn> = none | &lt;IDENT&gt;
dbaron@6736 515 </div>
dbaron@6736 516
jackalmage@5911 517 <!--
jackalmage@5911 518 <p>
jackalmage@5911 519 It is possible for elements to have multiple animations running that change the same property or properties. In this case the animations combine in a manner defined by the property. For example, animations on 'opacity' will add together and animations on 'transform' will have their transformation matrices multiplied.
jackalmage@5911 520
jackalmage@5911 521 <div class="example">
jackalmage@5911 522 <p style="display:none">
jackalmage@5911 523 Example(s):
jackalmage@5911 524
jackalmage@5911 525 <pre>
jackalmage@5911 526 @keyframes 'border-bloat' {
jackalmage@5911 527 from {
jackalmage@5911 528 border-width: 0;
jackalmage@5911 529 }
jackalmage@5911 530 to {
jackalmage@5911 531 border-width: 10px;
jackalmage@5911 532 }
jackalmage@5911 533 }
dino@937 534
jackalmage@5911 535 @keyframes 'border-diet' {
jackalmage@5911 536 from {
jackalmage@5911 537 border-width: 4px;
jackalmage@5911 538 }
jackalmage@5911 539 to {
jackalmage@5911 540 border-width: 2px;
jackalmage@5911 541 }
jackalmage@5911 542 }
dino@937 543
jackalmage@5911 544 div {
jackalmage@5911 545 animation-name: 'border-bloat', 'border-diet';
jackalmage@5911 546 animation-duration: 10s, 4s;
jackalmage@5911 547 }
jackalmage@5911 548 </pre>
jackalmage@5911 549 <p>
jackalmage@5911 550 The above example has two animations executing on the same property, 'border-width'. The animations are additive. That is, the
jackalmage@5911 551 resulting value for the property will be the addition of the values from the
jackalmage@5911 552 two animations.
jackalmage@5911 553
jackalmage@5911 554 <p>
jackalmage@5911 555 At time '0s' the element's border will be 4px wide (0px from 'border-bloat' plus 4px from 'border-diet').
jackalmage@5911 556 At time '4s' the element's border will be 6px wide (4px from 'border-bloat' plus 2px from 'border-diet').
jackalmage@5911 557 At time '10s' the element's border will be 10px wide (10px from 'border-bloat' and no addition from
jackalmage@5911 558 'border-diet' as it is no longer executing).
jackalmage@5911 559
jackalmage@5911 560 </div>
jackalmage@5911 561 -->
dino@937 562
dino@937 563
jackalmage@5911 564 <h3 id="animation-duration-property">
jackalmage@5911 565 The 'animation-duration' Property</h3>
dino@937 566
jackalmage@5911 567 <p>
jackalmage@5911 568 The 'animation-duration' property defines the length of time that an animation takes to complete one cycle.
dino@937 569
jackalmage@5911 570
jackalmage@5911 571 <table class=propdef>
jackalmage@5911 572 <tr>
jackalmage@5911 573 <th>Name:</th>
jackalmage@5911 574 <td><dfn>animation-duration</dfn>
jackalmage@5911 575 <tr>
jackalmage@5911 576 <th><a href="#values">Value</a>:
dbaron@6739 577 <td> <span>&lt;time&gt;</span> [, <span>&lt;time&gt;</span>]*
jackalmage@5911 578 <tr>
jackalmage@5911 579 <th>Initial:
jackalmage@5911 580 <td>''0s''
jackalmage@5911 581 <tr>
jackalmage@5911 582 <th>Applies To:
sylvaing@7230 583 <td>all elements, ::before and ::after pseudo-elements
jackalmage@5911 584 <tr>
jackalmage@5911 585 <th>Inherited:
jackalmage@5911 586 <td>no
jackalmage@5911 587 <tr>
dbaron@6735 588 <th>Animatable:
dbaron@6735 589 <td>no
dbaron@6735 590 <tr>
dbaron@6735 591 <th>Percentages:
dbaron@6735 592 <td>N/A
jackalmage@5911 593 <tr>
jackalmage@5911 594 <th>Media:
jackalmage@5911 595 <td>visual
jackalmage@5911 596 <tr>
dbaron@6735 597 <th>Computed Value:
dbaron@6735 598 <td>as specified
jackalmage@5911 599 <tr>
jackalmage@5911 600 <th>Canonical Order:
jackalmage@5911 601 <td><abbr title="follows order of property value definition">per grammar</abbr>
jackalmage@5911 602 </table>
jackalmage@5911 603
jackalmage@5911 604 <p>
jackalmage@5911 605 The initial value is ''0s'',
sylvaing@6222 606 meaning that the animation takes no time.
sylvaing@6218 607 When the duration is ''0s'' 'animation-fill-mode' still applies,
jackalmage@5911 608 so an animation that fills backwards
jackalmage@5911 609 will show the value of the 0% keyframe during any delay period,
jackalmage@5911 610 and an animation that fills forwards will retain the value specified at the 100% keyframe,
jackalmage@5911 611 even if the animation was instantaneous.
jackalmage@5911 612 Also, animation events are still fired.
sylvaing@6222 613 A negative 'animation-duration' value renders the declaration invalid.
jackalmage@5911 614
jackalmage@5911 615
jackalmage@5911 616 <h3 id="animation-timing-function-property">
jackalmage@5911 617 The 'animation-timing-function' Property</h3>
jackalmage@5911 618
jackalmage@5911 619 <p>
jackalmage@5911 620 The 'animation-timing-function' property describes how the animation will progress over one cycle of its duration.
jackalmage@5911 621 See the 'transition-timing-function' property [[!CSS3-TRANSITIONS]] for a complete description of timing function calculation.
jackalmage@5911 622
jackalmage@5911 623 <table class=propdef>
jackalmage@5911 624 <tr>
jackalmage@5911 625 <th>Name:</th>
jackalmage@5911 626 <td><dfn>animation-timing-function</dfn>
jackalmage@5911 627 <tr>
jackalmage@5911 628 <th><a href="#values">Value</a>:
sylvaing@7138 629 <td><span>&lt;single-timing-function&gt;</span> [ ',' <span>&lt;single-timing-function&gt;</span> ]*
jackalmage@5911 630 <tr>
jackalmage@5911 631 <th>Initial:
jackalmage@5911 632 <td>''ease''
jackalmage@5911 633 <tr>
jackalmage@5911 634 <th>Applies To:
sylvaing@7230 635 <td>all elements, ::before and ::after pseudo-elements
jackalmage@5911 636 <tr>
jackalmage@5911 637 <th>Inherited:
jackalmage@5911 638 <td>no
jackalmage@5911 639 <tr>
dbaron@6735 640 <th>Animatable:
dbaron@6735 641 <td>no
dbaron@6735 642 <tr>
dbaron@6735 643 <th>Percentages:
dbaron@6735 644 <td>N/A
jackalmage@5911 645 <tr>
jackalmage@5911 646 <th>Media:
jackalmage@5911 647 <td>visual
jackalmage@5911 648 <tr>
dbaron@6735 649 <th>Computed Value:
dbaron@6735 650 <td>as specified
jackalmage@5911 651 <tr>
jackalmage@5911 652 <th>Canonical Order:
jackalmage@5911 653 <td><abbr title="follows order of property value definition">per grammar</abbr>
jackalmage@5911 654 </table>
jackalmage@5911 655
sylvaing@7138 656 <p>All the valid values of ''&lt;single-timing-function&gt;'' are defined by the 'transition-timing-function' property [[!CSS3-TRANSITIONS]].</p>
dbaron@6736 657
jackalmage@5911 658 <p>
jackalmage@5911 659 For a keyframed animation,
jackalmage@5911 660 the 'animation-timing-function' applies between keyframes,
jackalmage@5911 661 not over the entire animation.
jackalmage@5911 662 For example,
jackalmage@5911 663 in the case of an ''ease-in-out'' timing function,
jackalmage@5911 664 an animation will ease in at the start of the keyframe
jackalmage@5911 665 and ease out at the end of the keyframe.
jackalmage@5911 666 An 'animation-timing-function' defined within a keyframe block applies to that keyframe,
sylvaing@7547 667 otherwise the timing function specified for the animation is used. In addition, only the
sylvaing@7547 668 first value of the property applies when it is used in a keyframe block.
jackalmage@5911 669
jackalmage@5911 670
jackalmage@5911 671 <h3 id="animation-iteration-count-property">
jackalmage@5911 672 The 'animation-iteration-count' Property</h3>
jackalmage@5911 673
jackalmage@5911 674 <p>
jackalmage@5911 675 The 'animation-iteration-count' property specifies the number of times an animation cycle is played.
jackalmage@5911 676 The initial value is ''1'',
jackalmage@5911 677 meaning the animation will play from beginning to end once.
jackalmage@5911 678 A value of ''infinite'' will cause the animation to repeat forever.
jackalmage@5911 679 Non-integer numbers will cause the animation to end part-way through a cycle.
jackalmage@5911 680 Negative values of 'animation-iteration-count' are invalid.
jackalmage@5911 681 This property is often used in conjunction an 'animation-direction' value of ''alternate'',
jackalmage@5911 682 which will cause the animation to play in reverse on alternate cycles.
jackalmage@5911 683
jackalmage@5911 684 <table class=propdef>
jackalmage@5911 685 <tr>
jackalmage@5911 686 <th>Name:</th>
jackalmage@5911 687 <td><dfn>animation-iteration-count</dfn>
jackalmage@5911 688 <tr>
jackalmage@5911 689 <th><a href="#values">Value</a>:
dbaron@6739 690 <td><span>&lt;single-animation-iteration-count&gt;</span> [ ',' <span>&lt;single-animation-iteration-count&gt;</span> ]*
jackalmage@5911 691 <tr>
jackalmage@5911 692 <th>Initial:
jackalmage@5911 693 <td>''1''
jackalmage@5911 694 <tr>
jackalmage@5911 695 <th>Applies To:
sylvaing@7230 696 <td>all elements, ::before and ::after pseudo-elements
jackalmage@5911 697 <tr>
jackalmage@5911 698 <th>Inherited:
jackalmage@5911 699 <td>no
jackalmage@5911 700 <tr>
dbaron@6735 701 <th>Animatable:
dbaron@6735 702 <td>no
dbaron@6735 703 <tr>
dbaron@6735 704 <th>Percentages:
dbaron@6735 705 <td>N/A
jackalmage@5911 706 <tr>
jackalmage@5911 707 <th>Media:
jackalmage@5911 708 <td>visual
jackalmage@5911 709 <tr>
dbaron@6735 710 <th>Computed Value:
dbaron@6735 711 <td>as specified
jackalmage@5911 712 <tr>
jackalmage@5911 713 <th>Canonical Order:
jackalmage@5911 714 <td><abbr title="follows order of property value definition">per grammar</abbr>
jackalmage@5911 715 </table>
jackalmage@5911 716
dbaron@6736 717 <div class="prod">
dbaron@6739 718 <dfn id="single-animation-iteration-count">&lt;single-animation-iteration-count&gt;</dfn> =
dbaron@6736 719 infinite | &lt;number&gt;
dbaron@6736 720 </div>
jackalmage@5911 721
jackalmage@5911 722 <h3 id="animation-direction-property">
jackalmage@5911 723 The 'animation-direction' Property</h3>
jackalmage@5911 724
jackalmage@5911 725 <p>
jackalmage@5911 726 The 'animation-direction' property defines whether or not the animation should play in reverse on some or all cycles.
jackalmage@5911 727 When an animation is played in reverse the timing functions are also reversed.
jackalmage@5911 728 For example, when played in reverse an ease-in animation would appear to be an ease-out animation.
jackalmage@5911 729
jackalmage@5911 730 <table class=propdef>
jackalmage@5911 731 <tr>
jackalmage@5911 732 <th>Name:</th>
jackalmage@5911 733 <td><dfn>animation-direction</dfn>
jackalmage@5911 734 <tr>
jackalmage@5911 735 <th><a href="#values">Value</a>:
dbaron@6739 736 <td><span>&lt;single-animation-direction&gt;</span> [ ',' <span>&lt;single-animation-direction&gt;</span> ]*
jackalmage@5911 737 <tr>
jackalmage@5911 738 <th>Initial:
jackalmage@5911 739 <td>''normal''
jackalmage@5911 740 <tr>
jackalmage@5911 741 <th>Applies To:
sylvaing@7230 742 <td>all elements, ::before and ::after pseudo-elements
jackalmage@5911 743 <tr>
jackalmage@5911 744 <th>Inherited:
jackalmage@5911 745 <td>no
jackalmage@5911 746 <tr>
dbaron@6735 747 <th>Animatable:
dbaron@6735 748 <td>no
dbaron@6735 749 <tr>
dbaron@6735 750 <th>Percentages:
dbaron@6735 751 <td>N/A
jackalmage@5911 752 <tr>
jackalmage@5911 753 <th>Media:
jackalmage@5911 754 <td>visual
jackalmage@5911 755 <tr>
dbaron@6735 756 <th>Computed Value:
dbaron@6735 757 <td>as specified
jackalmage@5911 758 <tr>
jackalmage@5911 759 <th>Canonical Order:
jackalmage@5911 760 <td><abbr title="follows order of property value definition">per grammar</abbr>
jackalmage@5911 761 </table>
jackalmage@5911 762
dbaron@6736 763 <div class="prod">
dbaron@6739 764 <dfn id="single-animation-direction">&lt;single-animation-direction&gt;</dfn> =
dbaron@6736 765 normal | reverse | alternate | alternate-reverse
dbaron@6736 766 </div>
dbaron@6736 767
jackalmage@5911 768 <dl>
jackalmage@5911 769 <dt><dfn>normal</dfn>
jackalmage@5911 770 <dd>
jackalmage@5911 771 All iterations of the animation are played as specified.
jackalmage@5911 772
jackalmage@5911 773 <dt><dfn>reverse</dfn>
jackalmage@5911 774 <dd>
jackalmage@5911 775 All iterations of the animation are played in the reverse direction from the way they were specified.
jackalmage@5911 776
jackalmage@5911 777 <dt><dfn>alternate</dfn>
jackalmage@5911 778 <dd>
jackalmage@5911 779 The animation cycle iterations that are odd counts are played in the normal direction,
jackalmage@5911 780 and the animation cycle iterations that are even counts are played in a reverse direction.
jackalmage@5911 781
jackalmage@5911 782 <dt><dfn>alternate-reverse</dfn>
jackalmage@5911 783 <dd>
jackalmage@5911 784 The animation cycle iterations that are odd counts are played in the reverse direction,
jackalmage@5911 785 and the animation cycle iterations that are even counts are played in a normal direction.
jackalmage@5911 786 </dl>
jackalmage@5911 787
jackalmage@5911 788 <p class='note'>
jackalmage@5911 789 Note that for the purpose of determining whether an iteration is even or odd,
jackalmage@5911 790 iterations start counting from 1.
jackalmage@5911 791
jackalmage@5911 792
jackalmage@5911 793 <h3 id="animation-play-state-property">
jackalmage@5911 794 The 'animation-play-state' Property</h3>
jackalmage@5911 795
jackalmage@5911 796 <p>
jackalmage@5911 797 The 'animation-play-state' property defines whether the animation is running or paused.
jackalmage@5911 798 A running animation can be paused by setting this property to ''paused''.
jackalmage@5911 799 To continue running a paused animation this property can be set to ''running''.
jackalmage@5911 800 A paused animation will continue to display the current value of the animation in a static state,
jackalmage@5911 801 as if the time of the animation is constant.
jackalmage@5911 802 When a paused animation is resumed,
jackalmage@5911 803 it restarts from the current value,
jackalmage@5911 804 not necessarily from the beginning of the animation.
jackalmage@5911 805
jackalmage@5911 806 <table class=propdef>
jackalmage@5911 807 <tr>
jackalmage@5911 808 <th>Name:</th>
jackalmage@5911 809 <td><dfn>animation-play-state</dfn>
jackalmage@5911 810 <tr>
jackalmage@5911 811 <th><a href="#values">Value</a>:
dbaron@6739 812 <td><span>&lt;single-animation-play-state&gt;</span> [ ',' <span>&lt;single-animation-play-state&gt;</span> ]*
jackalmage@5911 813 <tr>
jackalmage@5911 814 <th>Initial:
jackalmage@5911 815 <td>''running''
jackalmage@5911 816 <tr>
jackalmage@5911 817 <th>Applies To:
sylvaing@7230 818 <td>all elements, ::before and ::after pseudo-elements
jackalmage@5911 819 <tr>
jackalmage@5911 820 <th>Inherited:
jackalmage@5911 821 <td>no
jackalmage@5911 822 <tr>
dbaron@6735 823 <th>Animatable:
dbaron@6735 824 <td>no
dbaron@6735 825 <tr>
dbaron@6735 826 <th>Percentages:
dbaron@6735 827 <td>N/A
jackalmage@5911 828 <tr>
jackalmage@5911 829 <th>Media:
jackalmage@5911 830 <td>visual
jackalmage@5911 831 <tr>
dbaron@6735 832 <th>Computed Value:
dbaron@6735 833 <td>as specified
jackalmage@5911 834 <tr>
jackalmage@5911 835 <th>Canonical Order:
jackalmage@5911 836 <td><abbr title="follows order of property value definition">per grammar</abbr>
jackalmage@5911 837 </table>
jackalmage@5911 838
dbaron@6736 839 <div class="prod">
dbaron@6739 840 <dfn id="single-animation-play-state">&lt;single-animation-play-state&gt;</dfn> =
dbaron@6736 841 running | paused
dbaron@6736 842 </div>
jackalmage@5911 843
jackalmage@5911 844 <h3 id="animation-delay-property">
jackalmage@5911 845 The 'animation-delay' Property</h3>
jackalmage@5911 846
jackalmage@5911 847 <p>
jackalmage@5911 848 The 'animation-delay' property defines when the animation will start.
jackalmage@5911 849 It allows an animation to begin execution some time after it is applied.
jackalmage@5911 850 An 'animation-delay' value of ''0s'' means the animation will execute as soon as it is applied.
jackalmage@5911 851 Otherwise, the value specifies an offset from the moment the animation is applied,
jackalmage@5911 852 and the animation will delay execution by that offset.
jackalmage@5911 853
jackalmage@5911 854 <p>
jackalmage@5911 855 If the value for 'animation-delay' is a negative time offset
jackalmage@5911 856 then the animation will execute the moment it is applied,
jackalmage@5911 857 but will appear to have begun execution at the specified offset.
jackalmage@5911 858 That is, the animation will appear to begin part-way through its play cycle.
jackalmage@5911 859 In the case where an animation has implied starting values and a negative 'animation-delay',
jackalmage@5911 860 the starting values are taken from the moment the animation is applied.
jackalmage@5911 861
jackalmage@5911 862 <table class=propdef>
jackalmage@5911 863 <tr>
jackalmage@5911 864 <th>Name:</th>
sylvaing@6222 865 <td><dfn>animation-delay</dfn>
jackalmage@5911 866 <tr>
sylvaing@6222 867 <th><a href="#values">Value</a>:
dbaron@6739 868 <td> <span>&lt;time&gt;</span> [, <span>&lt;time&gt;</span>]*
jackalmage@5911 869 <tr>
jackalmage@5911 870 <th>Initial:
jackalmage@5911 871 <td>''0s''
jackalmage@5911 872 <tr>
jackalmage@5911 873 <th>Applies To:
sylvaing@7230 874 <td>all elements, ::before and ::after pseudo-elements
jackalmage@5911 875 <tr>
jackalmage@5911 876 <th>Inherited:
jackalmage@5911 877 <td>no
jackalmage@5911 878 <tr>
dbaron@6735 879 <th>Animatable:
dbaron@6735 880 <td>no
dbaron@6735 881 <tr>
dbaron@6735 882 <th>Percentages:
dbaron@6735 883 <td>N/A
jackalmage@5911 884 <tr>
jackalmage@5911 885 <th>Media:
jackalmage@5911 886 <td>visual
jackalmage@5911 887 <tr>
dbaron@6735 888 <th>Computed Value:
dbaron@6735 889 <td>as specified
jackalmage@5911 890 <tr>
jackalmage@5911 891 <th>Canonical Order:
jackalmage@5911 892 <td><abbr title="follows order of property value definition">per grammar</abbr>
jackalmage@5911 893 </table>
jackalmage@5911 894
jackalmage@5911 895
jackalmage@5911 896 <h3 id="animation-fill-mode-property">
jackalmage@5911 897 The 'animation-fill-mode' Property</h3>
jackalmage@5911 898
jackalmage@5911 899 <p>
jackalmage@5911 900 The 'animation-fill-mode' property defines what values are applied by the animation outside the time it is executing.
jackalmage@5911 901 By default, an animation will not affect property values
jackalmage@5911 902 between the time it is applied
jackalmage@5911 903 (the 'animation-name' property is set on an element)
jackalmage@5911 904 and the time it begins execution
jackalmage@5911 905 (which is determined by the 'animation-delay' property).
jackalmage@5911 906 Also, by default an animation does not affect property values after the animation ends
jackalmage@5911 907 (determined by the 'animation-duration' property).
jackalmage@5911 908 The 'animation-fill-mode' property can override this behavior.
jackalmage@5911 909
jackalmage@5911 910 <p>
jackalmage@5911 911 If the value for 'animation-fill-mode' is ''backwards'',
dbaron@6083 912 then the animation will apply
dbaron@6083 913 the property values defined in the keyframe
dbaron@6083 914 that will start the first iteration of the animation,
jackalmage@5911 915 during the period defined by 'animation-delay'.
dbaron@6083 916 These are either the values of the ''from'' keyframe
dbaron@6083 917 (when 'animation-direction' is ''normal'' or ''alternate'')
dbaron@6083 918 or those of the ''to'' keyframe
dbaron@6083 919 (when 'animation-direction' is ''reverse'' or ''alternate-reverse'').
jackalmage@5911 920
jackalmage@5911 921 <p>
jackalmage@5911 922 If the value for 'animation-fill-mode' is ''forwards'',
dbaron@6083 923 then after the animation ends
dbaron@6083 924 (as determined by its 'animation-iteration-count'),
dbaron@6083 925 the animation will apply
dbaron@6083 926 the property values for the time the animation ended.
dbaron@6083 927 When 'animation-iteration-count' is an integer greater than zero,
dbaron@6083 928 the values applied will be
dbaron@6083 929 those for the end of the last completed iteration of the animation
dbaron@6083 930 (rather than the values for
dbaron@6083 931 the start of the iteration that would be next).
dbaron@6083 932 When 'animation-iteration-count' is zero,
dbaron@6083 933 the values applied will be those that would start the first iteration
dbaron@6083 934 (just as when 'animation-fill-mode' is ''backwards'').
jackalmage@5911 935
jackalmage@5911 936 <p>
jackalmage@5911 937 If the value for 'animation-fill-mode' is ''both'',
jackalmage@5911 938 then the animation will follow the rules for both 'forwards' and 'backwards'.
jackalmage@5911 939 That is, it will extend the animation properties in both directions.
jackalmage@5911 940
jackalmage@5911 941 <table class=propdef>
jackalmage@5911 942 <tr>
jackalmage@5911 943 <th>Name:</th>
jackalmage@5911 944 <td><dfn>animation-fill-mode</dfn>
jackalmage@5911 945 <tr>
jackalmage@5911 946 <th><a href="#values">Value</a>:
dbaron@6739 947 <td><span>&lt;single-animation-fill-mode&gt;</span> [ ',' <span>&lt;single-animation-fill-mode&gt;</span> ]*
jackalmage@5911 948 <tr>
jackalmage@5911 949 <th>Initial:
jackalmage@5911 950 <td>''none''
jackalmage@5911 951 <tr>
jackalmage@5911 952 <th>Applies To:
sylvaing@7230 953 <td>all elements, ::before and ::after pseudo-elements
jackalmage@5911 954 <tr>
jackalmage@5911 955 <th>Inherited:
jackalmage@5911 956 <td>no
jackalmage@5911 957 <tr>
dbaron@6735 958 <th>Animatable:
dbaron@6735 959 <td>no
dbaron@6735 960 <tr>
dbaron@6735 961 <th>Percentages:
dbaron@6735 962 <td>N/A
jackalmage@5911 963 <tr>
jackalmage@5911 964 <th>Media:
jackalmage@5911 965 <td>visual
jackalmage@5911 966 <tr>
dbaron@6735 967 <th>Computed Value:
dbaron@6735 968 <td>as specified
jackalmage@5911 969 <tr>
jackalmage@5911 970 <th>Canonical Order:
jackalmage@5911 971 <td><abbr title="follows order of property value definition">per grammar</abbr>
jackalmage@5911 972 </table>
jackalmage@5911 973
dbaron@6736 974 <div class="prod">
dbaron@6739 975 <dfn id="single-animation-fill-mode">&lt;single-animation-fill-mode&gt;</dfn> =
dbaron@6736 976 none | forwards | backwards | both
dbaron@6736 977 </div>
jackalmage@5911 978
jackalmage@5911 979 <h3 id="animation-shorthand-property">
sylvaing@7452 980 The 'animation' Shorthand Property</h3>
jackalmage@5911 981
jackalmage@5911 982 <p>
sylvaing@6815 983 The 'animation' shorthand property is a comma-separated list of
sylvaing@6815 984 animation definitions, each of which combines seven of the animation properties
sylvaing@6815 985 into a single component value.
jackalmage@5911 986
jackalmage@5911 987 <table class=propdef>
jackalmage@5911 988 <tr>
jackalmage@5911 989 <th>Name:</th>
jackalmage@5911 990 <td><dfn>animation</dfn>
jackalmage@5911 991 <tr>
jackalmage@5911 992 <th><a href="#values">Value</a>:
dbaron@6739 993 <td><span>&lt;single-animation&gt;</span> [ ',' <span>&lt;single-animation&gt;</span> ]*
jackalmage@5911 994 <tr>
jackalmage@5911 995 <th>Initial:
jackalmage@5911 996 <td>see individual properties
jackalmage@5911 997 <tr>
jackalmage@5911 998 <th>Applies To:
sylvaing@7230 999 <td>all elements, ::before and ::after pseudo-elements
jackalmage@5911 1000 <tr>
jackalmage@5911 1001 <th>Inherited:
jackalmage@5911 1002 <td>see individual properties
jackalmage@5911 1003 <tr>
dbaron@6735 1004 <th>Animatable:
dbaron@6735 1005 <td>no
dbaron@6735 1006 <tr>
dbaron@6735 1007 <th>Percentages:
dbaron@6735 1008 <td>N/A
jackalmage@5911 1009 <tr>
jackalmage@5911 1010 <th>Media:
jackalmage@5911 1011 <td>visual
jackalmage@5911 1012 <tr>
dbaron@6735 1013 <th>Computed Value:
dbaron@6735 1014 <td>see individual properties
jackalmage@5911 1015 <tr>
jackalmage@5911 1016 <th>Canonical Order:
jackalmage@5911 1017 <td><abbr title="follows order of property value definition">per grammar</abbr>
jackalmage@5911 1018 </table>
jackalmage@5911 1019
dbaron@6736 1020 <div class="prod">
dbaron@6739 1021 <dfn id="single-animation">&lt;single-animation&gt;</dfn> =
dbaron@6736 1022 &lt;single-animation-name&gt; ||
dbaron@6739 1023 <span>&lt;time&gt;</span> ||
dbaron@6736 1024 &lt;single-animation-timing-function&gt; ||
dbaron@6739 1025 <span>&lt;time&gt;</span> ||
dbaron@6736 1026 &lt;single-animation-iteration-count&gt; ||
dbaron@6736 1027 &lt;single-animation-direction&gt; ||
sylvaing@7177 1028 &lt;single-animation-fill-mode&gt; ||
sylvaing@7177 1029 &lt;single-animation-play-state&gt;
dbaron@6736 1030 </div>
dbaron@6736 1031
dbaron@6736 1032 <p>
sylvaing@6815 1033 Note that order is important within each animation definition:
dbaron@6736 1034 the first value that can be parsed as a <var>&lt;time&gt;</var> is assigned to the
dbaron@6737 1035 animation-duration,
dbaron@6736 1036 and the second value that can be parsed as a <var>&lt;time&gt;</var> is assigned to
dbaron@6737 1037 animation-delay.
dbaron@6736 1038 </p>
dbaron@6736 1039
dbaron@6736 1040 <p class="issue">
dbaron@6736 1041 An alternative proposal is to accept the font shorthand approach
dbaron@6736 1042 of using a "/" character between the values of the same type.
dbaron@6736 1043 e.g. 2s/4s would mean a duration of 2 seconds and a delay of 4 seconds.
dbaron@6736 1044
dbaron@6736 1045 <p class="issue">
dbaron@6736 1046 Need to also explain how order is important in terms of animation-name
dbaron@6736 1047 versus keywords, and probably also adjust the canonical order to
dbaron@6736 1048 match.
jackalmage@5911 1049
jackalmage@5911 1050 <h2 id="animation-events">
jackalmage@5911 1051 Animation Events</h2>
jackalmage@5911 1052
jackalmage@5911 1053 <p>
jackalmage@5911 1054 Several animation related events are available through the <a href="http://www.w3.org/TR/DOM-Level-2-Events/events.html">DOM Event system</a>.
jackalmage@5911 1055 The start and end of an animation,
jackalmage@5911 1056 and the end of each iteration of an animation,
jackalmage@5911 1057 all generate DOM events.
jackalmage@5911 1058 An element can have multiple properties being animated simultaneously.
jackalmage@5911 1059 This can occur either with a single 'animation-name' value
jackalmage@5911 1060 with keyframes containing multiple properties,
jackalmage@5911 1061 or with multiple 'animation-name' values.
jackalmage@5911 1062 For the purposes of events,
jackalmage@5911 1063 each 'animation-name' specifies a single animation.
jackalmage@5911 1064 Therefore an event will be generated for each 'animation-name' value
jackalmage@5911 1065 and not necessarily for each property being animated.
sylvaing@7176 1066
sylvaing@7176 1067 <p>
sylvaing@7176 1068 Any animation for which both a valid keyframe rule and a non-zero duration are
sylvaing@7176 1069 defined will run and generate events; this includes animations with empty
sylvaing@7176 1070 keyframe rules.
jackalmage@5911 1071
jackalmage@5911 1072 <p>
jackalmage@5911 1073 The time the animation has been running is sent with each event generated.
jackalmage@5911 1074 This allows the event handler to determine the current iteration of a looping animation
jackalmage@5911 1075 or the current position of an alternating animation.
jackalmage@5911 1076 This time does not include any time the animation was in the ''paused'' play state.
jackalmage@5911 1077
jackalmage@5911 1078
jackalmage@5911 1079 <h3 id='AnimationEvent-interface'>
sylvaing@7452 1080 Interface <code>AnimationEvent</code></h3>
jackalmage@5911 1081
jackalmage@5911 1082 <p>
jackalmage@5911 1083 The <dfn>AnimationEvent</dfn> interface provides specific contextual information associated with Animation events.
jackalmage@5911 1084
jackalmage@5911 1085
jackalmage@5911 1086 <h4 id='AnimationEvent-IDL'>
jackalmage@5911 1087 IDL Definition</h4>
jackalmage@5911 1088
jackalmage@5911 1089 <pre class='idl'>
dbaron@7423 1090 [Constructor(DOMString <var title="">type</var>, optional <i>AnimationEventInit</i> <var title="">animationEventInitDict</var>)]
sylvaing@6807 1091 interface AnimationEvent : <a class="external" href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#event">Event</a> {
sylvaing@6807 1092 readonly attribute DOMString <a href="#AnimationEvent-animationName" title="AnimationEvent-lengthComputable">animationName</a>;
sylvaing@6807 1093 readonly attribute float <a href="#AnimationEvent-elapsedTime" title="dom-ProgressEvent-loaded">elapsedTime</a>;
sylvaing@7223 1094 readonly attribute DOMString <a href="#AnimationEvent-pseudoElement" title="AnimationEvent-pseudoElement">pseudoElement</a>;
sylvaing@6807 1095 };
sylvaing@6807 1096
dbaron@7423 1097 dictionary <dfn id="AnimationEventInit">AnimationEventInit</dfn> : <a class="external" href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#eventinit">EventInit</a> {
sylvaing@6807 1098 DOMString <span title="AnimationEventInit-animationName">animationName</span>;
sylvaing@6807 1099 float <span title="AnimationEventInit-loaded">elapsedTime</span>;
sylvaing@7223 1100 DOMString <span title="AnimationEventInit-pseudoElement">pseudoElement</span>;
sylvaing@6807 1101 }
sylvaing@6807 1102
sylvaing@6807 1103 </pre>
jackalmage@5911 1104
jackalmage@5911 1105
jackalmage@5911 1106 <h4 id='AnimationEvent-attributes'>
jackalmage@5911 1107 Attributes</h4>
jackalmage@5911 1108
jackalmage@5911 1109 <dl>
jackalmage@5911 1110 <dt><code><dfn id='AnimationEvent-animationName'>animationName</dfn></code> of type <code>DOMString</code>, readonly
jackalmage@5911 1111 <dd>
jackalmage@5911 1112 The value of the 'animation-name' property of the animation that fired the event.
jackalmage@5911 1113
jackalmage@5911 1114 <dt><code><dfn id='AnimationEvent-elapsedTime'>elapsedTime</dfn></code> of type <code>float</code>, readonly
jackalmage@5911 1115 <dd>
jackalmage@5911 1116 The amount of time the animation has been running,
jackalmage@5911 1117 in seconds,
jackalmage@5911 1118 when this event fired,
jackalmage@5911 1119 excluding any time the animation was paused.
jackalmage@5911 1120 For an "animationstart" event,
jackalmage@5911 1121 the elapsedTime is zero unless there was a negative value for 'animation-delay',
jackalmage@5911 1122 in which case the event will be fired with an <code>elapsedTime</code> of (-1 * delay).
sylvaing@7223 1123
sylvaing@7223 1124 <dt><code><dfn id='AnimationEvent-pseudoElement'>pseudoElement</dfn></code> of type <code>DOMString</code>, readonly
sylvaing@7223 1125 <dd>
sylvaing@7223 1126 The name (beginning with two colons) of the CSS pseudo-element on
sylvaing@7223 1127 which the animation runs (in which case the target of the event
sylvaing@7223 1128 is that pseudo-element's corresponding element), or the empty string
sylvaing@7223 1129 if the animation runs on an element (which means the target of the event
sylvaing@7223 1130 is that element).
jackalmage@5911 1131 </dl>
jackalmage@5911 1132
sylvaing@6807 1133 <p>
dbaron@7423 1134 <code id="AnimationEvent-constructor">AnimationEvent(type, animationEventInitDict)</code>
sylvaing@6807 1135 is an <a class="external" href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-event-constructor">event constructor</a>.
jackalmage@5911 1136
jackalmage@5911 1137 <h3 id='AnimationEvent-types'>
jackalmage@5911 1138 Types of <code>AnimationEvent</code></h3>
jackalmage@5911 1139
jackalmage@5911 1140 <p>
jackalmage@5911 1141 The different types of Animation events that can occur are:
jackalmage@5911 1142
jackalmage@5911 1143 <dl>
jackalmage@5911 1144 <dt><dfn>animationstart</dfn>
jackalmage@5911 1145 <dd>
jackalmage@5911 1146 The <code>animationstart</code> event occurs at the start of the animation.
jackalmage@5911 1147 If there is an 'animation-delay'
jackalmage@5911 1148 then this event will fire once the delay period has expired.
jackalmage@5911 1149 A negative delay will cause the event to fire with an <code>elapsedTime</code> equal to the absolute value of the delay.
jackalmage@5911 1150
jackalmage@5911 1151 <ul>
jackalmage@5911 1152 <li>Bubbles: Yes
jackalmage@5911 1153 <li>Cancelable: No
dbaron@7407 1154 <li>Context Info: animationName, pseudoElement
jackalmage@5911 1155 </ul>
jackalmage@5911 1156
jackalmage@5911 1157 <dt><dfn>animationend</dfn>
jackalmage@5911 1158 <dd>
jackalmage@5911 1159 The <code>animationend</code> event occurs when the animation finishes.
jackalmage@5911 1160
jackalmage@5911 1161 <ul>
jackalmage@5911 1162 <li>Bubbles: Yes
jackalmage@5911 1163 <li>Cancelable: No
dbaron@7407 1164 <li>Context Info: animationName, elapsedTime, pseudoElement
jackalmage@5911 1165 </ul>
jackalmage@5911 1166
jackalmage@5911 1167 <dt><dfn>animationiteration</dfn>
jackalmage@5911 1168 <dd>
jackalmage@5911 1169 The <code>animationiteration</code> event occurs at the end of each iteration of an animation,
jackalmage@5911 1170 except when an <code>animationend</code> event would fire at the same time.
jackalmage@5911 1171 This means that this event does not occur for animations with an iteration count of one or less.
jackalmage@5911 1172
jackalmage@5911 1173 <ul>
jackalmage@5911 1174 <li>Bubbles: Yes
jackalmage@5911 1175 <li>Cancelable: No
dbaron@7407 1176 <li>Context Info: animationName, elapsedTime, pseudoElement
jackalmage@5911 1177 </ul>
jackalmage@5911 1178 </dl>
jackalmage@5911 1179
jackalmage@5911 1180
jackalmage@5911 1181 <h2 id="dom-interfaces">
jackalmage@5911 1182 DOM Interfaces</h2>
jackalmage@5911 1183
jackalmage@5911 1184 <p>
jackalmage@5911 1185 CSS animation is exposed to the CSSOM through a pair of new interfaces describing the keyframes.
jackalmage@5911 1186
jackalmage@5911 1187
jackalmage@5911 1188 <h3 id='CSSRule-interface'>
jackalmage@5911 1189 Interface <code>CSSRule</code></h3>
jackalmage@5911 1190
jackalmage@5911 1191 <p>
jackalmage@5911 1192 The following 2 rule types are added to the <dfn>CSSRule</dfn> interface.
jackalmage@5911 1193 They provide identification for the new keyframe and keyframes rules.
jackalmage@5911 1194
jackalmage@5911 1195
jackalmage@5911 1196 <h4 id='CSSRule-IDL'>
jackalmage@5911 1197 IDL Definition</h4>
jackalmage@5911 1198
jackalmage@5911 1199 <pre class='idl'>
jackalmage@5911 1200 interface CSSRule {
dbaron@6082 1201 ...
dbaron@6082 1202 const unsigned short KEYFRAMES_RULE = 7;
dbaron@6082 1203 const unsigned short KEYFRAME_RULE = 8;
dbaron@6082 1204 ...
jackalmage@5911 1205 };</pre>
jackalmage@5911 1206
jackalmage@5911 1207
jackalmage@5911 1208 <h3 id='CSSKeyframeRule-interface'>
sylvaing@7452 1209 Interface <code>CSSKeyframeRule</code></h3>
jackalmage@5911 1210 <p>
jackalmage@5911 1211 The <dfn>CSSKeyframeRule</dfn> interface represents the style rule for a single key.
jackalmage@5911 1212
jackalmage@5911 1213
jackalmage@5911 1214 <h4 id='CSSKeyframeRule-IDL'>
jackalmage@5911 1215 IDL Definition</h4>
jackalmage@5911 1216
jackalmage@5911 1217 <pre class='idl'>
jackalmage@5911 1218 interface CSSKeyframeRule : CSSRule {
dbaron@6082 1219 attribute DOMString keyText;
dbaron@6082 1220 readonly attribute CSSStyleDeclaration style;
jackalmage@5911 1221 };</pre>
jackalmage@5911 1222
jackalmage@5911 1223
jackalmage@5911 1224 <h4 id='CSSKeyframeRule-attributes'>
jackalmage@5911 1225 Attributes</h4>
jackalmage@5911 1226
jackalmage@5911 1227 <dl>
jackalmage@5911 1228 <dt><code><dfn id='CSSKeyframeRule-keyText'>keyText</dfn></code> of type <code>DOMString</code>
jackalmage@5911 1229 <dd>
sylvaing@6814 1230 This attribute represents the keyframe selector as a comma-separated
sylvaing@6814 1231 list of percentage values. The ''from'' and ''to'' keywords map to
sylvaing@6814 1232 ''0%'' and ''100%'', respectively.
jackalmage@5911 1233
jackalmage@5911 1234 <dt><code><dfn id='CSSKeyframeRule-style'>style</dfn></code> of type <code>CSSStyleDeclaration</code>
jackalmage@5911 1235 <dd>
jackalmage@5911 1236 This attribute represents the style associated with this keyframe.
jackalmage@5911 1237 </dl>
jackalmage@5911 1238
jackalmage@5911 1239
jackalmage@5911 1240 <h3 id='CSSKeyframesRule-interface'>
jackalmage@5911 1241 Interface <code>CSSKeyframesRule</code></h3>
jackalmage@5911 1242
jackalmage@5911 1243 <p>
jackalmage@5911 1244 The <dfn>CSSKeyframesRule</dfn> interface represents a complete set of keyframes for a single animation.
jackalmage@5911 1245
jackalmage@5911 1246
jackalmage@5911 1247 <h4 id='CSSKeyframesRule-IDL'>
jackalmage@5911 1248 IDL Definition</h4>
jackalmage@5911 1249
jackalmage@5911 1250 <pre class='idl'>
jackalmage@5911 1251 interface CSSKeyframesRule : CSSRule {
dbaron@6082 1252 attribute DOMString name;
dbaron@6082 1253 readonly attribute CSSRuleList cssRules;
jackalmage@5911 1254
dbaron@6082 1255 void appendRule(in DOMString rule);
dbaron@6082 1256 void deleteRule(in DOMString key);
dbaron@6082 1257 CSSKeyframeRule findRule(in DOMString key);
jackalmage@5911 1258 };</pre>
jackalmage@5911 1259
jackalmage@5911 1260
jackalmage@5911 1261 <h4 id='CSSKeyframesRule-attributes'>
jackalmage@5911 1262 Attributes</h4>
jackalmage@5911 1263
jackalmage@5911 1264 <dl>
jackalmage@5911 1265 <dt><code><dfn id='CSSKeyframesRule-name'>name</dfn></code> of type <code>DOMString</code>
jackalmage@5911 1266 <dd>
jackalmage@5911 1267 This attribute is the name of the keyframes, used by the 'animation-name' property.<br>
jackalmage@5911 1268
jackalmage@5911 1269 <dt><code><dfn id='CSSKeyframesRules-cssRules'>cssRules</dfn></code> of type <code>CSSRuleList</code>
jackalmage@5911 1270 <dd>
jackalmage@5911 1271 This attribute gives access to the keyframes in the list.
sylvaing@7452 1272 </dl>
jackalmage@5911 1273
jackalmage@5911 1274
jackalmage@5911 1275 <h4 id='CSSKeyframesRule-appendRule'>
jackalmage@5911 1276 The <code>appendRule</code> method</h4>
jackalmage@5911 1277
jackalmage@5911 1278 <p>
jackalmage@5911 1279 The <dfn>appendRule</dfn> method appends the passed CSSKeyframeRule into the list at the passed key.
jackalmage@5911 1280
jackalmage@5911 1281 <p>
jackalmage@5911 1282 Parameters:
jackalmage@5911 1283
jackalmage@5911 1284 <dl>
jackalmage@5911 1285 <dt><code>rule</code> of type <code>DOMString</code>
jackalmage@5911 1286
jackalmage@5911 1287 <dd>
jackalmage@5911 1288 The rule to be appended,
jackalmage@5911 1289 expressed in the same syntax as one entry in the ''@keyframes'' rule.
jackalmage@5911 1290 </dl>
jackalmage@5911 1291
jackalmage@5911 1292 <p>
jackalmage@5911 1293 No Return Value
jackalmage@5911 1294
jackalmage@5911 1295 <p>
jackalmage@5911 1296 No Exceptions
jackalmage@5911 1297
jackalmage@5911 1298
jackalmage@5911 1299 <h4 id='CSSKeyframesRules-deleteRule'>
jackalmage@5911 1300 The <code>deleteRule</code> method</h4>
jackalmage@5911 1301
jackalmage@5911 1302 <p>
jackalmage@5911 1303 The <dfn>deleteRule</dfn> method deletes the CSSKeyframeRule with the passed key.
jackalmage@5911 1304 If a rule with this key does not exist,
jackalmage@5911 1305 the method does nothing.
jackalmage@5911 1306
jackalmage@5911 1307 <p>
jackalmage@5911 1308 Parameters:
jackalmage@5911 1309
jackalmage@5911 1310 <dl>
jackalmage@5911 1311 <dt><code>key</code> of type <code>DOMString</code>
jackalmage@5911 1312 <dd>
jackalmage@5911 1313 The key which describes the rule to be deleted.
jackalmage@5911 1314 The key must resolve to a number between 0 and 1,
jackalmage@5911 1315 or the rule is ignored.
jackalmage@5911 1316 </dl>
jackalmage@5911 1317
jackalmage@5911 1318 <p>
jackalmage@5911 1319 No Return Value
jackalmage@5911 1320
jackalmage@5911 1321 <p>
jackalmage@5911 1322 No Exceptions
jackalmage@5911 1323
jackalmage@5911 1324
jackalmage@5911 1325 <h4 id='CSSKeyframesRule-findRule'>
jackalmage@5911 1326 The <code>findRule</code> method</h4>
jackalmage@5911 1327
jackalmage@5911 1328 <p>
jackalmage@5911 1329 The <code>findRule</code> method returns the rule with a key matching the passed key.
jackalmage@5911 1330 If no such rule exists,
jackalmage@5911 1331 a null value is returned.
jackalmage@5911 1332
jackalmage@5911 1333 <p>
jackalmage@5911 1334 Parameters:
jackalmage@5911 1335
jackalmage@5911 1336 <dl>
jackalmage@5911 1337 <dt><code>key</code> of type <code>DOMString</code>
jackalmage@5911 1338 <dd>
jackalmage@5911 1339 The key which described the rule to find.
jackalmage@5911 1340 The key must resolve to a number between 0 and 1,
jackalmage@5911 1341 or the rule is ignored.
jackalmage@5911 1342 </dl>
jackalmage@5911 1343
jackalmage@5911 1344 <p>
jackalmage@5911 1345 Return Value:
jackalmage@5911 1346
jackalmage@5911 1347 <dl>
jackalmage@5911 1348 <dt><code>CSSKeyframeRule</code>
jackalmage@5911 1349 <dd>
jackalmage@5911 1350 The found rule.
jackalmage@5911 1351 </dl>
jackalmage@5911 1352
jackalmage@5911 1353 <p>
jackalmage@5911 1354 No Exceptions
jackalmage@5911 1355
dino@937 1356
dbaron@5304 1357 <h2 id="acknowledgments">Acknowledgments</h2>
dbaron@5304 1358
dbaron@5304 1359 <p>Thanks especially to the feedback from
dbaron@5312 1360 Tab Atkins,
dbaron@6736 1361 Carine Bournez,
dbaron@5312 1362 Estelle Weyl,
dbaron@5304 1363 and all the rest of the
jackalmage@5911 1364 <a href="http://lists.w3.org/Archives/Public/www-style/">www-style</a> community.
dbaron@5304 1365
dino@937 1366 <h2>References</h2>
dino@937 1367
dino@937 1368 <h3 class="no-num">Normative references</h3>
dino@937 1369 <!--normative-->
dino@937 1370
dino@937 1371 <h3 class="no-num">Other references</h3>
dino@937 1372 <!--informative-->
dino@937 1373
dino@937 1374
dino@937 1375
dino@937 1376 <h2 class="no-num">Property index</h2>
dino@937 1377 <!-- properties -->
dino@937 1378
dino@937 1379
dino@937 1380
dino@937 1381 <h2 class="no-num" id="index">Index</h2>
dino@937 1382 <!--index-->
dino@937 1383
dino@937 1384 </body>
dino@937 1385 </html>
dino@937 1386 <!-- Keep this comment at the end of the file
dino@937 1387 Local variables:
dino@937 1388 mode: sgml
jackalmage@5911 1389 sgml-declaration:"~/SGML/HTML4.decl"
dino@937 1390 sgml-default-doctype-name:"html"
dino@937 1391 sgml-minimize-attributes:t
jackalmage@5911 1392 sgml-nofill-elements:("pre" "style" "br")
jackalmage@5911 1393 sgml-live-element-indicator:t
jackalmage@5911 1394 sgml-omittag:nil
jackalmage@5911 1395 sgml-shorttag:nil
jackalmage@5911 1396 sgml-namecase-general:t
jackalmage@5911 1397 sgml-general-insert-case:lower
jackalmage@5911 1398 sgml-always-quote-attributes:t
jackalmage@5911 1399 sgml-indent-step:nil
jackalmage@5911 1400 sgml-indent-data:t
jackalmage@5911 1401 sgml-parent-document:nil
jackalmage@5911 1402 sgml-exposed-tags:nil
jackalmage@5911 1403 sgml-local-catalogs:nil
jackalmage@5911 1404 sgml-local-ecat-files:nil
dino@937 1405 End:
dbaron@6082 1406 -->

mercurial