Layout, paint e compositing: la pipeline di rendering
Comprenda la pipeline di layout, paint e compositing del browser per prevedere il costo delle modifiche agli stili.
Layout, paint e compositing: la pipeline di rendering è una lezione CSS Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CSS Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CSS Academy include 4 lezioni in totale.
Le tre fasi del rendering
Dopo la creazione del render tree, il browser esegue tre fasi: Layout (calcolo delle dimensioni e delle posizioni degli elementi), Paint (riempimento dei pixel con colori, testo e immagini) e Composite (combinazione dei layer sottoposti a paint e visualizzazione sullo schermo).
Layout (Reflow)
Layout calcola la geometria, ovvero larghezza, altezza e posizione x/y, di ogni elemento. La modifica di proprietà che influiscono sulla geometria (width, margin, padding, font-size, position) attiva il layout per l'elemento e potenzialmente per l'intero sottoalbero: è la fase più costosa.
Paint
Paint riempie i pixel di ogni layer: sfondi, bordi, testo e ombre. La modifica di color, background-color, visibility o border-radius attiva un repaint senza un nuovo layout: è meno costosa del layout, ma può comunque essere onerosa se viene ridisegnata un'area estesa.
Composite
Il compositor combina i layer usando la GPU. Le proprietà CSS che influiscono solo sul compositing, transform e opacity, possono essere animate senza attivare layout o paint. La GPU le gestisce a 60fps con un coinvolgimento minimo della CPU.
Riferimento dei CSS trigger
csstriggers.com, oggi documentazione lato browser, descrive quali proprietà CSS attivano layout, paint e/o composite in ogni motore del browser. Lo utilizzi per verificare le proprietà delle animazioni. Preferisca transform e opacity per le proprietà animate.
Layout thrashing
Il layout thrashing si verifica quando JavaScript alterna la lettura delle proprietà di layout (offsetWidth) e la scrittura delle proprietà di stile all'interno di un ciclo. Ogni scrittura invalida il layout e ogni lettura forza un reflow sincrono. Raggruppi tutte le letture prima di tutte le scritture per evitare il thrashing.
<pre class="snippet">// BAD: read-write-read-write loop
elements.forEach(el => { const w = el.offsetWidth; el.style.width = w + 10 + "px"; });
// GOOD: batch reads then writes</pre>Proprietà gestite solo dal compositor
Solo transform e opacity vengono gestite interamente dal compositor quando l'elemento si trova su un layer dedicato. Animare qualsiasi altra proprietà, anche left/top, attiva layout o paint sul main thread e può causare scatti.
Creazione dei layer GPU
I browser promuovono gli elementi su un layer GPU dedicato quando hanno will-change: transform, un'animazione CSS su transform/opacity, una posizione fixed con elementi adiacenti sottoposti a compositing oppure una trasformazione 3D. Ogni layer usa memoria GPU: un numero eccessivo di layer causa pressione sulla memoria.
Evitare le paint storm
Una paint storm si verifica quando un'ampia parte della pagina viene ridisegnata a ogni frame. Esegua il profiling in Chrome DevTools → Rendering → Paint flashing per identificare le aree ridisegnate. Isoli gli elementi animati frequentemente su layer propri per contenere l'area ridisegnata.
Pannello Performance di DevTools
Registri un profilo delle prestazioni in Chrome DevTools. Il flame chart mostra gli eventi Layout, Update Layer Tree, Paint e Composite. Barre lunghe di layout o paint indicano colli di bottiglia. Punti a tempi di frame inferiori a 16 ms per mantenere 60 fps.
Linee guida pratiche per le animazioni
Quando possibile, animi con transform e opacity. Usi clip-path invece di width/height per le animazioni di rivelazione: nei browser moderni, clip-path è efficiente per il compositore. Eviti di animare box-shadow; usi invece opacity insieme a uno pseudo-elemento con un'ombra prerenderizzata.
Verifica delle conoscenze
Quali due proprietà CSS possono essere animate senza attivare il layout o il paint?
Riepilogo
La pipeline di rendering — Layout, Paint, Composite — determina le prestazioni delle animazioni. Il layout è l'operazione più costosa, il paint ha un costo moderato e le proprietà che attivano solo il compositing (transform, opacity) vengono gestite dalla GPU. Comprendere i trigger consente di creare animazioni fluide a 60 fps senza layout thrashing o paint storm.
Domande Frequenti
La lezione «Layout, paint e compositing: la pipeline di rendering» è gratuita?
Sì — il testo completo di «Layout, paint e compositing: la pipeline di rendering» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CSS Academy, passa a CoddyKit PRO. Il corso CSS Academy include 4 lezioni in totale.
Cosa imparerò in «Layout, paint e compositing: la pipeline di rendering»?
Comprenda la pipeline di layout, paint e compositing del browser per prevedere il costo delle modifiche agli stili. Eserciti CSS Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare CSS Academy?
Non è richiesta alcuna esperienza precedente. CSS Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Layout, paint e compositing: la pipeline di rendering»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione CSS Academy?
Sì. Ogni lezione CSS Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- CSS critico e blocco del rendering
- Layout, paint e compositing: la pipeline di rendering
- will-change e promozione dei livelli
- Copertura CSS e stili inutilizzati