| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title>CSS Variables - Animation - Overriding Transition</title> | |
| <meta rel="author" title="Kevin Babbitt"> | |
| <meta rel="author" title="Greg Whitworth"> | |
| <link rel="author" title="Microsoft Corporation" href="http://microsoft.com" /> | |
| <link rel="help" href="http://www.w3.org/TR/css-variables-1/#syntax"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <style> | |
| @keyframes valueanim | |
| { | |
| from { --value: blue; } | |
| to { --value: green; } | |
| } | |
| /* Start the animation in the paused state and fill at both ends so we can inspect values from both keyframes. */ | |
| #target | |
| { | |
| animation-name: valueanim; | |
| animation-duration: 1s; | |
| animation-play-state: paused; | |
| animation-fill-mode: both; | |
| transition-property: --value; | |
| transition-duration: 1s; | |
| --value: red; | |
| color: var(--value); | |
| } | |
| #target.changed | |
| { | |
| --value: black; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div id="target">This text should animate from blue to green over a period of 1 second. The transition is not visible because the animation overrides it.</div> | |
| <script type="text/javascript"> | |
| "use strict"; | |
| // Force an initial layout pass | |
| document.documentElement.offsetHeight; | |
| test(function() { | |
| assert_equals(window.getComputedStyle(document.getElementById("target")).getPropertyValue("--value").trim(), "blue", "--value is blue before animation runs"); | |
| }, "Verify CSS variable value before animation"); | |
| test(function() { | |
| assert_equals(window.getComputedStyle(document.getElementById("target")).getPropertyValue("color").trim(), "rgb(0, 0, 255)", "color is blue before animation runs"); | |
| }, "Verify substituted color value before animation"); | |
| var afterAnimationVariableTest = async_test("Verify CSS variable value after animation"); | |
| document.getElementById("target").addEventListener("animationend", afterAnimationVariableTest.step_func_done(function() { | |
| assert_equals(window.getComputedStyle(document.getElementById("target")).getPropertyValue("--value").trim(), "green", "--value is green after animation runs") | |
| })); | |
| var afterAnimationColorTest = async_test("Verify substituted color value after animation"); | |
| document.getElementById("target").addEventListener("animationend", afterAnimationColorTest.step_func_done(function() { | |
| assert_equals(window.getComputedStyle(document.getElementById("target")).getPropertyValue("color").trim(), "rgb(0, 128, 0)", "color is green after animation runs") | |
| })); | |
| // Trigger animation and transition | |
| document.getElementById("target").style.animationPlayState = "running"; | |
| document.getElementById("target").className = "changed"; | |
| </script> | |
| </body> | |
| </html> |