このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
scroll-margin-inline-end
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2021年9月.
scroll-margin-inline-end プロパティは、スクロールスナップ領域のインライン方向における末尾側のマージンを定義し、このボックスをスナップポートにスナップするために使用されます。スクロールスナップ領域は変換された境界ボックスによって定義され、四角形の囲みボックスを探して(スクロールコンテナーの座標空間における軸に合わせられ)、それから指定された外部距離が追加されます。
In this article
試してみましょう
scroll-margin-inline-end: 0;scroll-margin-inline-end: 20px;scroll-margin-inline-end: 2em;<section> <div> <div>1</div> <div>2</div> <div>3</div> </div> <div>スクロール »</div></section>.default-example { flex-wrap: wrap;}.default-example .info { width: 100%; padding: 0.5em 0; font-size: 90%;}.scroller { text-align: left; width: 250px; height: 250px; overflow-x: scroll; display: flex; box-sizing: border-box; border: 1px solid black; scroll-snap-type: x mandatory;}.scroller > div { flex: 0 0 250px; width: 250px; background-color: rebeccapurple; color: #fff; font-size: 30px; display: flex; align-items: center; justify-content: center; scroll-snap-align: end;}.scroller > div:nth-child(even) { background-color: #fff; color: rebeccapurple;}構文
/* <length> 値 */scroll-margin-inline-end: 10px;scroll-margin-inline-end: 1em;/* グローバル値 */scroll-margin-inline-end: inherit;scroll-margin-inline-end: initial;scroll-margin-inline-end: revert;scroll-margin-inline-end: revert-layer;scroll-margin-inline-end: unset;値
<length>スクロールコンテナーのインライン方向における末尾側の辺からみた外部の距離です。
公式定義
| 初期値 | 0 |
|---|---|
| 適用対象 | すべての要素 |
| 継承 | なし |
| 計算値 | 指定通り |
| アニメーションの種類 | 計算値の型による |
形式文法
scroll-margin-inline-end =
<length>
例
>基本的なデモ
この例では、上記のインタラクティブサンプルととてもよく似たものを実装していますが、ここではその実装方法を説明します。
ここでの目的は、水平方向にスクロールする 4 つのブロックを作成することです。2 つ目と 3 つ目のブロックは、それぞれのブロックの右端に近いところでスナップします。
HTML
HTML には、4 つの子要素を持つスクローラーがあります。
<div> <div>1</div> <div>2</div> <div>3</div> <div>4</div></div>CSS
CSS を一通り見てみましょう。外側のコンテナーは次のようにスタイル設定されています。
.scroller { text-align: left; width: 250px; height: 250px; overflow-x: scroll; display: flex; box-sizing: border-box; border: 1px solid #000; scroll-snap-type: x mandatory;}スクロールスナップに関連する主な部品は、overflow-x: scroll で、コンテンツがスクロールしても隠れないようにしています。また、scroll-snap-type: x mandatory で、スクロールのスナップは水平軸に沿って行わなければならず、スクロールは常にスナップ点で静止するようになっています。
子要素のスタイルは次のようになっています。
.scroller > div { flex: 0 0 250px; width: 250px; background-color: #663399; color: #fff; font-size: 30px; display: flex; align-items: center; justify-content: center; scroll-snap-align: end;}.scroller > div:nth-child(2n) { background-color: #fff; color: #663399;}ここで最も重要なのはscroll-snap-align: end で、これは右側の端 (ここでは x 軸に沿った「末尾」) をスナップ点として指定するものです。
最後に、スクロールのマージン値を指定しますが、これは 2 番目と 3 番目の子要素に対して異なる値を指定します。
.scroller > div:nth-child(2) { scroll-margin-inline-end: 1rem;}.scroller > div:nth-child(3) { scroll-margin-inline-end: 2rem;}つまり、真ん中の子要素を過ぎてスクロールした場合、2 番目の<div> のインラインの末尾から1rem、3 番目の<div> のインラインの末尾から2rem のところでスナップすることになります。
結果
自分でやってみましょう。
仕様書
| Specification |
|---|
| CSS Scroll Snap Module Level 1> # margin-longhands-logical> |