Menu

Imagem em HTML: como inserir com img, alt e tamanho

Como inserir uma imagem no HTML com a tag <img>: src e alt, definir o tamanho com width e height, imagens responsivas, recorte com object-fit, legendas com figure, lazy loading e o espaço embaixo das imagens.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

Como inserir uma imagem no HTML

Use o elemento <img>. src é o arquivo da imagem, alt a descreve, e width e height dão o tamanho em pixels. <img> é um elemento vazio: não tem tag de fechamento.

O src aqui é um SVG pequeno escrito dentro da URL (uma data URI) para que o exemplo funcione offline. Num site real, src é um caminho para um arquivo:

srcCarrega
photo.jpgphoto.jpg na mesma pasta do arquivo HTML
images/photo.jpgDa pasta images ao lado do arquivo HTML
../photo.jpgDe uma pasta acima
/images/photo.jpgDa pasta images na raiz do site
https://example.com/photo.jpgDe outro site (a imagem pode mudar de lugar ou sumir)

Os caminhos diferenciam maiúsculas de minúsculas na maioria dos servidores web: Photo.JPG e photo.jpg são arquivos diferentes.

Texto alternativo

O texto de alt substitui a imagem. Os leitores de tela o leem em voz alta, e o navegador o mostra quando a imagem não carrega. As duas imagens aqui apontam para arquivos que não existem:

A primeira mostra o seu texto alternativo, "Coddy logo", onde a imagem deveria estar. A segunda tem um alt vazio, então não há texto para mostrar, e os leitores de tela a ignoram. Como escrever o alt:

  • Descreva o que importa no contexto. "Gráfico de barras: as vendas dobraram de março a junho" diz mais que "gráfico".
  • Não comece com "Imagem de". Os leitores de tela já anunciam que é uma imagem.
  • Use alt="" para decoração (um divisor, um enfeite de fundo) para que os leitores de tela a ignorem.
  • Nunca deixe o alt de fora. Sem ele, alguns leitores de tela leem o nome do arquivo, algo como "IMG underline 4032 ponto jpg".
  • Para uma imagem dentro de um link, descreva o destino: <a href="/"><img src="logo.svg" alt="Home"></a>.

Definindo o tamanho da imagem

Os atributos width e height são em pixels, sem unidade. Tamanhos definidos no CSS os substituem. O CSS mais útil para imagens é este par, que deixa a imagem encolher junto com o contêiner mas nunca esticar além da largura natural:

A primeira imagem mantém os seus 300 pixels e sai da caixa de 180 pixels. A segunda diminui para 180 por 120, mantendo a proporção 3:2. height: auto faz diferença: sem ele, o atributo height="200" manteria a imagem com 200 pixels de altura e a achataria.

Sempre escreva width e height no HTML, mesmo em imagens responsivas. O navegador os usa para reservar o espaço certo antes de o arquivo chegar, e o texto abaixo não pula quando a imagem carrega.

Recortando com object-fit

Quando uma imagem precisa preencher uma caixa de outro formato (um avatar quadrado a partir de uma foto larga, cards da mesma altura), object-fit decide o que acontece com o que sobra:

A origem é uma imagem 2:1 de um círculo, mostrada em caixas quadradas:

  • fill (o padrão) estica a imagem até a caixa, então o círculo vira uma oval.
  • contain encaixa a imagem inteira dentro, deixando faixas vazias.
  • cover preenche a caixa e corta o excesso, mantendo o círculo redondo. É a escolha comum para miniaturas e avatares.

object-position escolhe qual parte fica visível no recorte, por exemplo object-position: top para retratos.

Legendas com figure e figcaption

Uma legenda que pertence a uma imagem vai em <figcaption>, e as duas vão dentro de <figure>. Isso as liga para os leitores de tela, e a figura pode ser estilizada como uma unidade:

A legenda não substitui o alt. O alt diz o que a imagem mostra; a legenda acrescenta o que um leitor que enxerga também precisaria saber.

O espaço embaixo de uma imagem

Uma imagem fica na linha de base do texto, como uma letra, então o contêiner deixa espaço embaixo dela para as partes descendentes de letras como g e y. Uma borda deixa o espaço visível:

A primeira borda tem uma faixa branca embaixo da imagem azul. display: block na imagem (segunda caixa) a remove; vertical-align: middle também, se a imagem precisar continuar inline.

Lazy loading e fontes responsivas

Para imagens mais abaixo numa página longa, loading="lazy" adia o download até o leitor rolar para perto delas:

<img src="gallery-7.jpg" alt="Harbor at dusk" width="800" height="533" loading="lazy">

Não use lazy loading na imagem principal do topo da página; isso atrasa a parte da página que o leitor vê primeiro.

Para enviar arquivos menores a telas pequenas, liste vários tamanhos em srcset e diga ao navegador com que largura a imagem será exibida com sizes. O navegador escolhe o arquivo:

<img
  src="photo-800.jpg"
  srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1600.jpg 1600w"
  sizes="(max-width: 600px) 100vw, 600px"
  alt="Harbor at dusk" width="800" height="533">

<picture> vai além e oferece formatos diferentes, com o <img> como alternativa, que também carrega o alt:

<picture>
  <source srcset="photo.avif" type="image/avif">
  <source srcset="photo.webp" type="image/webp">
  <img src="photo.jpg" alt="Harbor at dusk" width="800" height="533">
</picture>

Formatos de imagem

FormatoBom para
JPEGFotos
PNGCapturas de tela, imagens que precisam de bordas nítidas ou transparência
WebPFotos e gráficos, menor que JPEG e PNG, com transparência
AVIFFotos, normalmente menor que WebP
SVGLogos, ícones e diagramas; escala para qualquer tamanho sem borrar
GIFAnimações curtas, embora um <video> mudo em loop seja bem menor

Erros comuns

  • Um caminho do seu próprio computador, como src="C:\Users\me\photo.jpg". Só funciona na sua máquina. Coloque o arquivo ao lado do HTML e use um caminho relativo.
  • Falta de alt. Todo <img> precisa de um, vazio para decoração.
  • Definir width e height no CSS com valores de outra proporção. A imagem estica. Defina um e deixe o outro em auto, ou use object-fit.
  • Sem os atributos width e height, então a página pula enquanto as imagens carregam.
  • Arquivos enormes reduzidos com CSS. Uma foto de 4000 pixels exibida com 400 pixels ainda é baixada inteira. Redimensione, ou use srcset.
  • Uma tag de fechamento </img>. <img> é vazia; não há nada para fechar.

As imagens dos exemplos acima são pequenos SVGs inline. Para testar o mesmo código com as suas fotos, cole-o no playground de HTML.

Perguntas frequentes

Como inserir uma imagem no HTML?

Use a tag <img> com o arquivo em src e uma descrição em alt: <img src="photo.jpg" alt="A red bicycle" width="600" height="400">. <img> não tem tag de fechamento.

Como mudar o tamanho de uma imagem no HTML?

Defina os atributos width e height em pixels, ou use CSS como img { width: 300px; height: auto; }. Definir só uma dimensão e deixar a outra em auto mantém as proporções.

Por que minha imagem não aparece no HTML?

Normalmente o caminho em src está errado: ele é relativo ao arquivo HTML, os nomes de arquivo diferenciam maiúsculas de minúsculas na maioria dos servidores, e um caminho como C:\photos\cat.jpg só existe no seu computador. Abra a URL da imagem direto no navegador para conferir.

O que é o texto alternativo (alt) no HTML?

O atributo alt é um texto que substitui a imagem. Os leitores de tela o leem, e os navegadores o mostram quando a imagem não carrega. Descreva o que a imagem mostra ou faz; use alt="" para imagens só decorativas.

Como deixar uma imagem responsiva?

Adicione max-width: 100%; height: auto; a ela no CSS. A imagem então encolhe para caber num contêiner estreito e nunca cresce além da sua largura natural.

Por que tem um espaço embaixo da minha imagem?

Imagens são inline por padrão e ficam na linha de base do texto, o que deixa espaço embaixo para as partes descendentes das letras. Defina display: block na imagem, ou vertical-align: middle, para remover o espaço.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR