| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <title>Transition/Animation Test #3</title> |
| <style> |
| #box { |
| position: absolute; |
| height: 100px; |
| width: 100px; |
| left: 0px; |
| background-color: blue; |
| } |
| #box.animating { |
| animation: move 0.1s linear; |
| left: 100px; |
| transition: left 10s linear; |
| } |
| #box.animating.moved { |
| left: 200px; |
| } |
| @keyframes move { |
| from { left: 500px; } |
| to { left: 501px; } |
| } |
| </style> |
| </head> |
| <body> |
| <div id="box"></div> |
| <script> |
| 'use strict'; |
| async_test(t => { |
| |
| t.step(() => { |
| box.offsetTop; // force style recalc |
| |
| // Start animation |
| box.classList.add('animating'); |
| // No transition - we jump to the animation's initial frame. |
| assert_equals(getComputedStyle(box).left, '500px'); |
| |
| // This would trigger a transition if no animation was in progress. |
| box.classList.add('moved'); |
| |
| // We remain at the animation's initial frame. |
| assert_equals(getComputedStyle(box).left, '500px'); |
| }); |
| |
| box.addEventListener('animationend', t.step_func_done(() => { |
| // No transition - the inline style takes immediate effect. |
| assert_equals(getComputedStyle(box).left, '200px'); |
| })); |
| }, 'Inline style applies when animation completes'); |
| </script> |
| </body> |
| </html> |