CSS-свойство `scroll-margin-inline-end`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с января 2020 года.
Свойство scroll-margin-inline-end определяет отступ области привязки прокрутки в конце встроенного измерения, который используется для привязки этого блока к snapport. Область привязки прокрутки определяется так: берётся преобразованная рамка границы, находится её прямоугольная ограничивающая рамка (выровненная по осям в системе координат контейнера прокрутки), а затем добавляются указанные отступы.
Попробуйте
scroll-margin-inline-end: 0;
scroll-margin-inline-end: 20px;
scroll-margin-inline-end: 2em;
<section class="default-example" id="default-example">
<div class="scroller">
<div>1</div>
<div id="example-element">2</div>
<div>3</div>
</div>
<div class="info">Scroll »</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: white;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
scroll-snap-align: end;
}
.scroller > div:nth-child(even) {
background-color: white;
color: rebeccapurple;
}
Синтаксис
/* <length> values */ scroll-margin-inline-end: 10px; scroll-margin-inline-end: 1em; /* Global values */ 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>
Примеры
Базовый пример
В этом примере реализовано нечто очень похожее на интерактивный пример выше, но здесь мы объясним, как это устроено.
Наша цель — создать четыре горизонтально прокручиваемых блока, второй и третий из которых будут привязываться к позициям неподалёку от правого края каждого блока, но не вплотную к нему.
HTML
HTML содержит контейнер прокрутки с четырьмя дочерними элементами:
<div class="scroller"> <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 black;
scroll-snap-type: x mandatory;
}
Для привязки прокрутки важны overflow-x: scroll, благодаря которому содержимое будет прокручиваться, а не скрываться, и scroll-snap-type: x mandatory, которое задаёт привязку прокрутки вдоль горизонтальной оси и гарантирует, что прокрутка всегда будет останавливаться в точке привязки.
Дочерние элементы оформлены следующим образом:
.scroller > div {
flex: 0 0 250px;
width: 250px;
background-color: rebeccapurple;
color: white;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
scroll-snap-align: end;
}
.scroller > div:nth-child(2n) {
background-color: white;
color: rebeccapurple;
}
Здесь важнее всего scroll-snap-align: end: оно указывает, что назначенными точками привязки служат правые края (в нашем случае — «концы» вдоль оси x).
Наконец, зададим значения отступа прокрутки: разные для второго и третьего дочерних элементов:
.scroller > div:nth-child(2) {
scroll-margin-inline-end: 1rem;
}
.scroller > div:nth-child(3) {
scroll-margin-inline-end: 2rem;
}
Это означает, что при прокрутке мимо средних дочерних элементов прокрутка будет привязываться на 1rem за конечным краем встроенного измерения второго <div> и на 2rems за конечным краем встроенного измерения третьего <div>.
Результат
Попробуйте сами:
Спецификации
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari для iOS | Samsung Internet | WebView Android | WebView для iOS | |
scroll-margin-inline-end |
69 |
79 |
68 |
56 |
15 |
69 |
68 |
48 |
15 |
10.0 |
69 |
15 |
См. также
- модуль привязки прокрутки CSS
- Точная настройка прокрутки с помощью привязки прокрутки CSS на web.dev (2018)
© 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-margin-inline-end