MotionZoom
Uma imagem que amplia do lugar até a tela cheia; arraste para fechar.
WebReact NativeSobreposições
Experimente
Preparando o exemplo…
Uso mais curto
<MotionZoom
src={photo.thumb}
zoomSrc={photo.full}
width={240}
height={160}
style={{ objectFit: 'cover', borderRadius: 12 }}
/>;O que ele resolve para você
- Um clique, Enter ou Espaço amplia a imagem de onde ela está até preencher a tela dentro de
margin. - A cópia ampliada começa exatamente como a miniatura, com o recorte
object-fite o raio dos cantos. zoomSrcaparece com fade quando termina de carregar.- Um clique, Escape ou arrastar fecha; um arremesso rápido também, e um arraste curto volta com uma mola.
Use para
- Uma grade de fotos.
- Uma galeria de produtos.
- Imagens dentro de um post de blog.
Props
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
src | string | A imagem exibida no lugar. | |
zoomSrc | string | Uma imagem maior exibida depois de carregar; mantenha a mesma proporção. | |
margin | number | 24 | Espaço mantido em volta da imagem ampliada, em pixels. |
disabled | boolean | false | Desliga o zoom. |
onZoomChange | (zoomed) => void | Roda com true ao ampliar e false ao fechar. | |
backdropStyle | CSSProperties | Estilo inline do fundo. | |
transition | Transition | spring | Uma curva de tempo { duration, easing } ou uma mola { tempo: 'spring', spring }. As molas mantêm o embalo quando interrompidas. |
As outras props vão para o elemento renderizado, então className, style e handlers de eventos funcionam normalmente.
Web e React Native
A sobreposição só existe durante o zoom (um dialog na camada superior na web), então a imagem pode ficar em qualquer lugar, até dentro de um parágrafo. As outras props vão para o img.
No React Native, passe source e zoomSource; a sobreposição é um Modal transparente.