Benannte Scrollleiste
Das Beispiel funtioniert nicht in Firefox
In diesem Beispiel geht es darum, dass man die Scrollleiste irgendeines HTML-Elements verwenden kann, um irgendein anderes Element damit zu animieren.
Das macht man mit benannten Scrollleisten. Wichtig ist, dass das Element welches animiert werden soll, ein Nachfahre des Elements sein muss, dessen Scrollleiste verwendet wird.
Das Element dessen Scrollleiste verwendet wird, bekommt einen selbstvergebenen Namen, der mit 2 Bindestrichten beginnen muss:
scroll-timline-name: --my-scroller
Wenn man stattdessen die Scroll Funktion einsetzen würde, würde man mit dem zweiten Parameter die Achse bestimmen, das macht man hier mit der Eigenschaft scroll-timeline-axis
scroll-timeline-axis: inline
Man kann beide Eigenschaften in der Kurzschreibweise zusammenfassen:
scroll-timeline: --my-scroller inline;
Das Element welches animiert werden soll braucht selbstverständlich wieder die Eigenschaft
animation-name
mit dem Verweis auf die @keyframes Regel und eventuell weitere
animation-Eigenschaften.
Der Verweis auf die Scrollleiste geschieht folgendermaßen:
animation-timeline: --my-scroller;
HTML
<div class="scroller"> <div> <div id="progress"></div> </div> </div>
CSS
.scroller { max-width: 300px; margin: auto; overflow-x: scroll; scroll-timeline-name: --my-scroller; scroll-timeline-axis: x; } .scroller>div:nth-child(1) { width: 1000px; background-image: linear-gradient(90deg, red, yellow, green, blue, #86003c, red); height: 50px; } #progress { background-color: red; width: 10px; height: 1em; animation-name: aniWidth; animation-timing-function: linear; animation-timeline: --my-scroller; /*für Firefox*/ animation-duration: 1ms; } @keyframes aniWidth { from { width: 10px; background-color: red; } to { width: 100%; background-color: yellow; } }