08%
слайдеры

Морф-галерея

Редакционная галерея с мягким morph-переходом из миниатюры в акцентный кадр.

Framer MotionShared layout
Подробнее и перенос

Здесь собраны живое демо, prompt для генерации похожего решения и готовый React-сниппет для переноса в HTML embed или кастомный блок Tilda.

Prompt для GPT
Готовая формулировка для генерации похожего эффекта

Создай современную веб-анимацию «Морф-галерея» для Next.js и React. Нужен эффект: превью из сетки плавно превращаются в полноэкранный hero-кадр. Используй Framer Motion, Shared layout, тёмный премиальный стиль, плавные переходы, адаптивную вёрстку и состояние preview для карточки.

React-компонент

Морф-галерея

'use client';

import { AnimatePresence, motion } from 'framer-motion';
import { useState } from 'react';

const items = ['A', 'B', 'C', 'D', 'E', 'F'];

export function MorphingGallery() {
  const [active, setActive] = useState<string | null>(null);

  return (
    <>
      <div className="grid gap-3 sm:grid-cols-3">
        {items.map((item) => (
          <motion.button key={item} layoutId={item} onClick={() => setActive(item)} className="aspect-square rounded-[20px] bg-neutral-900" />
        ))}
      </div>
      <AnimatePresence>
        {active ? (
          <motion.div layoutId={active} className="fixed inset-10 rounded-[28px] bg-neutral-900" onClick={() => setActive(null)} />
        ) : null}
      </AnimatePresence>
    </>
  );
}