Animation-timeline – scroll-timeline nommée

01

HTML

index.html
<div class="scroller"> <div class="progress"></div> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Recusandae dolores quasi, ea mollitia accusantium atque quibusdam laboriosam assumenda blanditiis fugit nam, deserunt repudiandae harum ipsa vitae optio eligendi, consectetur odit. <div class="subject"></div> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Recusandae dolores quasi, ea mollitia accusantium atque quibusdam laboriosam assumenda blanditiis fugit nam, deserunt repudiandae harum ipsa vitae optio eligendi, consectetur odit. </div>
02

CSS

style.css
@layer demo { .scroller { scroll-timeline-name: --my-scroller; scroll-timeline-axis: block; } .scroller .subject { animation: animate-it linear; animation-timeline: --my-scroller; } .scroller .progress { animation: progress linear; animation-timeline: --my-scroller; } @keyframes animate-it { 0% { scale: 0; } 100% { scale: 1; } } @keyframes progress { 0% { transform: translateX(0) scaleX(0); } 100% { transform: translateX(0) scaleX(1); } } } @layer demoStyles { :root { --border-color: green; } *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { color: white; } .scroller { width: 300px; height: 200px; overflow-y: auto; } .subject { width: 100px; height: 100px; border-radius: 15px; background: red; } .progress { width: 100%; height: 10px; position: absolute; top: 0; left: 0; transform-origin: 0 0; background: cyan; } }