テック技報最新号へ →
CSS・特集

ガイド: スクロールまわりを CSS だけで作る(スナップ・停止位置・現在地表示・カルーセルのタブ)

特集2026-11-06

スクロール UI は「どこで止めるか」「どこまで手前で止めるか」「いまどこを見ているか」の3つに分けて考えると整理しやすい。どれも以前は JS(スライダーライブラリ、scrollTo のオフセット計算、Intersection Observer)で書いていたが、いまは CSS で置き換えられる。

1. どこで止めるか — scroll-snap

2. どこまで手前で止めるか — scroll-padding / scroll-margin

3. いまどこを見ているか — スクロールマーカーと :target-current

同じ「スクロールマーカー」の仕組みを2通りに使える(Chromium 系のみ、2026-10 時点)。

用途マーカーになるもの指定
記事の目次ハイライト既存の <a href="#…">親に scroll-target-group: auto
カルーセルのタブ・ドット各スライドの ::scroll-marker 疑似要素スクロール領域に scroll-marker-group: before など
カルーセルの前へ・次へボタン―スクロール領域に ::scroll-button(left) / ::scroll-button(right)

どちらも表示中の項目に :target-current が当たるので、ハイライトの書き方は共通。

4. スクロール量に動きを連動させる — animation-timeline

組み合わせ例

タブ付きカルーセル = 1(スナップ)+ 2(scroll-padding-inline で端の余白)+ 3(::scroll-marker のタブ)。3 に未対応のブラウザでも 1 と 2 だけで普通の横スクロールスライダーとして動くので、段階的に足していける。

関連