Spec-Zone.ru › CSS

Свойство CSS `scroll-padding`

Базовая поддержка Широко доступно

Эта возможность хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с января 2020 года.

scroll-padding — это свойство-CSS-сокращение, которое одновременно задаёт отступы прокрутки со всех сторон элемента. Оно задаёт смещения, определяющие оптимальную область просмотра прокручиваемой области внутри контейнера прокрутки.

Попробуйте

scroll-padding: 0;
scroll-padding: 20px;
scroll-padding: 20%;
<section class="default-example" id="default-example">
  <div class="scroller" id="example-element">
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>
  <div class="info">Scroll »</div>
</section>
.default-example .info {
  inline-size: 100%;
  padding: 0.5em 0;
  font-size: 90%;
  writing-mode: vertical-rl;
}

.scroller {
  text-align: left;
  height: 250px;
  width: 270px;
  overflow-y: scroll;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  border: 1px solid black;
  scroll-snap-type: y mandatory;
}

.scroller > div {
  flex: 0 0 250px;
  background-color: rebeccapurple;
  color: white;
  font-size: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  scroll-snap-align: start;
}

.scroller > div:nth-child(even) {
  background-color: white;
  color: rebeccapurple;
}

Составные свойства

Это свойство является сокращением для следующих свойств CSS:

  • scroll-padding-bottom
  • scroll-padding-left
  • scroll-padding-right
  • scroll-padding-top

Синтаксис

/* Keyword values */
scroll-padding: auto;

/* <length> values */
scroll-padding: 10px;
scroll-padding: 1em 0.5em 1em 1em;
scroll-padding: 10%;

/* Global values */
scroll-padding: inherit;
scroll-padding: initial;
scroll-padding: revert;
scroll-padding: revert-layer;
scroll-padding: unset;

Значения

<length-percentage>
Внутреннее смещение от соответствующего края прокручиваемой области в виде допустимого значения <length> или <percentage>.
auto
Смещение определяется пользовательским агентом. Как правило, это будет 0px, однако пользовательский агент может определить и использовать другое значение, если оно более уместно.

Описание

Свойство scroll-padding является сокращением, задающим scroll-padding-top, scroll-padding-right, scroll-padding-bottom и scroll-padding-left именно в таком порядке: верхний, правый, нижний и левый отступы прокрутки контейнера соответственно.

Свойство scroll-padding полезно при создании контейнеров с привязкой прокрутки: оно позволяет задавать смещения для оптимальной области просмотра прокручиваемой области — региона, используемого в качестве целевой области для размещения элементов в поле зрения пользователя. Так можно создавать внутренние отступы в прокручиваемой области, чтобы освободить место для объектов, которые могут закрывать содержимое, например фиксированных панелей инструментов или боковых панелей, либо увеличить расстояние между целевым элементом и краями прокручиваемой области.

Хотя это свойство определено в модуле CSS scroll snap, оно применяется ко всем контейнерам прокрутки независимо от значения свойства scroll-snap-type.

Формальное определение

Исходное значение как у каждого из свойств-сокращений:
  • scroll-padding-bottom
  • scroll-padding-left
  • scroll-padding-right
  • scroll-padding-top
Применяется к контейнерам прокрутки
Наследуется нет
Проценты относительно прокручиваемой области контейнера прокрутки
Вычисленное значение как у каждого из свойств-сокращений:
  • scroll-padding-bottom
  • scroll-padding-left
  • scroll-padding-right
  • scroll-padding-top
Тип анимации по типу вычисленного значения

Формальный синтаксис

scroll-padding = 
  [ auto | <length-percentage> ]{1,4}

<length-percentage> = 
  <length> |
  <percentage>

Примеры

Как не дать фиксированному заголовку скрывать содержимое

Распространённый случай использования scroll-padding — предотвращение скрытия прокручиваемого содержимого фиксированным заголовком. В этом примере показано, как использовать scroll-padding для этой цели.

HTML

Заголовок содержит ссылки на три раздела страницы.

<header>
  <nav>
    <a href="#section-1">Section 1</a>
    <a href="#section-2">Section 2</a>
    <a href="#section-3">Section 3</a>
  </nav>
</header>
<main>
  <section id="section-1">
    <h2>Section 1</h2>
    <p>Use the links in the header to jump to another section.</p>
  </section>
  <section id="section-2">
    <h2>Section 2</h2>
    <p>This heading remains visible below the fixed header.</p>
  </section>
  <section id="section-3">
    <h2>Section 3</h2>
    <p>This heading also remains visible below the fixed header.</p>
  </section>
</main>

CSS

header {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #eeeeee;
}

nav {
  display: flex;
  gap: 1rem;
}

section {
  box-sizing: border-box;
  padding: 1rem;
  min-height: 60vh;
}

h2 {
  margin-top: 0;
}

Заголовок зафиксирован в верхней части области просмотра, а его высота составляет 60px. Для корневого элемента задаётся scroll-padding, чтобы при прокрутке к разделу зарезервировать 60px в верхней части области просмотра; для остальных сторон смещение не задаётся.

html {
  --navbar-height: 60px;

  scroll-padding: var(--navbar-height) 0 0;
  scroll-behavior: smooth;
}

header {
  position: fixed;
  top: 0;
  height: var(--navbar-height);
  width: 100%;
}

Мы добавляем отступ к основному содержимому, чтобы при первоначальной загрузке первый раздел начинался ниже заголовка.

main {
  padding-top: var(--navbar-height);
}

Результат

Нажимайте ссылки в заголовке, чтобы переходить между разделами. Каждый раздел появляется под заголовком, а его заголовок остаётся видимым. Откройте этот пример в интерактивной среде, удалите строку scroll-padding и снова нажмите ссылки, чтобы увидеть, как заголовок закрывает заголовки разделов.

Спецификации

Спецификация
Модуль CSS Scroll Snap, уровень 1
# scroll-padding

Совместимость с браузерами

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
scroll-padding
69
79
68
56
14.1
11–14.1Отступ прокрутки не применяется при прокрутке к целевому фрагменту или scrollIntoView(); см. ошибку 179379.
69
68
48
14.5
11–14.5Отступ прокрутки не применяется при прокрутке к целевому фрагменту или scrollIntoView(); см. ошибку 179379.
10.0
69
14.5
11–14.5Отступ прокрутки не применяется при прокрутке к целевому фрагменту или scrollIntoView(); см. ошибку 179379.
auto
69
79
68
56
11
69
68
48
11
10.0
69
11

См. также

  • scroll-snap-type
  • Основные понятия привязки прокрутки
  • Модуль CSS scroll snap
  • Модуль переполнения CSS
  • Модуль анимаций CSS, управляемых прокруткой

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/scroll-padding

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API