Image Zoom
StableClique numa imagem e ela sai da página: a original fica onde está, uma cópia cresce até preencher a viewport sobre um scrim, e um clique, Escape ou um arrasto a devolvem. É um lightbox de uma imagem só — não há galeria, não há próxima nem anterior — e envolve o que receber, então uma `img`, um `svg` ou uma figure ampliam do mesmo jeito. O comportamento é do react-medium-image-zoom; a aparência é da Foundation.
Instalação
npx up-web-ds add image-zoomPreview
Basic

A Test Plate
With Zoom Img
Named In Portuguese
Disabled
Own Backdrop
Around AFigure
Controlled
All states
Basic

A Test Plate
With Zoom Img
Named In Portuguese
Disabled
Own Backdrop
Around AFigure
Controlled
Usage
Props
Estende UncontrolledProps.
prop obrigatória.
Metadata
Notas de acessibilidade
Verificado em tests/e2e/image-zoom.spec.ts no Chromium desktop e mobile, em light e dark, com Axe sem violações WCAG 2.2 AA. Teclado: o botão de ampliar fica recortado por clip-path até receber foco, e então vira um alvo de 40x40 que abre com Enter; Escape fecha. O diálogo é aberto com showModal(), então o foco entra nele e o Tab dá a volta lá dentro sem alcançar a página atrás — verificado percorrendo o ciclo inteiro de tabulação. Leitor de tela: o botão é nomeado pela imagem que abre ("Expand image: <alt>"), a cópia ampliada carrega o mesmo alt, o diálogo é role="dialog" com aria-modal, e os nomes dos dois botões são props para um produto em outra língua. isDisabled deixou de entregar um controle morto: upstream mantinha o botão na página e só parava de responder, e agora não há botão nenhum. O botão de fechar era 0x0 e sem estilo porque a biblioteca porta o diálogo para fora do wrapper onde as regras do upstream viviam; as regras estão no classDialog e ele é um alvo de verdade. Toque verificado em 375px com emulação de toque: a imagem não transborda a viewport, o toque abre a ampliação e o alvo dentro do diálogo atinge 24x24. Reduced motion verificado em navegador com prefers-reduced-motion: reduce — ampliar é a função, então a acomodação leva o tween e não a ampliação: a cópia chega maior, com transition-property: none na imagem e no scrim. A biblioteca lê a duração computada da cópia para saber quando o zoom terminou, então tirar a transição a faz ler 0s e cada transição de estado acontece na hora, sem deixar o diálogo preso.
Classificação
- Layer
- Component
- Domínio
- Application
- Categoria
- data-display
- Status
- Stable
Origem e distribuição
- Fonte
- kibo registry / image-zoom
- Licença
- MIT
- Distribuição
- Interna
Acessibilidade
- Teclado: revisado
- Leitor de tela: revisado
- Touch: revisado
- Reduced motion: revisado
Dependências
- Pacotes
- react-medium-image-zoom
- Ícones
- Nenhum
- Construído sobre
- Nenhum
- Usado por
- Nenhum ainda