Свойство 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:
Синтаксис
/* 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 = [ 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