| <body> |
| <style> |
| |
| body { |
| background-color: green; |
| } |
| |
| div { |
| position: absolute; |
| top: 0; |
| height: 100px; |
| animation-duration: 1s; |
| } |
| |
| #implicit { |
| left: 0; |
| width: 100px; |
| background-color: red; |
| animation-name: implicit; |
| } |
| |
| /* Allow for a 1px error on either side */ |
| #explicit { |
| left: -1px; |
| width: 102px; |
| background-color: green; |
| animation-name: explicit; |
| animation-timing-function: ease; |
| } |
| |
| @keyframes implicit { |
| 0.001% { transform: translate(400px) } |
| } |
| |
| @keyframes explicit { |
| 0.001% { |
| transform: translate(400px); |
| animation-timing-function: ease; |
| } |
| } |
| |
| </style> |
| <div id="implicit"></div> |
| <div id="explicit"></div> |
| <script> |
| |
| (async function() { |
| if (window.testRunner) |
| testRunner.waitUntilDone(); |
| |
| await Promise.all(document.getAnimations().map(animation => animation.ready)); |
| await new Promise(requestAnimationFrame); |
| await new Promise(requestAnimationFrame); |
| await new Promise(requestAnimationFrame); |
| |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| })(); |
| |
| </script> |
| </body> |