scroll
scroll text highlight / reading highlight
スクロールの読み進みに合わせて、文章が左から薄い色→濃い色へ塗られていく演出。読者の視線と文字の状態が同期し、長文リードやマニフェストを「読ませる」推進力になる。
02 — Prompt template
03 — Params
offset(塗り開始位置 %) — 範囲 0〜40 / 初期 15
ビューポート下端から何%上で塗り始めるか。15〜25%で読み始めと塗りが揃う。0だと画面に入った瞬間から塗られ始める。span(塗り切る距離 %) — 範囲 20〜80 / 初期 40
ビューポート高さの何%スクロールで1行を塗り切るか。40%前後が読速と合う。20%以下はスタンプのように一気に塗られる。stagger(行ごとの遅れ %) — 範囲 0〜20 / 初期 6
後の行ほど塗りを遅らせる量。0だと画面内の行が同時に塗られ、上から読み下ろす順序感が消える。
04 — Vocab
background-clip: text — 背景を文字の形で切り抜くCSS。グラデーション背景と組み合わせると「文字だけを塗る」表現が作れる。2層重ねの代替になる。
clip-path: inset() — 要素を矩形で切り抜くマスク。右側の値を100%→0%に動かすと左から開く。transformと同じくリフローが走らない。
scrub — アニメーションを時間ではなくスクロール量に直結させる方式。戻せば巻き戻る。GSAP ScrollTriggerの用語で、この動きの本体。
stagger — 複数要素に少しずつ時差を与えること。行ごとの塗りの遅れで「上から読み下ろす」順序を演出する。
05 — NG → OK examples
NG
言い方: 「「スクロールしたら文字がだんだん読めるようになるやつをやって」」
なぜNG: 「だんだん」の基準が未定義。行単位でパッと切り替わる実装や、opacityのフェードインだけの実装が返ってきやすい。「左から塗る」「スクロール進捗に同期する」という核心が伝わらない。
OK
言い方: 「「テキストを2層重ね、上層をclip-path insetで左から開くscroll text highlightを実装。下端から15%上で塗り始め、viewport高さの40%で塗り切る。行ごとに6%ずつ遅らせる」」
なぜOK: 実装方式(2層+clip-path)・開始位置・塗り切る距離・行の時差まで数値で指定している。「左から」と「進捗に同期」の2点を明示すると、フェードや一括切り替えの別物が返ってこない。
