Animasjoner utløst av rulling
Animer elementer når de kommer inn i visningen.
Animasjoner utløst av rulling er en gratis leksjon i JavaScript Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i JavaScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i JavaScript Academy inneholder totalt 4 leksjoner.
Animere ved rulling
En populær effekt er å tone inn eller skyve elementer inn i visningen når brukeren ruller til dem. Intersection Observer gjør dette enkelt: legg til en CSS-klasse når et element kommer inn i visningsområdet, og la CSS håndtere animasjonen.
CSS-delen
Definer en skjult starttilstand og en synlig sluttilstand i CSS. JavaScript-koden endrer bare en klasse, mens overgangen håndteres av ren CSS. Det gjør animasjonen jevn.
// .reveal { opacity: 0; transform: translateY(20px);
// transition: opacity 0.6s, transform 0.6s; }
// .reveal.visible { opacity: 1; transform: none; }Velge mål
Marker elementene De vil animere, med en felles klasse, og samle dem deretter.
const items = document.querySelectorAll('.reveal');
console.log('animating', items.length, 'elements');Opprette observatøren
Bruk en terskelverdi slik at animasjonen starter når en meningsfull del av elementet er synlig, ikke bare én piksel.
const observer = new IntersectionObserver(reveal, {
threshold: 0.2 // 20% visible
});Legge til klassen
I callbacken legger De til klassen visible på elementer som skjærer inn i visningen. CSS animerer dem deretter inn i visningen.
function reveal(entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
}Animere én gang
For en visning som bare skal skje én gang, slutter De å observere elementet etter at klassen er lagt til. Da animeres det ikke på nytt når brukeren ruller bort fra det og tilbake igjen.
function reveal(entries, obs) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
obs.unobserve(entry.target); // animate only once
}
});
}Animere på nytt i begge retninger
Hvis De vil at elementer også skal animeres ut når de forlater visningen, endrer De klassen basert på isIntersecting og fortsetter å observere.
function reveal(entries) {
entries.forEach(entry => {
entry.target.classList.toggle('visible', entry.isIntersecting);
});
}Starte observasjonen
Observer hvert mål for å begynne sporingen. Observatøren utløses når brukeren ruller forbi hvert av dem.
items.forEach(el => observer.observe(el));Forskyve animasjoner
Opprett en kaskade ved å bruke en trinnvis overgangsforsinkelse. De kan angi den fra et dataattributt eller elementets indeks.
items.forEach((el, i) => {
el.style.transitionDelay = (i * 100) + 'ms';
observer.observe(el);
});Respektere redusert bevegelse
Noen brukere foretrekker redusert bevegelse. Kontroller mediespørringen og hopp over animasjonene for disse brukerne, slik at innholdet vises umiddelbart i stedet.
const reduce = window.matchMedia(
'(prefers-reduced-motion: reduce)'
).matches;
if (reduce) {
items.forEach(el => el.classList.add('visible'));
}Ytelsesfordeler
Siden det krevende arbeidet utføres av CSS-overganger og synlighetsregistreringen overlates til nettleseren, forblir rulleanimasjoner jevne selv med mange elementer. Ingen beregninger fra rullehendelser og ingen hakking.
Rask kontroll
Test forståelsen Deres av animasjoner som utløses ved rulling.
Oppsummering
De har bygget animasjoner som utløses ved rulling:
- Definer skjulte og synlige tilstander i CSS.
- Observer mål med en fornuftig
threshold. - Endre en klasse ved skjæring, mens CSS utfører animasjonen.
- Bruk
unobservefor visninger som bare skal skje én gang. - Respekter
prefers-reduced-motion.
De er ferdige med Intersection Observer. Deretter skal vi se på Web Workers.
Lær deg JavaScript med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 59
- Leksjoner
- 200
Ofte stilte spørsmål
Er leksjonen «Animasjoner utløst av rulling» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien JavaScript Academy, inkludert «Animasjoner utløst av rulling», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i JavaScript Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Animasjoner utløst av rulling»?
Animer elementer når de kommer inn i visningen. Du øver på JavaScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med JavaScript Academy?
Ingen tidligere erfaring er nødvendig. JavaScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Animasjoner utløst av rulling»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne JavaScript Academy-leksjonen?
Ja. Alle JavaScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Observere elementsynlighet
- Lazy loading av bilder
- Uendelig rulling
- Animasjoner utløst av rulling