その場でふわっと 登場の動き

通称:フェードインFade In

速さの変わり方

位置は動かさず、透明な状態から少しずつ濃くなって現れます。いちばん控えめな登場で、文章の多いページでも読む邪魔をしません。

自分のサイトの中身で、この形を作らせる指示文です。最初の「サイトの情報」を書き換えてから渡します。今あるページを直させるときは、その HTML を貼ります。

この形で作る
# 動かすもの(ここを書き換える)
- 動かす要素:〈例:各セクションの見出しとカード、商品の写真〉
- 今あるページ:〈今のページに付けるなら、その HTML と CSS を貼る。新しく作るなら空ける〉

# 動きの呼び名
一般に「フェードイン」(Fade In)と呼ばれる動きです。

# 作ってほしい動き
Fade In(その場でふわっと出る)。要素が画面に入ったとき、位置は動かさずに透明から現れる。

# 動き
- きっかけ:要素が画面に 20% 入ったとき。1回だけ動かす(上へ戻って再び入っても動かさない)
- 始まり:opacity 0
- 終わり:opacity 1
- 時間:0.6秒
- 速さの変わり方:すっと止まる(cubic-bezier(0.22, 1, 0.36, 1))

# 付ける場所
- 見出し、本文の段落、カード

# 守ってほしいこと
- 1つの画面で同時に動かすのは5個くらいまでにする。並んだカードを順番に出したいときは、時間差を付ける
- ファーストビューの見出しなど、開いた瞬間に読ませたいものには付けない

# 軽さと配慮(どの動きでも守る)
- 動かすのは transform と opacity だけにする(top・left・width・height・margin は動かさない)
- 動きを控える設定(prefers-reduced-motion: reduce)のときは動かさず、最後の状態で表示する
- 画面に入ったかは IntersectionObserver で見る。scroll イベントで毎回位置を測らない
- JavaScript が動かない環境でも中身が見えるようにする(最初に隠す指定は、JavaScript が付ける class の下に書く)
- will-change を付けるなら動いている間だけにする

# 出力
- 足す CSS と JavaScript を分けて出す。ライブラリは使わない
- 時間・距離・速さの変わり方は CSS 変数にまとめ、あとから変えやすくする
- 今あるページを渡したときは、HTML に足す class や属性だけを書き、ほかの見た目は変えない

要素が画面に現れるときの動きを14種類の型に分け、AIへの指示文・動く見本・コードを載せています。見本の下のつまみで時間や距離を変えると、指示文とコードの数字も同じ値に変わります。

登場の動きはどの型を選ぶか

登場の動きは、読む人の目を次に見る場所へ運ぶためのものです。目立たせるためだけに付けると、ページ全体が落ち着かなくなります。まず「何に付けるか」(文章・カード・写真・ボタン)を決め、次に「どれだけ目立たせたいか」で型を選びます。迷ったら下からふわっとを基本にし、並んだものには時間差を足すのが手堅い組み合わせです。

こんなとき 向いている型
文章の多いページで、控えめに動かしたいその場でふわっと
セクションごとに読み進めてもらう、ふつうの会社・お店のサイト下からふわっと
ページの上の方の告知や見出し上からふわっと
写真と文章を左右に並べたセクション横からふわっと・画面の外から滑り込む
カードや写真を手前に置いたように見せたい少し大きくなって出る
実績の数字やアイコンを元気に見せたい小さな点から広がる
キャッチコピーを印象に残したいぼかしが晴れる
カードの一覧に立体感を出したいめくれて出る
押してほしいボタンを1つだけ目立たせたい弾んで出る
同じ形のものが並ぶ一覧時間差で順番に・格子を斜めに順番に
トップページを開いた直後の印象開いたときに順番に
重いページの読み込みを、ロゴと進みで待ってもらいたいローディング画面(読み込み中の動き)
読む速さに動きを合わせたい・JavaScript を増やしたくないスクロールに合わせて濃くなる

どの型でも守ること

  1. 動かすのは transform と opacity だけ。top・margin・width を動かすと、まわりの要素まで押されて動き、描き直しも重くなります。
  2. 動きを控える設定の人には動かさない。@media (prefers-reduced-motion: reduce) の中で、最後の状態をそのまま見せます。見本の「動きを控える設定で見る」で、その見え方を確かめられます。
  3. 最初に隠す指定は、JavaScript が付ける class の下に書く。JavaScript が読み込めなかったときに、中身が見えないままになるのを防ぎます。
  4. 1回だけ動かす。上下にスクロールするたびに消えては現れると、読むリズムが切れます。
  5. 時間は 0.4〜0.8秒に収める。1秒を超えると、読もうとしたときにまだ動いていて、待たされる感じが残ります。

よくある質問 (FAQ)

日本語で書いて、動きの名前だけ英語を添えれば十分に伝わります。伝わりにくいのは言葉の種類よりも、数字がないことです。ここの指示文は、きっかけ・始まりの状態・終わりの状態・時間・速さの変わり方を数字で書き、Fade Up のような英語の一般名も添えています。

多くは、軽さと配慮の指定が抜けているためです。動きの数が多すぎる、時間が長い、何でも動かす、動きを控える設定を無視する、といったことが重なると安っぽく見えます。ここの指示文には、どの型にも「軽さと配慮」の段を付けてあります。

登場の動きなら、CSS と IntersectionObserver で足ります。ここのコードはどれもライブラリなしで動きます。複数の動きを細かく連ねる演出や、スクロールに合わせて何段階も変わる演出を作るときに、ライブラリを検討します。

基本の動き1つと、目立たせたいところ用の1つ、の2つくらいまでにします。たとえば、セクションは下からふわっと、申し込みのボタンだけ弾んで出る、のように役割で分けます。型が増えるほど、動きに意味がなくなります。