Scroll-driven

Reveal on enter

animation-timeline: view() koppelt die Animation an die Sichtbarkeit des Elements im Scrollport. animation-range definiert wann sie beginnt und endet.

Erstes Element
Zweites Element
Drittes Element
Viertes Element
Fünftes Element
Sechstes Element
@keyframes reveal{ from{opacity:0;transform:translateY(40px)} to{opacity:1;transform:translateY(0)} }

.item{
  animation: reveal 1ms linear both;   /* 1ms wegen Firefox-Quirk */
  animation-timeline: view();
  animation-range: entry 10% cover 40%;
}
Fallstrick: view() misst die Layout-Box — nicht das Transform. Wer das Element per translate versetzt, ändert nichts an der Range.