ユーザー操作

scroll-margin

scroll-margin は、スクロールして要素に吸い付いたりリンクで飛んだりするとき、要素の外側にどれだけ余裕を取って止めるかを指定します。要素ごとに止まる位置をずらせます。

構文

<length>{1,4}

プレビュー

123
プリセット
右下の角をドラッグするとサイズを変えられます

コード

.box {
  overflow: auto;
  scroll-snap-type: y mandatory;
}

.box > :nth-child(2) {
  scroll-snap-align: start;
  scroll-margin: 24px;
}

コントロール

scroll-margin
4 辺を同じ値にする
scroll-margin24px
123

解説

値の意味

  • 0:初期値です。要素の枠にぴったり合わせて止めます。
  • 24px などの長さ:要素の外側にその分の余裕を取ります。負の値では、要素の内側に食い込んだ位置で止めます。

margin と同じく、1〜4 つの値で上・右・下・左を書きます。scroll-margin-top のように辺ごとにも書けます。% は書けません。

プレビューは scroll-snap-type: y mandatory で縦にスクロールする箱で、2 枚目の札に scroll-snap-align: start と一緒に書いています。正の値では 2 枚目が箱の上端からその分だけ下に止まり、負の値では上端が箱の外に隠れます。

よく使う場面

ページ内リンクで飛ぶ見出しに書いて、固定したヘッダーの下に隠れないようにしたり、見出しの上に少し余白を残したりします。

気をつけること

  • 見た目の余白(margin)は変わりません。変わるのは、吸い付くときやリンクで飛んだときに止まる位置だけです。
  • 箱の側でまとめてずらすときは、スクロールする箱に scroll-padding を書きます。両方を書くと、ずれは足し合わされます。

コメント