Imagens em HTML e imagens de fundo em CSS

Imagens em HTML ou imagens de fundo em CSS: quando usar cada uma | We.Inc

Escolha entre <img> e background-image, escreva texto alternativo, evite mudança de layout, monte srcset e sizes, use lazy-load e sirva WebP ou AVIF com <picture>.

Imagens em HTML e imagens de fundo em CSS

Use um <img> quando a imagem é conteúdo: uma foto de produto, um gráfico, um retrato. Dê a ele texto alternativo, width e height. Use um background-image em CSS quando a imagem é decoração atrás de um texto. Adicione srcset e sizes para que celulares baixem arquivos menores, e loading="lazy" para imagens abaixo da primeira tela, nunca para a imagem principal.

<img> ou background-image?

Uma tabela de decisão, um gerador de srcset que mostra qual arquivo um celular ou notebook baixaria e exemplos editáveis de cada padrão: texto alternativo, dimensões fixas, lazy loading, uma imagem principal rápida, recorte com object-fit ao lado de background-size, formatos modernos com <picture> e fundos responsivos com image-set().

Perguntas frequentes

background-image é ruim para SEO?

Os buscadores indexam imagens encontradas em elementos <img> de forma muito mais confiável do que as definidas no CSS. Se você quer que uma imagem apareça na busca de imagens ou descreva o seu conteúdo, coloque-a em um <img> com um bom texto alternativo. Fundos decorativos não perdem nada por estar no CSS.

O que o texto alternativo deve dizer?

Diga o que a imagem mostra de relevante naquele contexto, em uma frase curta. Para uma foto de produto, pode ser o produto e a sua cor; para um gráfico, a conclusão principal. Evite expressões como imagem de. Se a imagem for um link, descreva para onde o link leva.

Qual é a diferença entre srcset com w e com x?

Descritores de largura (480w, 960w) listam a largura real de cada arquivo e deixam o navegador escolher usando o atributo sizes e a densidade de pixels da tela. Descritores de densidade (1x, 2x) servem para imagens sempre exibidas em um único tamanho fixo, como um logo.

Ainda devo usar loading="lazy" se uso um framework?

O lazy loading nativo funciona em todos os principais navegadores atuais, então um atributo simples basta para a maioria das imagens. Componentes de imagem de frameworks muitas vezes o adicionam por você; confira se eles não aplicam lazy-load também na imagem principal.

Preciso de WebP e AVIF ao mesmo tempo?

Nem sempre. Os dois formatos têm suporte nos principais navegadores atuais. O AVIF costuma ser menor para fotos, mas é mais lento para codificar. Um elemento <picture> com uma fonte AVIF, uma fonte WebP e um JPEG de reserva atende todo mundo, mas só WebP com um JPEG de reserva é uma escolha mais simples e razoável.

Conteúdo ou decoração

Como o navegador escolhe no srcset

Mudança de layout e a imagem principal

Um <img> completo

alt, width, height e lazy loading

Os atributos dão o tamanho real; o CSS a torna fluida. Por causa de width e height, a caixa é reservada antes de o arquivo carregar. As imagens da demo são pequenos SVGs inline.

A imagem principal: eager e alta prioridade

Use isso na única imagem grande no topo da página. Tudo abaixo da primeira tela recebe loading="lazy" em vez disso.

Regras de texto alternativo

Texto alternativo por tipo de imagem

object-fit: cover ao lado de background-size: cover

Os dois recortam uma imagem para preencher uma caixa sem esticá-la. object-position e background-position escolhem qual parte fica visível.

O mesmo recorte, de duas formas

À esquerda, um <img> com object-fit; à direita, uma div com fundo. Ficam iguais; só a da esquerda tem texto alternativo e lazy loading.

Imagens de fundo em CSS

Um fundo atrás de um texto, com cor de reserva

O gradiente escuro sobreposto mantém o texto branco legível em qualquer foto, e a cor de fundo aparece se a imagem falhar.

Fundos responsivos com image-set()

image-set() deixa o navegador escolher pela densidade de pixels ou pelo tipo de arquivo. Mantenha uma linha url() simples primeiro para navegadores antigos.

WebP e AVIF com <picture>

Formatos modernos com um JPEG de reserva

O navegador usa o primeiro <source> cujo type ele suporta. O <img> dentro dele carrega o texto alternativo, o tamanho e o arquivo de reserva, e é o elemento que você estiliza.

Gerador de srcset e sizes

Larguras que você exporta (px)

Caminho do arquivo sem a largura

Extensão

Com que largura a imagem é desenhada?

Informe pelo menos uma largura.

Copiar

Qual arquivo um dispositivo baixaria?

Celular pequeno

Celular grande

Tablet

Notebook

Notebook Retina

Largura da tela: {vw}px

Densidade de pixels: {dpr}x

A imagem é desenhada com {slot}px de largura, então o navegador precisa de cerca de {px} pixels do dispositivo e normalmente baixaria

nada ainda

(o maior arquivo, que é menor que o ideal: considere exportar um mais largo)

Os navegadores podem escolher um arquivo menor em uma conexão lenta ou um maior que já tenham em cache; isto mostra a escolha habitual.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site