Все компоненты

MotionZoom

Изображение, которое увеличивается со своего места на весь экран; отведите его в сторону, чтобы закрыть.

ВебReact NativeОверлеи

Попробуйте

Подготовка примера…

Кратчайшее использование

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

Что он берёт на себя

  • Клик, Enter или пробел увеличивают изображение с его места до заполнения экрана в пределах margin.
  • Увеличенная копия начинается ровно так, как выглядит миниатюра, с обрезкой object-fit и скруглением углов.
  • zoomSrc плавно появляется, как только загрузится.
  • Клик, Escape или перетаскивание в сторону закрывают его; быстрый бросок тоже закрывает, а короткое перетаскивание пружинит обратно.

Для чего подходит

  • Сетка фотографий.
  • Галерея товаров.
  • Изображения в записи блога.

Props

ПропТипПо умолчаниюОписание
srcstringИзображение, показанное на месте.
zoomSrcstringБолее крупное изображение, показываемое после загрузки; сохраняйте те же пропорции.
marginnumber24Отступ вокруг увеличенного изображения в пикселях.
disabledbooleanfalseОтключает увеличение.
onZoomChange(zoomed) => voidВыполняется с true при увеличении и false при закрытии.
backdropStyleCSSPropertiesВстроенный стиль фона.
transitionTransitionspringКривая timing { duration, easing } или пружина { tempo: 'spring', spring }. При прерывании пружины сохраняют инерцию.

Остальные props передаются отрендеренному элементу, поэтому className, style и обработчики событий работают как обычно.

Веб и React Native

Оверлей существует только во время увеличения (в вебе — dialog в верхнем слое), поэтому изображение может стоять где угодно, даже внутри абзаца. Остальные props передаются img.

В React Native передайте source и zoomSource; оверлей — прозрачный Modal.

Используется в примерах

Поиск

Начните вводить, чтобы искать в документации.