Todos os componentes

MotionZoom

Uma imagem que amplia do lugar até a tela cheia; arraste para fechar.

WebReact NativeSobreposições

Experimente

Preparando o exemplo…

Uso mais curto

Photo.jsx
<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-fit e o raio dos cantos.
  • zoomSrc aparece 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

PropTipoPadrãoDescrição
srcstringA imagem exibida no lugar.
zoomSrcstringUma imagem maior exibida depois de carregar; mantenha a mesma proporção.
marginnumber24Espaço mantido em volta da imagem ampliada, em pixels.
disabledbooleanfalseDesliga o zoom.
onZoomChange(zoomed) => voidRoda com true ao ampliar e false ao fechar.
backdropStyleCSSPropertiesEstilo inline do fundo.
transitionTransitionspringUma 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.

Usado nestes exemplos

Pesquisar

Digite para pesquisar na documentação.