Sobes.tech
Middle
112
questionbank

Как избежать проблемы с 'flash of unstyled content' (FOUC)?

Ответ от нейросети

sobes.tech AI

Наиболее эффективные способы:

  1. Синхронная загрузка CSS: Размещать <link rel="stylesheet"> в <head> документа, чтобы браузер загружал и применял стили до рендеринга содержимого.

    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>My App</title>
      <link rel="stylesheet" href="/styles/main.css">
      <!-- Остальные теги head -->
    </head>
    
  2. Встраивание критических стилей: Инлайнить стили, необходимые для отображения видимой части страницы ("Above the fold"), непосредственно в <head>, используя тег <style>. Это ускоряет первоначальный рендеринг. Остальные стили можно загрузить асинхронно.

    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>My App</title>
      <style>
        /* Критические стили здесь */
        body { margin: 0; padding: 0; }
        h1 { color: blue; }
      </style>
      <link rel="stylesheet" href="/styles/main.css">
      <!-- Остальные теги head -->
    </head>
    
  3. Использование font-display: swap или сходных свойств для шрифтов: Для кастомных шрифтов, которые могут вызывать FOUT (Flash of Unstyled Text), используйте font-display в @font-face правиле CSS. swap позволяет сразу отобразить текст системным шрифтом и заменить его кастомным после загрузки.

    @font-face {
      font-family: 'MyCustomFont';
      src: url('my-custom-font.woff2') format('woff2');
      font-display: swap; /* Или fallback, optional, block */
    }
    
  4. Применение лайтруст-шаблонов (в серверном рендеринге): Если используется серверный рендеринг (SSR), можно встраивать в HTML минимальный набор стилей, необходимый для отображения скелета страницы.

  5. Минимизация и объединение CSS файлов: Уменьшение количества HTTP-запросов и размера CSS файлов ускоряет их загрузку.

  6. Использование инструментов сборки: Webpack, Parcel и другие сборщики могут автоматизировать встраивание критических стилей и оптимизацию CSS.