Animare gli elementi durante lo scorrimento
Fa parte della sezione JavaScript in azione del percorso HTML di Coddy. Lezione 19 di 27.
A volte vogliamo che gli elementi si animino (dissolvenza in entrata, scorrimento in entrata, zoom, ecc.) quando entrano nell'area visibile durante lo scorrimento.
Spesso questo si fa verificando se l'elemento è visibile sullo schermo e poi aggiungendo una classe che attiva un'animazione o una transizione CSS.
Per prima cosa, creiamo un semplice elemento HTML:
<div class="animate-on-scroll">This element will animate when scrolled into view</div>Successivamente, aggiungi il CSS per l’animazione:
.animate-on-scroll {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.5s ease, transform 0.5s ease;
}
.animate-on-scroll.visible {
opacity: 1;
transform: translateY(0);
}Ora creiamo una funzione JavaScript per rilevare quando gli elementi entrano nell'area visibile. Poiché potremmo avere più elementi, li percorriamo con forEach e controlliamo la posizione di ciascun elemento rispetto alla finestra di visualizzazione.
function checkScroll() {
const elements = document.querySelectorAll('.animate-on-scroll');
elements.forEach(element => {
// Ottieni la posizione dell'elemento rispetto all'area visibile
const position = element.getBoundingClientRect();
// Se l'elemento è nell'area visibile
if(position.top < window.innerHeight) {
element.classList.add('visible');
}
});
}
// Esegui durante lo scorrimento
window.addEventListener('scroll', checkScroll);
// Esegui una volta al caricamento della pagina
checkScroll();Quando un elemento con la classe animate-on-scroll entra nell’area visibile, lo script aggiunge la classe visible, attivando l’animazione.
Sfida
FacileAll'interno del ciclo, crea un istruzione if.
- La condizione dovrebbe verificare se la posizione superiore dell'elemento è minore di
window.innerHeight - 50. - Se la condizione è vera, usa
.classList.add("active")per aggiungere la classeactivea quell'elemento.
In questo modo, ogni volta che un elemento entra nell'area visibile (entro 50px dal fondo dello schermo), apparirà gradualmente.
Provalo tu
<!DOCTYPE html>
<html>
<head>
<title>Scroll Animation Example</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>Discover the Beauty of Nature</h1>
<p>Scroll down to reveal the magic</p>
</header>
<div class="container">
<div class="fade-in card">
<h2>Mountains</h2>
<p>Standing tall and timeless, mountains remind us of strength and stability.</p>
</div>
<div class="fade-in card">
<h2>Forests</h2>
<p>Forests are the lungs of our planet, offering peace and endless green beauty.</p>
</div>
<div class="fade-in card">
<h2>Rivers</h2>
<p>Calm or powerful, rivers flow endlessly, connecting life along their paths.</p>
</div>
<div class="fade-in card">
<h2>Deserts</h2>
<p>Silent and vast, deserts teach us resilience and the value of every drop of water.</p>
</div>
<div class="fade-in card">
<h2>Oceans</h2>
<p>The oceans cover most of our Earth, a mysterious world full of wonder and life.</p>
</div>
</div>
<script src="script.js"></script>
</body>
</html>Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di JavaScript in azione
1Interattività/Componenti UI
SchedeFisarmonica (espandi/comprimi)Finestra modale (apri/chiudi)Menu a discesa7Animazioni ed effetti
Transizioni CSSAnimare gli elementi durante lo scorrimentoAnimazioni al clic dei pulsantiEsercitati da solo: Playground Web