| <!DOCTYPE html> | |
| <html> | |
| <title>Missing properties in first keyframe</title> | |
| <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1"> | |
| <link rel="help" href="https://www.w3.org/TR/web-animations-1/#the-effect-value-of-a-keyframe-animation-effect"> | |
| <meta name="assert" | |
| content="CSS animation correctly interpolates from neutral keyframe"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/web-animations/testcommon.js"></script> | |
| <style type="text/css" media="screen"> | |
| body { | |
| margin: 0; | |
| } | |
| .box { | |
| position: relative; | |
| width: 100px; | |
| height: 100px; | |
| left: 0; | |
| background-color: green; | |
| } | |
| #box1 { | |
| left: 200px; | |
| animation: move-left 2s paused linear; | |
| } | |
| #box2 { | |
| transform: translateX(200px); | |
| animation: move-transform 2s paused linear; | |
| } | |
| @keyframes move-left { | |
| 0% { | |
| opacity: 1; | |
| } | |
| 25% { | |
| opacity: 1; | |
| } | |
| 50% { | |
| left: 0; | |
| opacity: 1; | |
| } | |
| 100% { | |
| left: 0; | |
| opacity: 0; | |
| } | |
| } | |
| @keyframes move-transform { | |
| 0% { | |
| opacity: 1; | |
| } | |
| 25% { | |
| opacity: 1; | |
| } | |
| 50% { | |
| transform: translateX(0); | |
| opacity: 1; | |
| } | |
| 100% { | |
| transform: translateX(0); | |
| opacity: 0; | |
| } | |
| } | |
| </style> | |
| <body> | |
| <div class="box" id="box1"></div> | |
| <div class="box" id="box2"></div> | |
| </body> | |
| <script> | |
| promise_test(async t => { | |
| document.getAnimations().forEach(anim => { | |
| anim.currentTime = 500; | |
| }); | |
| assert_equals(getComputedStyle(box1).left, "100px"); | |
| assert_matrix_equals( | |
| getComputedStyle(box2).transform, | |
| 'matrix(1, 0, 0, 1, 100, 0)'); | |
| }, 'Missing property values in the first keyframe are correctly ' + | |
| 'interpolated from a neutral keyframe value'); | |
| </script> | |
| </html> |