mirror of
https://github.com/servo/servo.git
synced 2025-06-25 17:44:33 +01:00
72 lines
2.2 KiB
HTML
72 lines
2.2 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<link rel="help" src="https://drafts.csswg.org/scroll-animations-1/#named-timeline-range">
|
|
<link rel="stylesheet" href="support/animation-range.css">
|
|
<style>
|
|
.meter {
|
|
animation: active-interval linear 100s paused;
|
|
animation-timeline: auto;
|
|
}
|
|
|
|
.bar {
|
|
animation: slide-in linear 100s paused;
|
|
animation-timeline: auto;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h3>View timeline</h3>
|
|
<template id="meters">
|
|
<div class="meters">
|
|
<div class="cover"><div class="meter"><div class="bar"></div></div><div>Cover</div></div>
|
|
<div class="contain"><div class="meter"><div class="bar"></div></div><div>Contain</div></div>
|
|
<div class="entry"><div class="meter"><div class="bar"></div></div><div>Entry</div></div>
|
|
<div class="exit"><div class="meter"><div class="bar"></div></div><div>Exit</div></div>
|
|
</div>
|
|
</template>
|
|
<div class="flex">
|
|
<div>
|
|
<div class="scroller">
|
|
<div class="subject" style="margin-top: 90px;" data-progress=".08333,-1,.5,-1"></div>
|
|
<div class="spacer"></div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="scroller">
|
|
<div class="subject" style="margin-top: 70px;" data-progress=".25,.125,2,-1"></div>
|
|
<div class="spacer"></div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="scroller">
|
|
<div class="subject" style="margin-top: 10px;" data-progress=".75,.875,2,-1"></div>
|
|
<div class="spacer"></div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="scroller">
|
|
<div class="subject" style="margin-top: -10px;" data-progress=".91667,2,2,.5"></div>
|
|
<div class="spacer"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
<script>
|
|
let template = document.querySelector('#meters');
|
|
let subjects = document.querySelectorAll('.subject');
|
|
for (let i = 0; i < subjects.length; i++) {
|
|
let clone = template.content.cloneNode(true);
|
|
let meters = clone.querySelectorAll('.meter');
|
|
let progress = subjects[i].getAttribute('data-progress').split(',').map(s => parseFloat(s));
|
|
for (let meter of meters) {
|
|
let bar = meter.querySelector('.bar');
|
|
let startTime = -progress.splice(0, 1)[0] * 100;
|
|
meter.style.animationDelay = `${startTime}s`;
|
|
bar.style.animationDelay = `${startTime}s`;
|
|
}
|
|
subjects[i].appendChild(clone);
|
|
}
|
|
</script>
|
|
</html>
|