Layout, målning och komposition: renderingspipelinen
Förstå webbläsarens pipeline för layout, målning och komposition för att kunna förutse kostnaden för formatändringar.
Layout, målning och komposition: renderingspipelinen är en gratis lektion i CSS Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för CSS Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i CSS Academy innehåller totalt 4 lektioner.
De tre renderingsstegen
När render-trädet har byggts kör webbläsaren tre steg: Layout (beräkning av elementens storlek och positioner), Paint (ifyllning av pixlar med färger, text och bilder) och Composite (kombinering av målade lager och visning av dem på skärmen).
Layout (reflow)
Layout beräknar geometrin – bredd, höjd och x/y-position – för varje element. Om egenskaper som påverkar geometrin ändras (width, margin, padding, font-size, position) utlöses layout för elementet och potentiellt hela dess underträd – det mest kostsamma steget.
Paint
Paint fyller pixlar för varje lager: bakgrunder, kantlinjer, text och skuggor. Om color, background-color, visibility eller border-radius ändras utlöses en ommålning utan ny layout – billigare än layout, men fortfarande kostsamt om ett stort område målas om.
Composite
Compositorn kombinerar lager med hjälp av GPU:n. CSS-egenskaper som endast påverkar compositing – transform och opacity – kan animeras utan att utlösa layout eller paint. GPU:n hanterar dem med 60 FPS och minimal användning av CPU:n.
Referens för CSS Triggers
csstriggers.com (numera dokumentation på webbläsarsidan) dokumenterar vilka CSS-egenskaper som utlöser layout, paint och/eller composite i varje webbläsarmotor. Använd den för att granska animeringsegenskaper. Föredra transform/opacity för animerade egenskaper.
Layout thrashing
Layout thrashing uppstår när JavaScript växlar mellan att läsa layoutegenskaper (offsetWidth) och skriva stilegenskaper i en loop. Varje skrivning ogiltigförklarar layouten och varje läsning tvingar fram en synkron reflow. Samla alla läsningar före alla skrivningar för att undvika 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>Egenskaper som endast hanteras av compositorn
Endast transform och opacity hanteras helt av compositorn när elementet ligger på ett eget lager. Animering av alla andra egenskaper – även left/top – utlöser layout eller paint på huvudtråden och kan orsaka hackig återgivning.
Skapa GPU-lager
Webbläsare flyttar element till ett eget GPU-lager när de har will-change: transform, en CSS-animering av transform/opacity, fixed position med kompositerande grannar eller en 3D-transformering. Varje lager använder GPU-minne – för många lager skapar minnespress.
Undvika målningsstormar
En målningsstorm uppstår när en stor del av sidan målas om i varje bildruta. Profilera i Chrome DevTools → Rendering → Paint flashing för att identifiera områden som målas om. Isolera element som animeras ofta på egna lager för att begränsa området som målas om.
DevTools prestandapanel
Spela in en prestandaprofil i Chrome DevTools. Flödesdiagrammet visar händelserna Layout, Update Layer Tree, Paint och Composite. Långa staplar för layout eller målning indikerar flaskhalsar. Sikta på bildrutetider under 16 ms för att bibehålla 60 fps.
Praktiska riktlinjer för animering
Använd transform och opacity för animeringar när det är möjligt. Använd clip-path i stället för width/height för animeringar som visar innehåll — clip-path är anpassat för kompositorn i moderna webbläsare. Undvik att animera box-shadow; använd i stället opacity tillsammans med ett pseudo-element med en förhandsrenderad skugga.
Kunskapskontroll
Vilka två CSS-egenskaper kan animeras utan att utlösa layout eller målning?
Sammanfattning
Renderingspipelinen — Layout, Paint, Composite — avgör animeringens prestanda. Layout är mest kostsamt, målning är måttligt kostsamt och egenskaper som endast påverkar kompositorn (transform, opacity) hanteras av GPU:n. Genom att förstå vad som utlöser de olika stegen kan ni skapa mjuka animeringar i 60 fps utan upprepade layoutberäkningar eller målningsstormar.
Lär dig CSS med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 40
- Lektioner
- 159
Vanliga frågor
Är lektionen ”Layout, målning och komposition: renderingspipelinen” gratis?
Ja – hela texten till ”Layout, målning och komposition: renderingspipelinen” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i CSS Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i CSS Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Layout, målning och komposition: renderingspipelinen”?
Förstå webbläsarens pipeline för layout, målning och komposition för att kunna förutse kostnaden för formatändringar. Ni övar på CSS Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig CSS Academy?
Du behöver inga förkunskaper. Utbildningen i CSS Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Layout, målning och komposition: renderingspipelinen”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här CSS Academy-lektionen?
Ja. Varje CSS Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Kritisk CSS och renderingsblockering
- Layout, målning och komposition: renderingspipelinen
- will-change och lagerfrämjande
- CSS-täckning och oanvända format