CSS辞典 scroll-padding-blockプロパティ、 scroll-padding-inlineプロパティ、scroll-padding-block-start、scroll-padding-block-endプロパティ、scroll-padding-inline-start、scroll-padding-inline-endプロパティの解説

書字方向に応じてスナップされる位置のパディングの幅をまとめて指定する「scroll-padding-blockプロパティ」、「scroll-padding-inlineプロパティ」、書字方向に応じてスナップされる位置のパディングの幅を指定する「scroll-padding-block-start」、「scroll-padding-block-end」、「scroll-padding-inline-start」、「scroll-padding-inline-end」使用方法を記載

対応バージョン:CSS3/2.1

対応ブラウザ

ruby要素,rb要素,rt要素、rp要素、rtc要素 対応ブラウザ:chrome
ruby要素,rb要素,rt要素、rp要素、rtc要素 対応ブラウザ:firefox
ruby要素,rb要素,rt要素、rp要素、rtc要素 対応ブラウザ:safari
ruby要素,rb要素,rt要素、rp要素、rtc要素 対応ブラウザ:ms edge
ruby要素,rb要素,rt要素、rp要素、rtc要素 対応ブラウザ:ms ie
ruby要素,rb要素,rt要素、rp要素、rtc要素 対応ブラウザ:opera
初期値auto
適用される要素スクロールコンテナー
モジュールCSS Scroll Snap Module Level 1
継承なし

※scroll-padding-block、scroll-padding-inline、scroll-padding-block-start、scroll-padding-block-end、scroll-padding-inline-start、scroll-padding-inline-endすべて同様。

scroll-padding-blockプロパティ、scroll-padding-inlineプロパティ

概要・使用方法

{ scroll-padding-block:-start -end;}
{ scroll-padding-inline: -start -end;}

「scroll-padding-blockプロパティ」、scroll-padding-block-start、scroll-padding-block-endを一括で指定するプロパティです。「scroll-padding-inlineプロパティ」は、scroll-padding-inline-start、scroll-padding-inline-endを一括で指定できるプロパティです。

挙動が安定しない・・・
writing-modeプロパティで書字方向を指定すると動作しなくなる?
インライン方向かブロック方向かで、パディングしているっぽい感じ。

サンプルコード

<!DOCTYPE html>
<html lang="ja">
  <head>
    <title>scroll-margin-inlineプロパティ CSSフォントサンプルページ</title>
    <meta charset="uft-8">
    <style>

.padding-inline1 {
  scroll-snap-type: x mandatory;
  -ms-scroll-snap-type: x mandatory;
  width: 500px;
  height: 200px;
  display: flex;
  flex-flow: row nowrap;
  overflow: auto;
}

.padding-inline2 {
  scroll-snap-type: x mandatory;
  -ms-scroll-snap-type: x mandatory;
  width: 500px;
  height: 200px;
  display: flex;
  flex-flow: row nowrap;
  overflow: auto;
  scroll-padding-inline:100px 50px;
}

.padding-block1 {
  scroll-snap-type: y mandatory;
  -ms-scroll-snap-type: y mandatory;
  width: 350px;
  height: 200px;
  overflow-y: scroll;
}
.padding-block2 {
  scroll-snap-type: y mandatory;
  -ms-scroll-snap-type: y mandatory;
  width: 350px;
  height: 200px;
  overflow-y: scroll;
  scroll-padding-block:50px;
}

.bl-panel-1 {
  background-color:silver;
  width: 350px;
  height: 100%;
  font-size: 5em;
  scroll-snap-align: center;
  text-align:center;
}

.bl-panel-2 {
  background-color:teal;
  width: 350px;
  height: 100%;
  font-size: 5em;
  scroll-snap-align: center;
  text-align:center;
}

.li-panel-1 {
  background-color:silver;
  width: 100%;
  height: 200px;
  font-size: 5em;
  scroll-snap-align: center;
  text-align:center;
}
.li-panel-2 {
  background-color:teal;
  width: 100%;
  height: 200px;
  font-size: 5em;
  scroll-snap-align: center;
  text-align:center;
}
    </style>
  </head>
  <body>
<h1>なし</h1>
<div class="padding-inline1">
  <div><div class="bl-panel-1">1</div></div>
  <div><div class="bl-panel-2">2</div></div>
  <div><div class="bl-panel-1">3</div></div>
  <div><div class="bl-panel-2">4</div></div>
  <div><div class="bl-panel-1">5</div></div>
</div>
<h1>scroll-padding-inline:100px 50px;</h1>
<div class="padding-inline2">
  <div><div class="bl-panel-1">1</div></div>
  <div><div class="bl-panel-2">2</div></div>
  <div><div class="bl-panel-1">3</div></div>
  <div><div class="bl-panel-2">4</div></div>
  <div><div class="bl-panel-1">5</div></div>
</div>

<h1>なし</h1>
<div class="padding-block1">
  <div class="li-panel-1">1</div>
  <div class="li-panel-2">2</div>
  <div class="li-panel-1">3</div>
  <div class="li-panel-2">4</div>
  <div class="li-panel-1">5</div>
</div>
<h1>scroll-padding-block:50px;</h1>
<div class="padding-block2">
  <div class="li-panel-1">1</div>
  <div class="li-panel-2">2</div>
  <div class="li-panel-1">3</div>
  <div class="li-panel-2">4</div>
  <div class="li-panel-1">5</div>
</div>


  </body>
</html>

なし

scroll-padding-inline:100px 50px;

なし

scroll-padding-block:50px;

scroll-padding-block-startプロパティ、scroll-padding-block-endプロパティ

概要・使用方法

{scroll-padding-block-start: 幅;}
{scroll-padding-block-end: 幅;}

「scroll-padding-block-start」プロパティは、ブロック方向に対して開始側のマージンを指定することができます。「scroll-padding-block-end」プロパティは、ブロック方向に対して終了側の終了側のマージンを指定することができます。また、パディング部分は次への要素へスナップされずスクロールが止まった挙動になります。

writing-modeプロパティは不要です。

サンプルコード

<!DOCTYPE html>
<html lang="ja">
  <head>
    <title>scroll-padding-block-start endプロパティ CSSフォントサンプルページ</title>
    <meta charset="uft-8">
    <style>
.box1 {
  scroll-snap-type: y mandatory;
  -ms-scroll-snap-type: y mandatory;
  width: 350px;
  height: 300px;
  overflow-y: scroll;
}
.box2 {
  scroll-snap-type: y mandatory;
  -ms-scroll-snap-type: y mandatory;
  width: 350px;
  height: 300px;
  overflow-y: scroll;
  scroll-padding-block-start:100px;
}
.box3 {
  scroll-snap-type: y mandatory;
  -ms-scroll-snap-type: y mandatory;
  width: 350px;
  height: 300px;
  overflow-y: scroll;
  scroll-padding-block-end:50px;
}

.y-panel-1 {
  display: flex;
  background-color:silver;
  align-items: center;
  justify-content: center;
  height: 300px;
  font-size: 5em;
  scroll-snap-align: center;
}
.y-panel-2 {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 300px;
  font-size: 5em;
  background-color:teal;
  scroll-snap-align: center;
}
    </style>
  </head>
  <body>
<h1>なし</h1>
<div class="box1">
  <div><div class="y-panel-1">1</div></div>
  <div><div class="y-panel-2">2</div></div>
  <div><div class="y-panel-1">3</div></div>
  <div><div class="y-panel-2">4</div></div>
  <div><div class="y-panel-1">5</div></div>
</div>
<h1>scroll-padding-block-start:100px;</h1>
<div class="box2">
  <div><div class="y-panel-1">1</div></div>
  <div><div class="y-panel-2">2</div></div>
  <div><div class="y-panel-1">3</div></div>
  <div><div class="y-panel-2">4</div></div>
  <div><div class="y-panel-1">5</div></div>
</div>
<h1>scroll-padding-block-end:50px;</h1>
<div class="box3">
  <div><div class="y-panel-1">1</div></div>
  <div><div class="y-panel-2">2</div></div>
  <div><div class="y-panel-1">3</div></div>
  <div><div class="y-panel-2">4</div></div>
  <div><div class="y-panel-1">5</div></div>
</div>
  </body>
</html>

なし

1
2
3
4
5

scroll-padding-block-start:100px;

1
2
3
4
5

scroll-padding-block-end:50px;

1
2
3
4
5

chromeブラウザ実行結果

chrome

Firefox ブラウザ実行結果

Firefox

edgeブラウザ実行結果

edge

operaブラウザ実行結果

opera

scroll-padding-inline-startプロパティ、scroll-padding-inline-endプロパティ

概要・使用方法

{scroll-padding-inline-start: 幅;}
{scroll-padding-inline-end: 幅;}

「scroll-padding-inline-startプロパティ」を指定するとインライン方向の開始側にマージンを指定することができます。「scroll-padding-inline-endプロパティ」を指定するとインライン方向の終了側にマージンを指定することができます。また、パディング部分は次への要素へスナップされずスクロールが止まった挙動になります。

writing-modeプロパティは不要です。

指定できる値(幅)

数値+単位単位付きの数値で指定します。マイナスの値も指定可能です。
autoブラウザーの判断で「0」以外の値が選択される可能性があります。

単位付の数字の詳細は以下を参照

サンプルコード

<!DOCTYPE html>
<html lang="ja">
  <head>
    <title>scroll-margin-inlineプロパティ CSSフォントサンプルページ</title>
    <meta charset="uft-8">
 <style>
.il-box {
  scroll-snap-type: x mandatory;
  -ms-scroll-snap-type: x mandatory;
  width: 350px;
  height: 200px;
  display: flex;
  flex-flow: row nowrap;
  overflow: auto;
}
.il-box-start {
  scroll-snap-type: x mandatory;
  -ms-scroll-snap-type: x mandatory;
  width: 350px;
  height: 200px;
  display: flex;
  flex-flow: row nowrap;
  overflow: auto;
  scroll-padding-inline-start:100px;
}
.il-box-end {
  scroll-snap-type: x mandatory;
  -ms-scroll-snap-type: x mandatory;
  width: 350px;
  height: 200px;
  display: flex;
  flex-flow: row nowrap;
  overflow: auto;
  scroll-padding-inline-end:50px;
}

.in-nr-panel-1 {
  background-color:silver;
  width: 350px;
  height: 100%;
  font-size: 5em;
  scroll-snap-align: center;
  text-align:center;
}

.in-nr-panel-2 {
  background-color:teal;
  width: 350px;
  height: 100%;
  font-size: 5em;
  scroll-snap-align: center;
  text-align:center;
}

.in-panel-1 {
  background-color:silver;
  width: 350px;
  height: 100%;
  font-size: 5em;
  scroll-snap-align: center;
  text-align:center;
}

.in-panel-2 {
  background-color:teal;
  width: 350px;
  height: 100%;
  font-size: 5em;
  scroll-snap-align: center;
  text-align:center;
}
</style>
  </head>
  <body>
 <h1>なし</h1>
<div class="il-box">
  <div><div class="in-nr-panel-1">1</div></div>
  <div><div class="in-nr-panel-2">2</div></div>
  <div><div class="in-nr-panel-1">3</div></div>
  <div><div class="in-nr-panel-2">4</div></div>
  <div><div class="in-nr-panel-1">5</div></div>
</div>
<h1>scroll-padding-inline-start:100px;</h1>
<div class="il-box-start">
  <div><div class="in-panel-1">1</div></div>
  <div><div class="in-panel-2">2</div></div>
  <div><div class="in-panel-1">3</div></div>
  <div><div class="in-panel-2">4</div></div>
  <div><div class="in-panel-1">5</div></div>
</div>
<h1>scroll-padding-inline-end:50px;</h1>
<div class="il-box-end">
  <div><div class="in-panel-1">1</div></div>
  <div><div class="in-panel-2">2</div></div>
  <div><div class="in-panel-1">3</div></div>
  <div><div class="in-panel-2">4</div></div>
  <div><div class="in-panel-1">5</div></div>
</div>
  </body>
</html>

なし

scroll-padding-inline-start:100px;

scroll-padding-inline-end:50px;

chromeブラウザ実行結果

chrome

Firefox ブラウザ実行結果

Firefox

edgeブラウザ実行結果

edge

operaブラウザ実行結果

opera