Sobes.tech
Middle

Como evitar o problema de 'flash de conteúdo sem estilo' (FOUC)?

sobes.tech IA

Resposta da IA

As formas mais eficazes:

  1. Carregamento síncrono de CSS: Coloque <link rel="stylesheet"> no <head> do documento para que o navegador carregue e aplique os estilos antes do render do conteúdo.

    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Minha App</title>
      <link rel="stylesheet" href="/styles/main.css">
      <!-- Outras tags no head -->
    </head>
    
  2. Incorporar estilos críticos: Inserir estilos necessários para mostrar a parte visível da página ("Above the fold") diretamente no <head> usando <style>. Isto acelera o render inicial. Os outros estilos podem ser carregados de forma assíncrona.

    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Minha App</title>
      <style>
        /* Estilos críticos aqui */
        body { margin: 0; padding: 0; }
        h1 { color: blue; }
      </style>
      <link rel="stylesheet" href="/styles/main.css">
      <!-- Outras tags no head -->
    </head>
    
  3. Usar font-display: swap ou propriedades semelhantes para fontes: Para fontes personalizadas que podem causar FOUT (Flash of Unstyled Text), use font-display na regra @font-face em CSS. swap permite mostrar imediatamente o texto com a fonte do sistema e substituí-la pela personalizada após o carregamento.

    @font-face {
      font-family: 'MyCustomFont';
      src: url('my-custom-font.woff2') format('woff2');
      font-display: swap; /* Ou fallback, opcional, block */
    }
    
  4. Aplicar modelos leves (no renderizado do servidor): Se usar renderização no servidor (SSR), pode inserir no HTML um conjunto mínimo de estilos necessários para mostrar o esqueleto da página.

  5. Minimizar e combinar ficheiros CSS: Reduzir o número de pedidos HTTP e o tamanho dos ficheiros CSS acelera o seu carregamento.

  6. Usar ferramentas de build: Webpack, Parcel e outros empacotadores podem automatizar a inserção de estilos críticos e otimizar o CSS.