Todos los componentes

MotionZoom

Una imagen que se amplía desde su sitio a pantalla completa; arrástrala para cerrarla.

WebReact NativeSuperposiciones

Pruébalo

Preparando el ejemplo…

Uso mínimo

Photo.jsx
<MotionZoom
  src={photo.thumb}
  zoomSrc={photo.full}
  width={240}
  height={160}
  style={{ objectFit: 'cover', borderRadius: 12 }}
/>;

Lo que resuelve por ti

  • Un clic, Intro o Espacio amplía la imagen desde donde está hasta llenar la pantalla dentro de margin.
  • La copia ampliada empieza exactamente con el aspecto de la miniatura, con su recorte object-fit y su radio de esquina.
  • zoomSrc aparece con un fundido cuando ha cargado.
  • Un clic, Escape o arrastrarla la cierran; un lanzamiento rápido también, y un arrastre corto vuelve con un resorte.

Úsalo para

  • Una cuadrícula de fotos.
  • Una galería de productos.
  • Imágenes dentro de una entrada de blog.

Props

PropTipoPor defectoDescripción
srcstringLa imagen que se muestra en su sitio.
zoomSrcstringUna imagen más grande que se muestra cuando ha cargado; mantén la misma proporción.
marginnumber24Espacio que se deja alrededor de la imagen ampliada, en píxeles.
disabledbooleanfalseDesactiva el zoom.
onZoomChange(zoomed) => voidSe ejecuta con true al ampliar y con false al cerrar.
backdropStyleCSSPropertiesEstilo en línea del fondo.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.

Las demás props van al elemento renderizado, así que className, style y los manejadores de eventos funcionan como siempre.

Web y React Native

La superposición solo existe mientras hay zoom (un dialog de la capa superior en la web), así que la imagen puede estar en cualquier sitio, incluso dentro de un párrafo. Las demás props van al img.

En React Native pasa source y zoomSource; la superposición es un Modal transparente.

Se usa en estos ejemplos

Buscar

Escribe para buscar en la documentación.