Jak uniknąć problemu 'flashu nieostylowanej treści' (FOUC)?
sobes.tech AI
Odpowiedź od AI
Najbardziej skuteczne metody:
-
Synchronous loading of CSS: Umieść
<link rel="stylesheet">w<head>dokumentu, aby przeglądarka załadowała i zastosowała style przed renderowaniem zawartości.<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Moja aplikacja</title> <link rel="stylesheet" href="/styles/main.css"> <!-- Pozostałe tagi w head --> </head> -
Inlinowanie krytycznych stylów: Wstaw style niezbędne do wyświetlenia widocznej części strony ("Above the fold") bezpośrednio w
<head>za pomocą<style>. Przyspiesza to początkowe renderowanie. Pozostałe style można ładować asynchronicznie.<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Moja aplikacja</title> <style> /* Krytyczne style tutaj */ body { margin: 0; padding: 0; } h1 { color: blue; } </style> <link rel="stylesheet" href="/styles/main.css"> <!-- Pozostałe tagi w head --> </head> -
Użycie
font-display: swaplub podobnych właściwości dla fontów: Dla niestandardowych fontów, które mogą powodować FOUT (Flash of Unstyled Text), użyjfont-displayw regule@font-facew CSS.swappozwala od razu wyświetlić tekst systemowym fontem i zamienić go na niestandardowy po załadowaniu.@font-face { font-family: 'MyCustomFont'; src: url('my-custom-font.woff2') format('woff2'); font-display: swap; /* lub fallback, opcjonalnie, block */ } -
Stosowanie lekkich szablonów (w renderowaniu po stronie serwera): Jeśli używasz SSR, możesz wstawić do HTML minimalny zestaw stylów potrzebnych do wyświetlenia szkieletu strony.
-
Minimalizacja i łączenie plików CSS: Zmniejszenie liczby żądań HTTP i rozmiaru plików CSS przyspiesza ich ładowanie.
-
Użycie narzędzi do budowania: Webpack, Parcel i inne bundlery mogą automatycznie wstawiać krytyczne style i optymalizować CSS.