diff options
Diffstat (limited to 'testing/web-platform/tests/css/css-scroll-anchoring/zero-scroll-offset.html')
-rw-r--r-- | testing/web-platform/tests/css/css-scroll-anchoring/zero-scroll-offset.html | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-scroll-anchoring/zero-scroll-offset.html b/testing/web-platform/tests/css/css-scroll-anchoring/zero-scroll-offset.html new file mode 100644 index 0000000000..b8f5aa2ccc --- /dev/null +++ b/testing/web-platform/tests/css/css-scroll-anchoring/zero-scroll-offset.html @@ -0,0 +1,53 @@ +<!DOCTYPE html> +<head> + <title>Test that scroll anchoring is suppressed when scroll offset is zero.</title> + <link rel="author" title="Nick Burris" href="mailto:nburris@chromium.org"> + <link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> +</head> +<style> +#header { + height: 100px; + border: 1px solid black; + overflow-anchor: none; +} +#content { + height: 200vh; +} +</style> +<div id="header"></div> +<div id="content">abc</div> +<script> +window.addEventListener("scroll", function() { + if (document.scrollingElement.scrollTop > 0) { + // On the first scroll event, shrink the header. Scroll anchoring anchors to + // content, but the header shrinks by more than the scroll offset so the + // resulting scroll position is zero. + step_timeout(function() { + document.querySelector("#header").style.height = "50px"; + }, 0); + } else { + // On the second scroll event, grow the header. Since the scroll offset is + // zero, scroll anchoring should be suppressed. Otherwise, scroll anchoring + // would anchor to content and the resulting scroll position would be 50px. + step_timeout(function() { + document.querySelector("#header").style.height = "100px"; + }, 0); + } +}); + +async_test(function(t) { + // Scroll down a bit to trigger the scroll event listener. + window.scrollTo(0, 10); + + window.requestAnimationFrame(function() { + window.requestAnimationFrame(function() { + window.requestAnimationFrame(t.step_func_done(() => { + assert_equals(document.scrollingElement.scrollTop, 0); + })); + }); + }); + +}, "Scroll anchoring suppressed when scroll offset is zero."); +</script> |