Carregamento tardio de imagens loading=lazy
Adie imagens fora da tela com o atributo nativo loading.
Carregamento tardio de imagens loading=lazy é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.
O atributo loading
<img loading="lazy" src="..."> informa ao navegador que deve adiar o download da imagem até que ela esteja prestes a entrar na janela de visualização. O suporte nativo em todos os navegadores modernos torna essa a maneira mais simples de obter um ganho de desempenho em páginas com muitas imagens.
Como é definido “próximo da janela de visualização”
Os navegadores usam uma pequena margem heurística, geralmente alguns milhares de pixels abaixo da dobra. A imagem começa a carregar com antecedência suficiente para estar totalmente renderizada quando o usuário rolar até ela — o carregamento lento é imperceptível para quem rola a página com atenção.
Quando não usar carregamento lento
Nunca defina loading="lazy" em imagens acima da dobra ou na imagem candidata a LCP (maior pintura de conteúdo). O carregamento adiado atrasa o elemento visual mais importante, prejudicando tanto a velocidade percebida quanto as métricas essenciais da Web.
Largura e altura são obrigatórias
Para que o carregamento lento seja eficaz, atribua ao <img> valores explícitos de width e height (ou use a propriedade CSS aspect-ratio). Sem dimensões, o navegador não consegue reservar espaço, a rolagem faz o layout ser recalculado e a heurística de carregamento lento não funciona corretamente.
<img loading="lazy" src="cat.jpg" width="800" height="600" alt="A cat">Carregamento lento de iframe
O mesmo atributo funciona em <iframe>. <iframe loading="lazy"> adia o carregamento de mapas, vídeos e incorporações de redes sociais abaixo da dobra — cada um deles, caso contrário, carregaria megabytes de JavaScript de terceiros a cada visualização da página.
eager é o padrão
O valor padrão é loading="eager" (carregar imediatamente) e raramente é escrito de forma explícita. Definir eager em imagens acima da dobra pode ser útil como documentação, indicando aos revisores que essa escolha foi deliberada.
Combine com srcset
O carregamento lento combina perfeitamente com imagens responsivas. O navegador continua escolhendo a opção adequada em srcset; apenas adia a transferência. Não é necessária nenhuma coordenação adicional entre loading="lazy" e srcset.
<img
loading="lazy"
srcset="img-400.jpg 400w, img-800.jpg 800w, img-1200.jpg 1200w"
sizes="(min-width: 768px) 800px, 100vw"
src="img-800.jpg"
alt="Hero"
width="800" height="600"
>Dica de decodificação
Combine o carregamento lento com decoding="async" para permitir que o navegador decodifique a imagem fora da thread principal. Isso evita bloquear a entrada durante a rolagem quando muitas imagens chegam simultaneamente após uma longa sequência de rolagem.
Imagens de plano de fundo
background-image do CSS não pode ser carregado lentamente de forma nativa. Para planos de fundo hero acima da dobra, isso não é um problema; para planos de fundo abaixo da dobra, use IntersectionObserver para inserir o endereço quando o elemento se aproximar da janela de visualização.
Comportamento na impressão
Quando a página é impressa, o navegador carrega imediatamente todas as imagens, independentemente de loading="lazy", para que a cópia impressa fique completa. Não é necessário tratar imagens com carregamento lento de forma especial nas folhas de estilo para impressão.
Medição da economia
A auditoria “Adiar imagens fora da tela” do Lighthouse lista todas as imagens que deveriam usar loading="lazy". Filtrar o painel de rede por “Imagem” e usar a visualização “Cascata” mostra os carregamentos escalonados produzidos pelo carregamento lento — as solicitações iniciais diminuem drasticamente em galerias de imagens.
Verificação de conhecimento
Por que é prejudicial definir loading="lazy" em uma imagem hero no topo da página?
Resumo
Usar loading="lazy" em elementos <img> e <iframe> fora da tela é um ganho de desempenho obtido com um único atributo. Combine-o com width/height explícitos (para reservar espaço), srcset (para obter responsividade) e decoding="async" (para manter a rolagem fluida). Nunca o aplique à imagem LCP nem a qualquer elemento visível na janela de visualização inicial.
Perguntas Frequentes
A aula “Carregamento tardio de imagens loading=lazy” é grátis?
Sim — o texto completo de “Carregamento tardio de imagens loading=lazy” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.
O que vou aprender em “Carregamento tardio de imagens loading=lazy”?
Adie imagens fora da tela com o atributo nativo loading. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar HTML Academy?
Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Carregamento tardio de imagens loading=lazy”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de HTML Academy?
Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Os atributos async e defer
- Preload, Prefetch e Preconnect
- Carregamento tardio de imagens loading=lazy
- Dicas de recursos: modulepreload