Motion

Motionは、MotionにYamada UIのStyle Propsを拡張した便利なコンポーネントです。

使い方

import { Motion } from "@yamada-ui/react"
  • initial: コンポーネントの初期状態。
  • animate: コンポーネントがマウントされた時や更新された時に実行されるアニメーション。
  • exit: コンポーネントがアンマウントされた時に実行されるアニメーション。
  • transition: 所用時間や遅延時間を設定するオブジェクト。

バリアント

バリアントを設定すると、動的なアニメーションの実装に便利です。他にもアニメーションをオーケストレーションすることも可能です。

Look at me!

AnimatePresenceを使う

Reactでは、コンポーネントがアンマウントされた時、アニメーションは維持されません。AnimatePresenceを使用することで、アニメーションが終了するまでコンポーネントはアンマウントされません。

キーフレーム

値を配列にすることで、キーフレームを設定できます。各フレームは、均等な間隔で処理されます。transitiontimesに間隔を設定した配列を設定するとオーバーライドできます。

ジェスチャー

ホバークリック・タップフォーカスを検出し、アニメーションを実行することができます。

ホバー

  • whileHover: ポインターがコンポーネント上を移動したときに実行されるアニメーション。
  • onHoverStart: ポインターがコンポーネント上を移動したときに実行されるコールバック関数。
  • onHoverEnd: ポインターがコンポーネントから離れたときに実行されるコールバック関数。
Hover me!

クリック・タップ

  • whileTap: ポインターがコンポーネントをクリックまたはタップしたときに実行されるアニメーション。
  • onTapStart: ポインターがコンポーネントを押し始めたときに実行されるコールバック関数。
  • onTap: ポインターがコンポーネントの押し下げをキャンセルし、コンポーネント内でポインターが解放されたときに実行されるコールバック関数。
  • onTapCancel: ポインターがコンポーネントの押し下げをキャンセルし、コンポーネント外でポインターが解放されたときに実行されるコールバック関数。
Click and Tap me!

フォーカス

  • whileFocus: コンポーネントがフォーカスされたときに実行されるアニメーション。
Focus me!

ドラッグ

コンポーネントのドラッグを有効にする場合は、dragtrueに設定します。または"x"または"y"を設定することで、x軸またはy軸のみを追従します。

  • whileDrag: コンポーネントがドラッグされたときに実行されるアニメーション。
  • onDrag: コンポーネントがドラッグ中に実行されるコールバック関数。
  • onDragStart: コンポーネントがドラッグを開始したときに実行されるコールバック関数。
  • onDragEnd: コンポーネントがドラッグを終了したときに実行されるコールバック関数。
Drag me!
Only X
Only Y

可能領域を制限する

可能領域を制限する場合は、dragConstraintstopbottomleftrightに値(ピクセル)を設定します。

Only Right & Bottom

または、refを設定することで可能領域を制限することも可能です。

Drag me!

弾力を設定する

弾力を設定する場合は、dragElasticに真偽値・数値またはtopbottomleftrightごとに値(ピクセル)を設定したオブジェクトを設定します。

Drag me!

勢いを設定する

勢いを設定する場合は、dragMomentumに真偽値を設定します。

Drag me!

方向を制限する

方向を制限する場合は、dragDirectionLocktrueに設定します。

Drag me!

スクロール

  • whileInView: コンポーネントがビューポートに入ったときに実行されるアニメーション。
  • viewport: ビューポートの検出方法を設定するオブジェクト。
    • once: trueの場合は、コンポーネントがビューポートに入った1回目にアニメーションを実行します。
    • root: スクロール可能な要素(ref)を設定することで、windowの代わりにその要素をビューポートとして使用します。
    • margin: ビューポートに追加するマージン。
    • amount: "some""all"・数値を設定することで、ビューポートと交差する必要がある要素の高さを設定します。
  • onViewportEnter: コンポーネントがビューポートに入ったときに実行されるコールバック関数。
  • onViewportLeave: コンポーネントがビューポートから出たときに実行されるコールバック関数。

Scroll me!

You found me!
Once me!

設定

プロジェクト全体でMotionの共通の設定をする場合は、MotionConfigを使用します。

import { MotionConfig } from "motion/react"
import { UIProvider } from "@yamada-ui/react"

const App = () => {
  return (
    <MotionConfig transition={{ duration: 1 }}>
      <UIProvider>
        <YourApplication />
      </UIProvider>
    </MotionConfig>
  )
}
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd
2nd