| <!DOCTYPE html> |
| <style> |
| body { |
| height: 2000px; |
| } |
| |
| #box { |
| position: relative; |
| width: 20px; |
| height: 20px; |
| background-color: blue; |
| } |
| |
| .animating { |
| animation-name: slide; |
| animation-duration: 1ms; |
| animation-fill-mode: forwards; |
| animation-timing-function: linear; |
| -webkit-animation-trigger: container-scroll(20px, 20px); |
| } |
| |
| @-webkit-keyframes slide { |
| from { |
| left: 0px; |
| } |
| to { |
| left: 100px; |
| } |
| } |
| </style> |
| <script> |
| |
| var results; |
| var box; |
| |
| if (window.testRunner) { |
| window.testRunner.dumpAsText(); |
| window.testRunner.waitUntilDone(); |
| } |
| |
| if (window.internals) |
| window.internals.settings.setVisualViewportEnabled(false); |
| |
| function runTest() { |
| results = document.getElementById("results"); |
| box = document.getElementById("box"); |
| results.innerHTML = "Value before animation is applied: " + window.getComputedStyle(box).left + " (should be 0px)<br>"; |
| box.className = "animating"; |
| setTimeout(checkValueWithoutScroll, 0); |
| } |
| |
| function checkValueWithoutScroll() { |
| results.innerHTML += "Value with animation but no scroll: " + window.getComputedStyle(box).left + " (should be 0px)<br>"; |
| window.scrollTo(0, 30); |
| setTimeout(checkValueWithScroll, 10); |
| } |
| |
| function checkValueWithScroll() { |
| var leftValue = Math.round(window.getComputedStyle(box).getPropertyCSSValue("left").getFloatValue(CSSPrimitiveValue.CSS_NUMBER)); |
| |
| if (leftValue > 11) // If we were reacting to scroll we'd have a value of 10. |
| results.innerHTML += "PASS: Animation was not depending on scroll.<br>"; |
| else |
| results.innerHTML += "FAIL: Value seems to be reacting to scroll. It was " + leftValue + "px<br>"; |
| |
| if (window.testRunner) |
| window.testRunner.notifyDone(); |
| } |
| |
| window.addEventListener("load", runTest, false); |
| |
| </script> |
| |
| <p>This element should begin animating only when the page scrolls to 20px from |
| the top. It specifies an end value, but that should be ignored because it is |
| not greater than the start. This means the animation will run to completion |
| rather than take the scroll value as input. Remember to scroll to the top of |
| the page before reloading!</p> |
| <div id="box"></div> |
| |
| <div id="results"></div> |