Движение
cb527c5Адаптер Motion использует последовательности DOM-анимаций Motion. Установите общедоступный пакет и Motion:
pnpm add glazejs motion
import glaze from "glazejs"
import { createMotionAdapter } from "glazejs/motion"
import { animate, stagger } from "motion"
const animations = glaze({
adapter: createMotionAdapter({ animate, stagger }),
breakpoints: { md: "(min-width: 768px)" },
defaults: { element: "duration-0.6" },
presets: { rise: "from:opacity-0|y-24" },
})
<div data-animate="preset-rise"></div>
<div data-animate="from:opacity-0 to:opacity-1|x-120"></div>
<div data-animate="@md:from:rotate-180|scale-0.5"></div>
Для этой настройки GSAP не требуется. Основные разбор, значения по умолчанию, селекторы, пресеты, наблюдение и методы жизненного цикла общие для обоих движков.
В объявлениях DOM-типов Motion 14.6 используется тип, предоставляемый @types/react. В проектах TypeScript со строгой проверкой, которая проверяет объявления зависимостей, установите эти типы также как зависимость для разработки. Сам React не требуется:
pnpm add -D @types/react
Добавьте "react" в compilerOptions.types, если конфигурация TypeScript ограничивает наборы глобальных типов.
Поддерживаемые значения
- Свойства DOM Motion с числовыми значениями или строками, включая прозрачность, трансформации и цвета.
from,toи парные состоянияfrom/to. Анимацияfromзавершается естественным стилем элемента, если значениеtoне задано.- Числовые значения
duration,delay,repeatDelayиstaggerв секундах. - Значения элемента
repeatот 0 до 19 и логическое значениеyoyo. Для более длительного или бесконечного повторения используйте повтор временной шкалы. defaults,delay,repeatDelay,repeatиyoyoвременной шкалы;repeat--1временной шкалы повторяется бесконечно.- Числовые позиции на временной шкале, последовательное размещение,
<,>и относительные смещения, например+=0.2,-=0.2и<+=0.2. - Именованные функции плавности Motion,
linear/noneи распространённые имена функций плавности GSAP: отpower0доpower4,sine,expo,circиback, с суффиксами.in,.outили.inOut. - GSAP псевдонимы вращения, например
rotation, сопоставляемый сrotateв Motion.
Например, анимируйте дочерние элементы по очереди с перекрытием:
<div data-animate="tl defaults:duration-0.6">
<div data-animate="from:opacity-0|y-24"></div>
<div data-animate="from:opacity-0|y-24 tl:[-=0.2]"></div>
</div>
Ограничения конкретного движка
Адаптер выдаёт ошибку для настроек, доступных только в GSAP, включая ScrollTrigger,
плагины GSAP, autoAlpha, процентные трансформации, например xPercent, утилиты обратных вызовов,
вложенные объекты attr/css и относительные значения свойств, например x-+=100. Также
не поддерживаются процентные позиции временной шкалы и stagger в форме объекта.
Если нужны эти функции, используйте адаптер GSAP.
Поддержка утилит не означает, что оба движка выполняют интерполяцию одинаково. Воспроизведением анимации и интерполяцией свойств управляет Motion.
Очистка
Используйте animations.refresh() после обновлений DOM или включите watch. При очистке вызывайте
animations.destroy(). Он отменяет воспроизведение Motion, удаляет обработчики медиазапросов и наблюдателей, а также восстанавливает исходные встроенные стили.