本文へスキップ

スクロールで画像出現

スクロール量に応じて clip-path が開き、画像がだんだん現れる。scroll イベント連動の視覚演出。

プレビュー

スクロール

操作枠内をスクロールすると動きます。

仕様書

向く場面
  • スクロール量に比例して画像を開く演出
  • 主役画像の登場をスクロールで操作させたい
  • 戻すと閉じる可逆な見せ方
避ける場面
  • 一度出したら戻したくない要素
  • 本文テキスト(読める瞬間が限られる)
構成要素
  • スクロール容器
  • ヒント
  • 画像枠
  • キャプション
持っている状態
  • 通常
キーボード

Tab でスクロール容器へ(tabindex=0)、↑↓/PageDown でスクロール

支援技術

画像は div の見本(実装では img+alt)。キャプションは文字で常時表示。開き具合は視覚のみ。reduced-motion では最初から全体を表示

動き

スクロール進捗に比例して clip-path が右から開く。追従の transition 50ms linear で段差をならす

デザインの要点

  • 進捗は「容器の下端から画像の上端までの距離 ÷ 容器高さの 60%」。画像が容器の 6 割まで上がった時点で全開になり、中央に来る前に見せ切る
  • clip-path は inset の右辺だけを % で動かす。width を変えると画像が縮んで見え、「現れる」でなく「伸びる」になる
  • 追従に 50ms linear の transition を敷く。scroll イベントは飛び飛びに来るので、無いと開き方が段になる
  • 戻すと閉じる可逆な演出。一度出したら戻したくない主役画像には、IntersectionObserver で一方向にする

コード(コピーして使えます)

<div class="scroll-root" tabindex="0">
  <div class="spacer">↓ スクロール ↓</div>
  <div class="reveal-wrap">
    <!-- .reveal-img を <img> タグに置き換えて使用可 -->
    <div class="reveal-img"></div>
    <p class="caption">スクロールで出現</p>
  </div>
  <div class="spacer-bottom"></div>
</div>

タグ

同じカテゴリ「スクロール演出(応用)」のほかのパーツ

関連パーツ