Sobes.tech
Middle

Jak uniknąć problemu 'flashu nieostylowanej treści' (FOUC)?

sobes.tech AI

Odpowiedź od AI

Najbardziej skuteczne metody:

  1. 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>
    
  2. 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>
    
  3. Użycie font-display: swap lub podobnych właściwości dla fontów: Dla niestandardowych fontów, które mogą powodować FOUT (Flash of Unstyled Text), użyj font-display w regule @font-face w CSS. swap pozwala 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 */
    }
    
  4. 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.

  5. Minimalizacja i łączenie plików CSS: Zmniejszenie liczby żądań HTTP i rozmiaru plików CSS przyspiesza ich ładowanie.

  6. Użycie narzędzi do budowania: Webpack, Parcel i inne bundlery mogą automatycznie wstawiać krytyczne style i optymalizować CSS.