§08
コンテンツ閲覧
Content
- Patterns
- 13
- Demos
- 13
§08-03
Virtual list (windowing)
画面内の行だけを描画して大量データを扱う。
数万件の一覧でもスクロールが滑らかに動き、初期表示も速い。ログや大規模テーブルなど、全件表示が重くなる場面で使う。
実装のポイントscrollTop から表示範囲を計算し、前後にバッファ行を足して描画する。全体の高さは spacer で確保し、各行は absolute か translateY で配置する。
- 状態管理
§08-04
Masonry グリッド
高さの違うタイルを隙間なく敷き詰めて並べる。
縦横比の異なる画像やカードを余白なく並べ、一覧の密度を高める。写真やピン留めのように、サイズを揃えられない内容の一覧に向く。
実装のポイントCSS columns と break-inside: avoid で手軽に組めるが、並び順が縦方向になる。横方向の順序が必要なら JS で列ごとの高さを比較して振り分ける。
- CSS のみ
§08-07
リール / 縦動画フィード
縦スワイプで動画を 1 本ずつ送るフィード。
次に何を見るか選ばずに次々と視聴でき、1 本ずつ画面全体で集中して見られる。短い動画を連続で見せたい場面に向く。
実装のポイント縦フィードは scroll-snap-type: y mandatory で 1 本ずつ止め、IntersectionObserver で画面内の動画だけ再生する。前後 1 本だけ先読みする。
- CSS のみ
§08-08
カルーセル / スワイパー
複数の内容を横にスワイプして切り替える。
限られた幅に複数の画像や項目を収め、横に送って見せる。商品画像やおすすめ一覧など、一度に全部見せる必要がない内容に使う。
実装のポイントスライドは scroll-snap で並べるとスワイプとキーボードスクロールが自然に効く。ボタン操作も併設し、自動再生するなら一時停止の手段を必ず付ける。
- 状態管理
残り 5 件のパターンライトボックス / ギャラリー / 比較スライダー / zoom / pan viewer …
§08-09
ライトボックス / ギャラリー
画像をクリックすると前面に拡大表示する。
ページを離れずに写真の細部を確かめられる。商品写真やギャラリーなど、サムネイルでは判断できない画像を見せる場面に使う。
実装のポイント開いたらフォーカスをダイアログ内に閉じ込め、Esc で閉じて元のサムネイルへフォーカスを戻す。背景のスクロールも固定する。
- アクセシビリティ
- キーボード操作
§08-11
zoom / pan viewer
画像を拡大・移動して細部を確認する。
写真や図面の細部を確認したいときに、別画面に移らず拡大して見られる。商品写真や地図、設計図の閲覧で効く。
実装のポイントtransform: scale と translate を 1 つの行列で持ち、ホイールやピンチの中心点を基準に拡大する。拡大率には上限と下限を設ける。
- 状態管理
§08-12
Document outline panel
文書の見出しを一覧にして脇に表示する。
文書の構成を一覧で掴み、読みたい節へすぐ飛べる。執筆中にも全体の流れを見渡せるので、長いドキュメントの編集画面に向く。
実装のポイント見出しから目次を生成し、IntersectionObserver で表示中の見出しを追ってハイライトする。リンクは #id への通常のアンカーにして履歴と共有に対応させる。
- 状態管理
§08-13
Reader mode
装飾や広告を除いて本文だけを読みやすく表示する。
長文を集中して読めるようになる。記事中心のサイトや、外部ページを取り込んで表示する機能で読みやすさを担保したいときに使う。
実装のポイント本文の抽出は article や main を起点に、リンク密度の高いブロックを除外して行う。表示側は max-w-prose と行間・フォントサイズの調整だけで読みやすくなる。
- 状態管理