0Pricing
CSS Academy · Lekcja

Układ, malowanie i kompozycja: potok renderowania

Poznaj potok układu, malowania i kompozycji przeglądarki, aby przewidywać koszt zmian stylów.

Układ, malowanie i kompozycja: potok renderowania to bezpłatna lekcja CSS Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej CSS Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CSS Academy zawiera 4 lekcji w sumie.

Trzy etapy renderowania

Po zbudowaniu drzewa renderowania przeglądarka wykonuje trzy etapy: Layout (obliczanie rozmiarów i pozycji elementów), Paint (wypełnianie pikseli kolorami, tekstem i obrazami) oraz Composite (łączenie namalowanych warstw i wyświetlanie ich na ekranie).

Layout (reflow)

Layout oblicza geometrię — szerokość, wysokość oraz pozycję x/y — każdego elementu. Zmiana właściwości wpływających na geometrię (width, margin, padding, font-size, position) uruchamia layout dla elementu i potencjalnie całego jego poddrzewa — jest to najbardziej kosztowny etap.

Paint

Paint wypełnia piksele każdej warstwy: tła, obramowania, tekst i cienie. Zmiana color, background-color, visibility lub border-radius wywołuje ponowne malowanie bez ponownego obliczania układu — jest to tańsze niż layout, ale nadal kosztowne, jeśli ponownie malowany jest duży obszar.

Composite

Compositor łączy warstwy za pomocą GPU. Właściwości CSS wpływające wyłącznie na compositing — transform i opacity — można animować bez uruchamiania layoutu ani paint. GPU obsługuje je z częstotliwością 60 kl./s przy minimalnym udziale CPU.

Informacje o wyzwalaczach CSS

csstriggers.com (obecnie dokumentacja dostępna po stronie przeglądarki) opisuje, które właściwości CSS wywołują layout, paint lub composite w poszczególnych silnikach przeglądarek. Użyj tego źródła do sprawdzania właściwości animacji. W przypadku właściwości animowanych preferuj transform i opacity.

Layout thrashing

Layout thrashing występuje, gdy JavaScript naprzemiennie odczytuje właściwości układu (offsetWidth) i zapisuje właściwości stylu w pętli. Każdy zapis unieważnia układ, a każdy odczyt wymusza synchroniczny reflow. Grupuj wszystkie odczyty przed wszystkimi zapisami, aby uniknąć layout 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>

Właściwości obsługiwane wyłącznie przez compositor

Tylko transform i opacity są w całości obsługiwane przez compositor, gdy element znajduje się na własnej warstwie. Animowanie dowolnej innej właściwości — nawet left/top — uruchamia layout lub paint w głównym wątku i może powodować zacinanie animacji.

Tworzenie warstw GPU

Przeglądarki przenoszą elementy na własną warstwę GPU, gdy mają will-change: transform, animację CSS właściwości transform/opacity, stałe pozycjonowanie z sąsiednimi elementami używającymi compositingu albo transformację 3D. Każda warstwa zużywa pamięć GPU — zbyt wiele warstw powoduje presję na pamięć.

Unikanie burz malowania

Burza malowania występuje, gdy duża część strony jest ponownie malowana w każdej klatce. Aby zidentyfikować obszary ponownego malowania, użyj w Chrome DevTools opcji Rendering → Paint flashing. Umieść często animowane elementy na osobnych warstwach, aby ograniczyć obszar ponownego malowania.

Panel Performance w DevTools

Nagraj profil wydajności w Chrome DevTools. Wykres płomieniowy pokazuje zdarzenia Layout, Update Layer Tree, Paint i Composite. Długie paski Layout lub Paint wskazują wąskie gardła. Aby utrzymać 60 kl./s, dąż do czasu renderowania klatki krótszego niż 16 ms.

Praktyczne wytyczne dotyczące animacji

W miarę możliwości animuj za pomocą transform i opacity. Do animacji ujawniania używaj clip-path zamiast width/height — clip-path dobrze współpracuje z kompozytorem w nowoczesnych przeglądarkach. Unikaj animowania box-shadow; zamiast tego użyj opacity oraz pseudoelementu z wcześniej wyrenderowanym cieniem.

Sprawdzenie wiedzy

Które dwie właściwości CSS można animować bez wywoływania układu lub malowania?

Podsumowanie

Potok renderowania — Layout, Paint i Composite — określa wydajność animacji. Layout jest najbardziej kosztowny, Paint ma umiarkowany koszt, a właściwości ograniczone do Composite (transform, opacity) są obsługiwane przez GPU. Zrozumienie mechanizmów wywołujących te etapy pozwala tworzyć płynne animacje 60 kl./s bez nadmiernego przeliczania układu i burz malowania.

Często zadawane pytania

Czy lekcja „Układ, malowanie i kompozycja: potok renderowania” jest bezpłatna?

Tak — pełny tekst „Układ, malowanie i kompozycja: potok renderowania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu CSS Academy, przejdź na CoddyKit PRO. Kurs CSS Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Układ, malowanie i kompozycja: potok renderowania”?

Poznaj potok układu, malowania i kompozycji przeglądarki, aby przewidywać koszt zmian stylów. Ćwiczysz CSS Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć CSS Academy?

Nie wymagamy żadnego doświadczenia. CSS Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Układ, malowanie i kompozycja: potok renderowania”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji CSS Academy?

Tak. Każda lekcja CSS Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Krytyczny CSS i blokowanie renderowania
  2. Układ, malowanie i kompozycja: potok renderowania
  3. will-change i promowanie do warstwy
  4. Pokrycie CSS i nieużywane style
← Powrót do CSS Academy