動き
Motionアダプターは、MotionのDOMアニメーションシーケンスを使用します。公開パッケージと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は必要ありません。コアの解析、デフォルト値、セレクター、プリセット、監視機能、ライフサイクルメソッドは、どちらのエンジンでも共通です。
Motion 14.6のDOM型宣言は、@types/reactが提供する型を参照します。依存関係の宣言も検査する厳格なTypeScriptプロジェクトでは、その型も開発用依存関係としてインストールしてください。React自体は必要ありません。
pnpm add -D @types/react
TypeScriptの設定でグローバルな型パッケージが制限されている場合は、"react"をcompilerOptions.typesに含めてください。
サポートする値
- 数値または文字列の値を持つMotionのDOMプロパティ。opacity、transform、色など。
from、to、および対になるfrom/toの状態。toの値が指定されていない場合、fromアニメーションは要素本来のスタイルで終了します。- 秒単位の数値
duration、delay、repeatDelay、staggerの値。 - 0〜19の要素
repeatの値と、真偽値のyoyo。長時間または無限の繰り返しには、タイムラインのrepeatを使用してください。 - タイムラインの
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はMotionのrotateに対応します。
たとえば、重なりを設けて子要素を順番にアニメーションさせます。
<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のようなパーセント指定のtransform、コールバックユーティリティ、ネストしたattr/cssオブジェクト、x-+=100のような相対プロパティ値が含まれます。パーセントベースのタイムライン位置とオブジェクト形式のstaggerもサポートされません。これらの機能が必要な場合は、GSAPアダプターを使用してください。
ユーティリティがサポートされていても、2つのエンジンで補間の動作が同じとは限りません。Motionがアニメーションの再生とプロパティの補間を担います。
クリーンアップ
DOMの更新後にanimations.refresh()を使用するか、watchを有効にしてください。破棄時にはanimations.destroy()を呼び出してください。Motionの再生をキャンセルし、メディアクエリのリスナーとオブザーバーを削除して、元のインラインスタイルを復元します。