CSS辞典 scroll-paddingプロパティ、scroll-padding-top、scroll-padding-right、scroll-padding-bottom、scroll-padding-leftプロパティの解説

スナップされる位置のパディングの幅をまとめて指定する「scroll-paddingプロパティ」、スナップされる位置のパディングの幅を指定する「scroll-padding-topプロパティ」、「scroll-padding-rightプロパティ」、「scroll-padding-bottomプロパティ」、「scroll-padding-leftプロパティ」使用方法を記載

対応バージョン: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-topscroll-padding-right、scroll-padding-bottom、scroll-padding-leftすべて同様。

scroll-marginプロパティ

概要・使用方法

{ scroll-padding: -top -right -bottom -left;}

scroll-paddingプロパティ」プロパティは、スクロールコンテナー内に配置される要素がスナップされる際の内側のパディング(余白)の幅を一括して指定するプロパティです。

値の指定は半角スペースで区切って4つまで指定できます。

  • 値が1つすべての辺に同じ値が適用されます。
  • 値が2つ1つめが上下、2つ目が左右に適用されます。
  • 値が3つは1つ目が上、2つ目が左右、3つ目が下に適用されます。
  • 値が4つは1つ目が上、2つ目が右、3つ目が下、4つ目が左に適用されます。
scroll-paddingの挙動解説図(leftとright)

scroll-paddingプロパティの挙動は、要素内にパディングを指定するため、次の要素にスクロールした際にパディング部分に関してはスナップされず、スクロールがその位置で止まる。左右のスクロールの場合は、scroll-margin-leftとscroll-margin-rightプロパティを使用する。

※ここでは左右のパディングを100pxに指定している

scroll-paddingの挙動解説図(topとbottom)

scroll-padding-topとscroll-padding-bottomの挙動例

※ここでは上下のパディングを100pxに指定している

scroll-padding-top、left、bottom、rightプロパティ

スクロールコンテナー内の要素がスナップされる際の内側のパディング(幅)を指定します。

概要・使用方法

上側のパディングを指定します。

{ scroll-padding-top: 幅;}

下側のパディングを指定します。

{ scroll-padding-bottom: 幅;}

右側のパディングを指定します。

{ scroll-padding-right: 幅;}

左側のパディングを指定します。

{ scroll-padding-left: 幅;}

指定できる値(幅)

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

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

サンプルコード

<!DOCTYPE html>
<html lang="ja">
  <head>
    <title>scroll-paddingプロパティ CSSフォントサンプルページ</title>
    <meta charset="uft-8">
    <style>
.scroll-padding {
  scroll-snap-type: x mandatory;
  -ms-scroll-snap-type: x mandatory;
  display: flex;
  width: 350px;
  height: 200px;
  flex-flow: row nowrap;
  overflow: auto;
  border:1px solid;
  scroll-padding:0 100px 0 100px;
}
.scroll-padding-left-right-x {
  scroll-snap-type: x mandatory;
  -ms-scroll-snap-type: x mandatory;
  display: flex;
  width: 350px;
  height: 200px;
  flex-flow: row nowrap;
  overflow: auto;
  border:1px solid;
  scroll-padding-left:100px;
  scroll-padding-right:100px;
}
.scroll-padding-top-bottom-y {
  scroll-snap-type: y mandatory;
  -ms-scroll-snap-type: y mandatory;
  width: 350px;
  height: 400px;
  overflow-y: scroll;
  scroll-padding-top:100px;
  scroll-padding-bottom:100px;
}
.x-panel-1 {
  width: 350px;
  height: 100%;
  font-size: 5em;
  background-color:silver;
  scroll-snap-align: center;
  text-align:center;
  vertical-align:middle;
}
.x-panel-2 {
  align-items: center;
  justify-content: center;
  width: 350px;
  height: 100%;
  font-size: 5em;
  background-color:teal;
  scroll-snap-align: center;
  text-align:center;
}
.y-panel-1 {
  display: flex;
  background-color:silver;
  align-items: center;
  justify-content: center;
  height: 400px;
  font-size: 5em;
  scroll-snap-align: center;
}
.y-panel-2 {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 400px;
  font-size: 5em;
  background-color:teal;
  scroll-snap-align: center;
}
    </style>
  </head>
  <body>
<h1>scroll-padding:0 100px 0 100px;</h1>
<div class="scroll-padding">
  <div><div class="x-panel-1">1</div></div>
  <div><div class="x-panel-2">2</div></div>
  <div><div class="x-panel-1">3</div></div>
  <div><div class="x-panel-2">4</div></div>
  <div><div class="x-panel-1">5</div></div>
</div>
<h1>scroll-padding left right 100px</h1>
<div class="scroll-padding-left-right-x">
  <div><div class="x-panel-1">1</div></div>
  <div><div class="x-panel-2">2</div></div>
  <div><div class="x-panel-1">3</div></div>
  <div><div class="x-panel-2">4</div></div>
  <div><div class="x-panel-1">5</div></div>
</div>
<h1>scroll-padding top bottom 100px</h1>
<div class="scroll-padding-top-bottom-y">
  <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>

scroll-padding:0 100px 0 100px;

1
2
3
4
5

scroll-padding left right 100px

1
2
3
4
5

scroll-padding top bottom 100px

1
2
3
4
5