MotionZoom
Un’immagine che si ingrandisce dal suo posto a schermo intero; trascinala via per chiuderla.
WebReact NativeOverlay
Provalo
Preparazione dell’esempio…
L’uso più breve
<MotionZoom
src={photo.thumb}
zoomSrc={photo.full}
width={240}
height={160}
style={{ objectFit: 'cover', borderRadius: 12 }}
/>;Di che cosa si occupa al posto tuo
- Un clic, Invio o Spazio ingrandisce l’immagine da dove si trova fino a riempire lo schermo entro
margin. - La copia ingrandita parte esattamente com’è la miniatura, con il ritaglio di
object-fite il raggio degli angoli. zoomSrccompare in dissolvenza appena è caricata.- Un clic, Esc o un trascinamento la chiudono; la chiude anche un lancio rapido, mentre un trascinamento breve torna indietro con una molla.
Usalo per
- Una griglia di foto.
- Una galleria di prodotti.
- Immagini dentro un articolo del blog.
Props
| Prop | Tipo | Predefinito | Descrizione |
|---|---|---|---|
src | string | L’immagine mostrata al suo posto. | |
zoomSrc | string | Un’immagine più grande mostrata appena è caricata; mantieni le stesse proporzioni. | |
margin | number | 24 | Spazio lasciato attorno all’immagine ingrandita, in pixel. |
disabled | boolean | false | Disattiva lo zoom. |
onZoomChange | (zoomed) => void | Viene eseguito con true quando è ingrandita e con false quando si chiude. | |
backdropStyle | CSSProperties | Stile inline per lo sfondo. | |
transition | Transition | spring | Una curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte. |
Le altre props vanno all’elemento renderizzato, quindi className, style e gli event handler funzionano come sempre.
Web e React Native
L’overlay esiste solo durante lo zoom (sul web, una dialog nel top layer), quindi l’immagine può stare ovunque, anche dentro un paragrafo. Le altre props vanno all’img.
Su React Native passa source e zoomSource; l’overlay è un Modal trasparente.