OmochiXを検索

Esc で閉じる

カメラワーク #022

パン Pan

横に首を振るように景色が流れる

カメラを横に振るパン。手前の景色が横に流れ、端まで行くとゆっくり戻ります。Web 上では横スクロールで再現しています。

調整する

値を変えるとプレビューに反映され、「プロンプトをコピー」「コードをコピー」も調整後の内容になります。

AIへの頼み方

街並みのイラストを、カメラを横に振るように左へゆっくり流して。5秒で80px、端まで行ったら戻る。

動きの仕様

  • コンテナより広い帯(440px)を overflow: hidden のコンテナに入れる
  • 帯を translateX(0)→translateX(-80px) で 5 秒、ease-in-out、alternate で往復させる
  • 動かすのは transform だけ
  • 向きを変えるときは距離の符号だけを反転する
  • prefers-reduced-motion では静止させる

使いどころ

ヒーローの背景、風景の見せ方、スライドの導入。動画生成AIには「slow pan to the left across the skyline」のようにカメラワークの語彙で指示する(Web 上の再現であり、生成結果を保証するものではない)。

コピーされるプロンプト全文を見る
「パン(Pan)」の動きを実装してください。
OmochiX Learn の動く見本 #022(カメラワーク)です。

頼み方の例: 街並みのイラストを、カメラを横に振るように左へゆっくり流して。5秒で80px、端まで行ったら戻る。
どんな動きか: 横に首を振るように景色が流れる
見本で起きること: カメラを横に振るパン。手前の景色が横に流れ、端まで行くとゆっくり戻ります。Web 上では横スクロールで再現しています。
仕様:
- コンテナより広い帯(440px)を overflow: hidden のコンテナに入れる
- 帯を translateX(0)→translateX(-80px) で 5 秒、ease-in-out、alternate で往復させる
- 動かすのは transform だけ
- 向きを変えるときは距離の符号だけを反転する
- prefers-reduced-motion では静止させる
使いどころ: ヒーローの背景、風景の見せ方、スライドの導入。動画生成AIには「slow pan to the left across the skyline」のようにカメラワークの語彙で指示する(Web 上の再現であり、生成結果を保証するものではない)。
調整した値:
- 片道5sで振る(既定)
- 横に80px流す(既定)
- 向きは「左へ」(既定)
- 振り方は「ゆっくり始まりゆっくり終わる」(既定)
- 建物の色: #6e4bff(既定)

実装の条件:
- HTML / CSS(必要なら素のJavaScript)で、外部ライブラリは使わない
- 見本の形・タイミング・イージングの数値はそのまま使い、文字・色・素材だけ今作っているものに合わせる
- prefers-reduced-motion: reduce の環境では動きを止めるか最小限にする
- 使った技術: CSS

見本(動くプレビューと参考コード): https://omochix.com/learn/motion/pan/

コード

プレビューで動いているものと同じコードです。HTMLに貼り付ければそのまま動きます。

HTML / CSS / JavaScript
<!-- パン (Pan) | OmochiX Learn 動く見本 #022 | https://omochix.com/learn/motion/pan/ -->

<style>
.pn{width:280px;height:150px;overflow:hidden;border-radius:14px;background:linear-gradient(180deg,#bfd7ff 0%,#eef5ff 70%,#dde6f3 70%)}
.pn__strip{display:flex;gap:14px;align-items:flex-end;width:440px;height:100%;padding:0 12px;box-sizing:border-box;animation:pn var(--p-cycle,5s) var(--p-ease,ease-in-out) infinite alternate}
.pn__strip i{display:block;flex:0 0 38px;height:var(--h);border-radius:4px 4px 0 0;background:var(--p-color,var(--primary));opacity:.85}
@keyframes pn{from{transform:translateX(0)}to{transform:translateX(calc(var(--p-distance,80px) * var(--p-dir,-1)))}}
</style>

<div class="pn"><div class="pn__strip"><i style="--h:60px"></i><i style="--h:110px"></i><i style="--h:80px"></i><i style="--h:130px"></i><i style="--h:70px"></i><i style="--h:100px"></i><i style="--h:90px"></i><i style="--h:120px"></i></div></div>