MotionZoom
Une image qui s’agrandit depuis sa place jusqu’au plein écran ; faites-la glisser pour la fermer.
WebReact NativeSuperpositions
Essayer
Préparation de l’exemple…
Usage minimal
<MotionZoom
src={photo.thumb}
zoomSrc={photo.full}
width={240}
height={160}
style={{ objectFit: 'cover', borderRadius: 12 }}
/>;Ce qu’il gère pour vous
- Un clic, Entrée ou Espace agrandit l’image depuis sa position jusqu’à remplir l’écran dans les limites de
margin. - La copie agrandie commence exactement comme la vignette, avec son recadrage
object-fitet son rayon d’angle. zoomSrcapparaît en fondu une fois chargée.- Un clic, Échap ou un glisser la referme ; un lancer rapide aussi, et un glisser court revient avec un ressort.
À utiliser pour
- Une grille de photos.
- Une galerie de produits.
- Des images dans un article de blog.
Props
| Prop | Type | Défaut | Description |
|---|---|---|---|
src | string | L’image affichée en place. | |
zoomSrc | string | Une image plus grande affichée une fois chargée ; gardez le même rapport d’aspect. | |
margin | number | 24 | Espace conservé autour de l’image agrandie, en pixels. |
disabled | boolean | false | Désactive le zoom. |
onZoomChange | (zoomed) => void | S’exécute avec true à l’agrandissement et false à la fermeture. | |
backdropStyle | CSSProperties | Style en ligne du fond. | |
transition | Transition | spring | Une courbe de temps { duration, easing } ou un ressort { tempo: 'spring', spring }. Les ressorts gardent leur élan quand ils sont interrompus. |
Les autres props vont à l’élément rendu : className, style et les gestionnaires d’événements fonctionnent comme d’habitude.
Web et React Native
La superposition n’existe que pendant le zoom (un dialog de la couche supérieure sur le web) : l’image peut donc se trouver n’importe où, même dans un paragraphe. Les autres props vont à l’img.
Sur React Native, passez source et zoomSource ; la superposition est un Modal transparent.