media
fog drift / drifting fog / layered mist animation
半透明の霧を2〜3枚重ね、互いに逆向き・互いに割り切れない周期でゆっくり流す背景演出。1枚だけだと「画像が横に滑っている」としか見えないが、層どうしがすれ違った瞬間に奥行きと空気が生まれる。周期を揃えないことと、上下の縁をマスクで溶かすことが要。
02 — Prompt template
03 — Params
duration(手前の層の片道 s) — 範囲 6〜80 / 初期 14
実案件の背景なら40〜70sが適正域(動いていると気づくのに数秒かかる速さ)。デモは動きを見せるため短め。20sを切ると霧ではなく煙や雲の早回しに見える。travel(横に流れる幅 %) — 範囲 2〜24 / 初期 10
層の幅に対する片道の移動量。8〜12%が自然。20%を超えると層の端が見えやすくなるので、層を枠の150%以上に広げておく。layers(霧の層の数) — 範囲 1〜4 / 初期 3
2〜3層が定番。1層だと奥行きが出ず、4層を超えると白く濁って背景のコントラストが消える。奥の層ほど薄く・遅くする。density(霧の濃さ) — 範囲 0.1〜1 / 初期 0.55
手前の層の不透明度。0.4〜0.6が目安。奥の層はこれに0.8倍・0.55倍…と減衰させる。0.8を超えると霧ではなく白い帯に見える。
04 — Vocab
counter-drift — 隣り合う層を逆向きに流すこと。速度差だけのパララックスより少ない移動量で、層どうしがすれ違う奥行きが出る。
割り切れない周期 — 40s / 56s / 70s のように公倍数が大きい周期を組むこと。全層が同じ位置に戻る瞬間が数十分に1度になり、ループの継ぎ目が知覚されない。
負の animation-delay — delayにマイナスを入れると、アニメーションが途中から始まる。読み込み直後から各層がばらばらの位置にいる状態を作れる。
animation-direction: alternate — 往路と復路を交互に再生する指定。霧の模様は端でつながらないので、無限スクロールではなく往復にするとテクスチャの継ぎ目を作らずに済む。
mask-image — グラデーションで要素の見え方を削る指定。霧の帯の上下を透明に落とし、画像の縁を消して空気に溶け込ませる。
animation-play-state — アニメーションの一時停止/再開を切り替えるプロパティ。IntersectionObserverと組み、画面外の長周期ループを止める。
05 — NG → OK examples
NG
言い方: 「「背景に霧っぽい雰囲気を足して」」
なぜNG: 霧の画像1枚を background-position で左右に流すだけの実装が返りやすい。層が1枚なので奥行きが出ず、周期も短く、端が切れた帯が横に滑る「スライドショーの早送り」になる。濃さの指定がないと白く濁って見出しの可読性を削る。
OK
言い方: 「「fog driftを実装。下部の帯に霧を3層、上下はmaskで溶かす。手前は片道40s・幅10%をalternateで往復、2層目は逆向き56s、3層目70s、負のdelayで位相をばらす。不透明度0.53/0.43/0.29、transformのみ、画面外でpaused、reduced-motionは静止」」
なぜOK: 層の数・逆向き・割り切れない周期・負のdelayまで指定しているので、層どうしがすれ違い続けて「同期して1枚に見える」瞬間が来ない。縁のマスクと画面外での一時停止も最初から入る。
