91 lines
2.6 KiB
HTML
91 lines
2.6 KiB
HTML
<!DOCTYPE html>
|
|
<title>animation-timeline with multiple timelines</title>
|
|
<link rel="help" src="https://drafts.csswg.org/css-animations-2/#animation-timeline">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/web-animations/testcommon.js"></script>
|
|
<style>
|
|
main {
|
|
timeline-scope: --top_timeline, --bottom_timeline, --left_timeline, --right_timeline;
|
|
}
|
|
|
|
.scroller {
|
|
overflow: hidden;
|
|
width: 100px;
|
|
height: 100px;
|
|
}
|
|
.scroller > div {
|
|
height: 200px;
|
|
width: 200px;
|
|
}
|
|
|
|
@keyframes top {
|
|
from { top: 100px; }
|
|
to { top: 200px; }
|
|
}
|
|
@keyframes bottom {
|
|
from { bottom: 100px; }
|
|
to { bottom: 200px; }
|
|
}
|
|
@keyframes left {
|
|
from { left: 100px; }
|
|
to { left: 200px; }
|
|
}
|
|
@keyframes right {
|
|
from { right: 100px; }
|
|
to { right: 200px; }
|
|
}
|
|
|
|
#top_scroller {
|
|
scroll-timeline-name: --top_timeline;
|
|
scroll-timeline-axis: block;
|
|
}
|
|
#bottom_scroller {
|
|
scroll-timeline-name: --bottom_timeline;
|
|
scroll-timeline-axis: inline;
|
|
}
|
|
#left_scroller {
|
|
scroll-timeline-name: --left_timeline;
|
|
scroll-timeline-axis: block;
|
|
}
|
|
#right_scroller {
|
|
scroll-timeline-name: --right_timeline;
|
|
scroll-timeline-axis: inline;
|
|
}
|
|
|
|
#element {
|
|
animation-name: top, bottom, left, right;
|
|
animation-duration: 10s;
|
|
animation-timing-function: linear;
|
|
animation-timeline: --top_timeline, --bottom_timeline, --left_timeline, --right_timeline;
|
|
}
|
|
/* Ensure stable expectations if feature is not supported */
|
|
@supports not (animation-timeline:--foo) {
|
|
#element { animation-play-state: paused; }
|
|
}
|
|
</style>
|
|
<main>
|
|
<div class=scroller id=top_scroller><div></div></div>
|
|
<div class=scroller id=bottom_scroller><div></div></div>
|
|
<div class=scroller id=left_scroller><div></div></div>
|
|
<div class=scroller id=right_scroller><div></div></div>
|
|
<div id=element></div>
|
|
</main>
|
|
<script>
|
|
promise_test(async (t) => {
|
|
await runAndWaitForFrameUpdate(() => {
|
|
top_scroller.scrollTop = 20;
|
|
top_scroller.scrollLeft = 40;
|
|
bottom_scroller.scrollTop = 20;
|
|
bottom_scroller.scrollLeft = 40;
|
|
left_scroller.scrollTop = 60;
|
|
left_scroller.scrollLeft = 80;
|
|
right_scroller.scrollTop = 60;
|
|
right_scroller.scrollLeft = 80;
|
|
});
|
|
assert_equals(getComputedStyle(element).top, '120px');
|
|
assert_equals(getComputedStyle(element).bottom, '140px');
|
|
assert_equals(getComputedStyle(element).left, '160px');
|
|
assert_equals(getComputedStyle(element).right, '180px');
|
|
}, 'animation-timeline works with multiple timelines');
|
|
</script>
|