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
<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-fity su radio de esquina. zoomSrcaparece 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
| Prop | Tipo | Por defecto | Descripción |
|---|---|---|---|
src | string | La imagen que se muestra en su sitio. | |
zoomSrc | string | Una imagen más grande que se muestra cuando ha cargado; mantén la misma proporción. | |
margin | number | 24 | Espacio que se deja alrededor de la imagen ampliada, en píxeles. |
disabled | boolean | false | Desactiva el zoom. |
onZoomChange | (zoomed) => void | Se ejecuta con true al ampliar y con false al cerrar. | |
backdropStyle | CSSProperties | Estilo en línea del fondo. | |
transition | Transition | spring | Una 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.