属性名 |
scroll-margin-top scroll-margin-bottom scroll-margin-right scroll-margin-left |
---|---|
値 | <length> |
初期値 | 0 |
適用可能要素 | すべての要素 |
継承 | しない |
サポート | https://caniuse.com/?search=scroll-margin-top |
ページ内のアンカーに移動する際や、scroll-snap-type でスクロールスナップする際に、スクロール位置を指定した長さだけずらします。ページ上部に固定ヘッダを表示している場合にスクロールした箇所がヘッダの下に隠れてしまうのを防ぐ場合などに有効です。scroll-padding-* はスクロールコンテナ(親要素)に、scroll-margin-* はスクロールコンテンツ(子要素)に指定する点が異なります。
値 | 説明 |
---|---|
<length> | マージンを指定します。 |
:root { --header-height: 2.5rem; } .page { position: relative; border: 1px solid #999; height: 10rem; overflow-y: scroll; overflow-x: hidden; scroll-behavior: smooth; } header { position: sticky; top: 0; left: 0; background-color: rgba(0, 0, 0, .5); color: white; height: var(--header-height); line-height: var(--header-height); width: 100%; padding-left: .5rem; } main { position: absolute; top: 0; left: 0; overflow-y: scroll; width: 100%; padding-top: var(--header-height); } section { height: 30rem; } :target { scroll-margin-top: var(--header-height); } h1 { margin-top: 0; }
<div class="page"> <header>Header</header> <main> <section> <h1 id="section-1">Section-1</h1> <ul> <li><a href="#section-2">Section-2</a> <li><a href="#section-3">Section-3</a> </ul> </section> <section> <h1 id="section-2">Section-2</h1> <ul> <li><a href="#section-1">Section-1</a> <li><a href="#section-3">Section-3</a> </ul> </section> <section> <h1 id="section-3">Section-3</h1> <ul> <li><a href="#section-1">Section-1</a> <li><a href="#section-2">Section-2</a> </ul> </section> </main> </div>