Pular para o conteúdo
// visualizar em
salvo em todas as páginas

Image

Imagem — mostra uma foto numa moldura, com legenda opcional, um skeleton durante o carregamento e um substituto que mantém o layout quando o arquivo não carrega.

Padrão HTML figure + imgComponente clienteCódigo ↗

Instalação

Configure o Camaleo uma vez (Instalação) e importe o componente. Ele é um componente de cliente, porque observa o evento de erro da imagem.

import { Image } from "@camaleo/react";

Anatomia

Uma <figure> enquanto a imagem funciona, e uma <div> no lugar dela quando falha. style e className vão para o elemento de fora; todas as outras props vão para a <img>.

Quando falha, o substituto padrão toma o lugar da figura inteira:

Exemplos

Cada exemplo é um arquivo real que você pode copiar. Todos usam o estilo, o modo e a cor escolhidos na barra acima.

minimal · light · #3fa34d
Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde, com o sol baixo à direita
Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde, com o sol baixo à direita
Serra da Bocaina ao entardecerFoto: Ana Lima

Legenda e crédito

caption vira uma <figcaption> que o leitor de tela liga à imagem; coloque o crédito ou o tamanho do arquivo em captionMeta.

Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde, com o sol baixo à direita
Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde, com o sol baixo à direita

Tamanho e corte

width e height reservam o espaço antes de o arquivo chegar; um aspectRatio no style corta a mesma foto em 16:9 ou 1:1 com object-fit: cover.

Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde, com o sol baixo à direita

Skeleton de carregamento

Ligue loadingState enquanto espera o arquivo e desligue no onLoad; o componente não desliga sozinho.

Não foi possível carregar a foto de capa

capa-serra-da-bocaina.jpg

Quando o arquivo falha

O substituto padrão mantém a moldura e mostra o nome do arquivo. Ele recebe role="img" e o alt como nome, então o leitor de tela ainda diz o que deveria estar ali.

A foto não carregou

A conexão caiu. O arquivo continua no servidor.

Substituto com nova tentativa

Clique em Tentar de novo. Um fallback próprio pode ter controles, e recebe role="group" para eles continuarem acessíveis; depois da nova tentativa, o foco fica na caixa e uma mensagem de status confirma.

Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde, com o sol baixo à direita

Os três estados

Alterne entre carregada, carregando e com erro. O estado de erro só é lido na montagem, então troque a key quando precisar reiniciá-lo.

Boas-vindas ao escritório do Rio

Rua da Assembleia, 10, 18º andar. A recepção abre às 8h.

Imagem decorativa

Use alt="" só quando o texto ao lado já diz tudo. O alt é vazio por padrão, então uma foto sem alt também some para o leitor de tela.

Em contexto

Imagens costumam ficar no topo de um card ou numa grade de miniaturas. São pedaços inteiros de interface para copiar, no estilo que você escolheu.

Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde, com o sol baixo à direita
Foto: Ana Lima
Viagem

Três dias de trilha na Serra da Bocaina

Ana Lima · 28/10/2026 · 6 min de leitura

Card de artigoCard · Image · Badge
Teclado mecânico com teclas escuras e a tecla Enter verde, visto de cima

Teclado mecânico K2

R$ 789,00

Card de produtoCard · Image · Button

Biblioteca de mídia

3 arquivos · Campanha “Serra 2026”

Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde, com o sol baixo à direita
serra-entardecer.jpg2,4 MB
Pequeno veleiro num mar azul e calmo ao meio-dia
veleiro.jpg1,1 MB

Arquivo não encontrado

foto-da-equipe.jpg

Biblioteca de mídiaCard · Image

Boas práticas

Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde
alt="Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde"
FaçaDescreva o que a imagem mostra.

Diga o que importa neste contexto, numa frase, como você contaria para alguém ao telefone.

imagem.png
alt="imagem.png"
EviteNome do arquivo como alt.

O leitor de tela já diz "imagem", e "imagem.png" não conta nada sobre o conteúdo.

Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde, com o sol baixo à direita
Pequeno veleiro num mar azul e calmo ao meio-dia
Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde
FaçaUma proporção por grade.

Dê a todas as miniaturas o mesmo aspectRatio, para as linhas se alinharem seja qual for o formato de cada foto.

Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde, com o sol baixo à direita
Pequeno veleiro num mar azul e calmo ao meio-dia
Duas fileiras de montanhas verdes sob um céu laranja de fim de tarde
EviteCada imagem numa proporção.

A linha fica torta, e o olho segue os buracos em vez das fotos.

Props

PropriedadeTipoPadrãoDescrição
fallbackReactNode—Substitui o substituto padrão quando a imagem falha, por exemplo com um botão de nova tentativa. Fica dentro de um role="group" com o nome do alt.
fallbackTitleReactNode"Failed to load image"Título do substituto padrão.
fallbackSubtitleReactNode—Segunda linha do substituto padrão, como o nome do arquivo. Sem ela, mostra o src.
captionReactNode—Texto abaixo da imagem, renderizado como <figcaption>.
captionMetaReactNode—Texto secundário no fim da linha da legenda, como um crédito ou o tamanho do arquivo.
defaultErrorbooleanfalseComeça no estado de erro. Só é lido na montagem: troque a key para reiniciar.
loadingStatebooleanfalseCobre a imagem com um skeleton. Você controla: desligue no onLoad.
onLoadReact.ReactEventHandler<HTMLImageElement>—Roda quando o arquivo carrega. Desligue o loadingState aqui.
onErrorReact.ReactEventHandler<HTMLImageElement>—Roda quando o arquivo falha; em seguida o substituto toma o lugar dele.
altstring—O que a imagem mostra. Também dá nome ao substituto. O padrão é "", que marca a imagem como decorativa.
heightstring | number—Altura do arquivo. Com width, o navegador reserva o espaço antes de carregar.
srcstring—O arquivo a mostrar. Sem ele, o substituto aparece na hora.
widthstring | number—Largura do arquivo. Com height, o navegador reserva o espaço antes de carregar.

style e className vão para a <figure> de fora ou para o substituto; um aspectRatio ou uma altura ali corta a imagem. Todos os outros atributos de <img>, como loading="lazy" ou srcSet, vão para a imagem.

Styling hooks

Mude o visual sem copiar o componente: use os slots ou defina os tokens num elemento pai, num estilo ou na própria imagem.

Atributos

data-loadingem image, enquanto loadingState está ligado

Tokens que ele lê

Cor

--cml-border--cml-border-control--cml-card-border--cml-card-shadow--cml-fg--cml-fg-secondary--cml-surface--cml-surface-raised

Forma e tamanho

--cml-border-width--cml-radius-popover

Só deste componente

--cml-corner-shape

Acessibilidade

TabA imagem não é parada de Tab. O Tab só chega aos controles dentro de um substituto próprio, como Tentar de novo.

Relacionados

Esta página foi útil? · Editar esta página no GitHub