This demo showcases 4 categories of animation trigger behaviors exhibited by scroll-triggered animations on the web: "once", "repeat", "alternate", & "state."
The box below animates when the box within the scroll container comes fully into view. The animation runs the first "enter" occasion but does nothing on subsequent ones. To the right is the CSS setting up this scroll-triggered animation:
@keyframes fade-in { from { opacity: 0.1; transform: scaleX(0.1); background-color: black; } to { background-color: black; transform: scaleX(3); } } .source { timeline-trigger: --oncetrigger view() contain 0% contain 100%; } .target { animation: fade-in .5s both; animation-trigger: --oncetrigger play-once; }
The animation plays forward on each occurrence of "enter" and is reset to current time zero on each occurrence of "exit".
@keyframes fade-in { from { opacity: 0.1; transform: scaleX(0.1); background-color: black; } to { background-color: black; transform: scaleX(3); } } .source { timeline-trigger: --repeattrigger view() contain 0% contain 100% cover 0% cover 100%; } .target { animation: fade-in .5s both; animation-trigger: --repeattrigger play reset; }
The animation plays forward on each occurrence of "enter" and plays in reverse on each occurrence of "exit".
@keyframes fade-in { from { opacity: 0.1; transform: scaleX(0.1); background-color: black; } to { background-color: black; transform: scaleX(3); } } .source { timeline-trigger: --alternatetrigger view() contain 0% contain 100%; } .target { animation: fade-in .5s both; animation-trigger: --alternatetrigger play-forwards play-backwards; }
The animation plays forward on each occurrence of "enter" and pauses on each occurrence of "exit". (animation-duration (10s) is extended in this demo to make it a bit easier to interact with)
@keyframes fade-in { from { opacity: 0.1; transform: scaleX(0.1); background-color: black; } to { background-color: black; transform: scaleX(3); } } .source { timeline-trigger: --alternatetrigger view() contain 0% contain 100%; } .target { animation: fade-in 10s both; animation-trigger: --alternatetrigger play pause; }
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsa quod consequatur unde perferendis animi, praesentium odio voluptates provident iusto deleniti! Alias quasi ab tempora sunt? Nesciunt beatae aut et quo!