すべてのコンポーネント
MotionHeight
高さが中身に追従します。折りたたみ、展開、内容の変化。
WebReact Native内容とサイズ
試してみる
いちばん短い使い方
Details.jsx<button onClick={() => setOpen(!open)}>Details</button>
<MotionHeight open={open}>
<Answer />
</MotionHeight>
代わりに処理してくれること
- 自動で計測した、中身の実際の高さへアニメーションします。
- 開いている間に中身が増えたり減ったりしても追従します。
- 変化の途中でも、画面上の高さから始まります。
- ページのサイズを変えたときは、新しい幅に遅れて追いかけず、すぐに合わせます。
- 閉じた中身はマウントされたまま非表示・操作不可になるので、状態は保たれます。
こんなときに
- FAQ の回答。
- 開閉する設定のグループ。
- 合計の高さをアニメーションさせたいリスト(
MotionList を包みます)。
props
| Prop | 型 | デフォルト | 説明 |
|---|
open | boolean | true | false で高さ 0 まで折りたたみます。中身はマウントされたまま非表示・操作不可になります。 |
|---|
children | ReactNode | | 中身。 |
|---|
as | element | 'div' | 描画する要素。 |
|---|
transition | Transition | spring | タイミングカーブ { duration, easing } かスプリング { tempo: 'spring', spring }。スプリングは中断されても勢いを保ちます。 |
|---|
onMotionComplete | (open) => void | | 高さが落ち着いた後に、open を受け取って実行されます。 |
|---|
ほかの props は描画される要素に渡るので、className、style、イベントハンドラーはいつもどおり使えます。