Como evitar o problema de 'flash de conteúdo sem estilo' (FOUC)?
sobes.tech IA
Resposta da IA
As formas mais eficazes:
-
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> -
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> -
Usar
font-display: swapou propriedades semelhantes para fontes: Para fontes personalizadas que podem causar FOUT (Flash of Unstyled Text), usefont-displayna regra@font-faceem CSS.swappermite 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 */ } -
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.
-
Minimizar e combinar ficheiros CSS: Reduzir o número de pedidos HTTP e o tamanho dos ficheiros CSS acelera o seu carregamento.
-
Usar ferramentas de build: Webpack, Parcel e outros empacotadores podem automatizar a inserção de estilos críticos e otimizar o CSS.