Wie man das Problem des 'Flash of Unstyled Content' (FOUC) vermeidet?
sobes.tech KI
Antwort von AI
Die effektivsten Methoden:
-
Synchrone CSS-Ladung: Platzieren Sie
<link rel="stylesheet">im<head>des Dokuments, damit der Browser die Styles vor dem Rendern des Inhalts lädt und anwendet.<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Meine App</title> <link rel="stylesheet" href="/styles/main.css"> <!-- Weitere head-Tags --> </head> -
Kritische Styles inline einfügen: Fügen Sie die Styles, die notwendig sind, um den sichtbaren Teil der Seite anzuzeigen ("Above the fold"), direkt in
<head>mit<style>ein. Dies beschleunigt das initiale Rendering. Die restlichen Styles können asynchron geladen werden.<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Meine App</title> <style> /* Kritische Styles hier */ body { margin: 0; padding: 0; } h1 { color: blue; } </style> <link rel="stylesheet" href="/styles/main.css"> <!-- Weitere head-Tags --> </head> -
Verwendung von
font-display: swapoder ähnlichen Eigenschaften für Schriftarten: Für benutzerdefinierte Schriftarten, die FOUT (Flash of Unstyled Text) verursachen können, verwenden Siefont-displayin der@font-face-Regel in CSS.swapzeigt den Text sofort mit der Systemsprache an und ersetzt ihn nach dem Laden durch die benutzerdefinierte Schrift.@font-face { font-family: 'MyCustomFont'; src: url('my-custom-font.woff2') format('woff2'); font-display: swap; /* Oder fallback, optional, block */ } -
Verwendung leichter Server-Render-Templates: Wenn Server-Rendering (SSR) verwendet wird, können minimale Styles direkt im HTML eingebettet werden, um das Skelett der Seite anzuzeigen.
-
Minimierung und Zusammenfassung von CSS-Dateien: Reduzieren Sie die Anzahl der HTTP-Anfragen und die Größe der CSS-Dateien, um die Ladezeit zu verkürzen.
-
Verwendung von Build-Tools: Webpack, Parcel und andere Bundler können die Einbettung kritischer Styles und die CSS-Optimierung automatisieren.