| <html> |
| <style> |
| div { |
| position: relative; |
| height: 100px; |
| width: 100px; |
| background: blue; |
| transform: translateZ(0); |
| animation-direction: alternate; |
| animation-duration: 2s; |
| animation-timing-function: linear; |
| animation-iteration-count: 6; |
| } |
| |
| .test0 { |
| animation-delay: -30s; |
| } |
| |
| .test1 { |
| animation-delay: -3s; |
| } |
| |
| .test2 { |
| animation-delay: 0s; |
| } |
| |
| .test3 { |
| animation-delay: 3s; |
| } |
| |
| .anim-left { |
| animation-name: anim-left; |
| z-index: 100; |
| } |
| |
| .anim-transform { |
| animation-name: anim-transform; |
| z-index: 200; |
| } |
| |
| @keyframes anim-left { |
| 0% { |
| left: 0px; |
| } |
| 100% { |
| left: 300px; |
| } |
| } |
| |
| @keyframes anim-transform { |
| 0% { |
| transform: translateX(0px); |
| } |
| 100% { |
| transform: translateX(300px); |
| } |
| } |
| </style> |
| <body> |
| <p> |
| Each section below has two boxes, the top runs on the main thread, the bottom |
| on the compositor. The animations should be identical but start at different |
| times. |
| </p><p> |
| This test is successful if the boxes are mostly in sync (there might be a small |
| offset between them). |
| </p> |
| <hr> |
| |
| Start delay -30s (starts 30 seconds into animation by which the animation has finished, hence no animation) |
| <br> |
| <div class='test0 anim-left'></div> |
| <div class='test0 anim-transform'></div> |
| |
| Start delay -3s (starts 3 seconds into the animation, should finish first.) |
| <br> |
| <div class='test1 anim-left'></div> |
| <div class='test1 anim-transform'></div> |
| |
| Start delay 0s (no start delay, should finish second.) |
| <br> |
| <div class='test2 anim-left'></div> |
| <div class='test2 anim-transform'></div> |
| |
| Start delay 3s (starts 3 seconds after page load, should finish last.) |
| <br> |
| <div class='test3 anim-left'></div> |
| <div class='test3 anim-transform'></div> |
| </body> |
| </html> |