diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/scroll-animations/css/animation-fill-outside-range-test.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/scroll-animations/css/animation-fill-outside-range-test.html')
-rw-r--r-- | testing/web-platform/tests/scroll-animations/css/animation-fill-outside-range-test.html | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/testing/web-platform/tests/scroll-animations/css/animation-fill-outside-range-test.html b/testing/web-platform/tests/scroll-animations/css/animation-fill-outside-range-test.html new file mode 100644 index 0000000000..90d4f4518b --- /dev/null +++ b/testing/web-platform/tests/scroll-animations/css/animation-fill-outside-range-test.html @@ -0,0 +1,137 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<link rel="help" src="https://drafts.csswg.org/scroll-animations-1/"> +<link rel="match" href="animation-fill-outside-range-ref.html"> +<script src="/common/reftest-wait.js"></script> +<script src="/web-animations/testcommon.js"></script> +<style> + .scroller { + height: 200px; + width: 500px; + overflow: auto; + position: absolute; + top: 100px; + } + + .anim { + position: absolute; + width: 100px; + height: 100px; + background: darkred; + view-timeline: --view; + } + .anim.contain { + background: green; + } + .spacer { + height: 1000px; + } + + .before { + top: 450px; + } + .after { + top: 50px; + } + .contain { + top: 250px; + } + @keyframes opaque-before { + 0% { opacity: 1; } + 0.01% { opacity : 0; } + 100% { opacity : 0; } + } + @keyframes opaque-after { + 0% { opacity: 0; } + 99.9% { opacity : 0; } + 100% { opacity : 1; } + } + .indicator { + position: fixed; + top: 50px; + } + .contain .indicator { + top: 100px; + } + .contain .indicator:nth-child(2) { + left: 200px; + } + + .after .indicator { + left: 200px; + } + + .indicator > div { + display: inline-block; + width: 25px; + height: 25px; + position: relative; + border-radius: 100%; + box-sizing: border-box; + border: 2px solid black; + padding: 3px; + background: lightgray; + background-clip: content-box; + } + + .indicator > div > div { + width: 100%; + height: 100%; + border-radius: 100%; + background: green; + opacity: 0; + animation-fill-mode: both; + animation-timeline: --view; + } + + .after .indicator > div > div, + .contain .indicator > div > div { + animation-name: opaque-after; + } + .before .indicator > div > div, + .contain .indicator:nth-child(2) > div > div { + animation-name: opaque-before; + } + + .contain .indicator > div > div { + animation-range: entry; + } + + .contain .indicator:nth-child(2) > div > div { + animation-range: exit; + } + +</style> +</head> +<body> + <p>All of the activity indicators should be active as the animations should be filling.</p> + <div class="scroller"> + <div class="anim after"><div class="indicator">After cover phase: <div><div></div></div></div></div> + <div class="anim before"><div class="indicator">Before cover phase: <div><div></div></div></div></div> + <div class="anim contain"> + <div class="indicator entry">After entry phase: <div><div></div></div></div> + <div class="indicator exit">Before exit phase: <div><div></div></div></div> + </div> + <div class="spacer"></div> + </div> +</body> +<script> + async function run() { + let scroller = document.querySelector('.scroller'); + // Scroll such that each animation becomes active. + scroller.scrollTo(0, 0); + await waitForCompositorReady(); + scroller.scrollTo({top: 400}); + await waitForNextFrame(); + + // Then scroll between them so that we are before one and after the other. + scroller.scrollTo({top: 200}); + await waitForNextFrame(); + takeScreenshot(); + } + run(); +</script> +</html> |