diff options
Diffstat (limited to 'testing/web-platform/tests/css/css-anchor-position/anchor-scroll-position-try-003.html')
-rw-r--r-- | testing/web-platform/tests/css/css-anchor-position/anchor-scroll-position-try-003.html | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-anchor-position/anchor-scroll-position-try-003.html b/testing/web-platform/tests/css/css-anchor-position/anchor-scroll-position-try-003.html new file mode 100644 index 0000000000..dd9fdc92c2 --- /dev/null +++ b/testing/web-platform/tests/css/css-anchor-position/anchor-scroll-position-try-003.html @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<title>Tests position fallback with bottom-up scroller</title> +<link rel="author" href="mailto:xiaochengh@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-anchor-1/#scroll"> +<link rel="help" href="https://drafts.csswg.org/css-anchor-1/#fallback-apply"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/test-common.js"></script> + +<style> +#containing-block { + width: 400px; + height: 400px; + transform: scale(1); + border: 1px solid black; +} + +#scroller { + display: flex; + flex-direction: column-reverse; + width: 400px; + height: 400px; + overflow-y: scroll; +} + +.box { + min-height: 100px; + width: 100px; +} + +#anchor { + anchor-name: --a; + background: orange; +} + +#anchored { + position: absolute; + top: anchor(--a bottom); + width: 100px; + height: 100px; + background: green; + anchor-default: --a; + position-try-options: --pf; +} + +@position-try --pf { + top: auto; + bottom: anchor(--a top); +} +</style> + +<div id="containing-block"> + <div id="scroller"> + <div class="box"></div> + <div class="box" id="anchor"></div> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + <div id="anchored"></div> +</div> + +<script> +promise_test(async () => { + await waitUntilNextAnimationFrame(); + assert_fallback_position(anchored, anchor, 'bottom'); +}, 'Should use the first fallback position at the initial scroll offset'); + +promise_test(async () => { + scroller.scrollTop = -1; + await waitUntilNextAnimationFrame(); + assert_fallback_position(anchored, anchor, 'top'); +}, 'Should use the second fallback position after scrolling up'); +</script> |