MotionZoom
Изображение, которое увеличивается со своего места на весь экран; отведите его в сторону, чтобы закрыть.
ВебReact NativeОверлеи
Попробуйте
Подготовка примера…
Кратчайшее использование
<MotionZoom
src={photo.thumb}
zoomSrc={photo.full}
width={240}
height={160}
style={{ objectFit: 'cover', borderRadius: 12 }}
/>;Что он берёт на себя
- Клик, Enter или пробел увеличивают изображение с его места до заполнения экрана в пределах
margin. - Увеличенная копия начинается ровно так, как выглядит миниатюра, с обрезкой
object-fitи скруглением углов. zoomSrcплавно появляется, как только загрузится.- Клик, Escape или перетаскивание в сторону закрывают его; быстрый бросок тоже закрывает, а короткое перетаскивание пружинит обратно.
Для чего подходит
- Сетка фотографий.
- Галерея товаров.
- Изображения в записи блога.
Props
| Проп | Тип | По умолчанию | Описание |
|---|---|---|---|
src | string | Изображение, показанное на месте. | |
zoomSrc | string | Более крупное изображение, показываемое после загрузки; сохраняйте те же пропорции. | |
margin | number | 24 | Отступ вокруг увеличенного изображения в пикселях. |
disabled | boolean | false | Отключает увеличение. |
onZoomChange | (zoomed) => void | Выполняется с true при увеличении и false при закрытии. | |
backdropStyle | CSSProperties | Встроенный стиль фона. | |
transition | Transition | spring | Кривая timing { duration, easing } или пружина { tempo: 'spring', spring }. При прерывании пружины сохраняют инерцию. |
Остальные props передаются отрендеренному элементу, поэтому className, style и обработчики событий работают как обычно.
Веб и React Native
Оверлей существует только во время увеличения (в вебе — dialog в верхнем слое), поэтому изображение может стоять где угодно, даже внутри абзаца. Остальные props передаются img.
В React Native передайте source и zoomSource; оверлей — прозрачный Modal.