scroll-margin-inline
Baseline Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
Свойство scroll-margin-inline сокращенной записи задаёт отступы прокрутки элемента в направлении вставки.
Попробуйте
Составные свойства
Это свойство является сокращением следующих свойств CSS:
Синтаксис
/* <length> values */ scroll-margin-inline: 10px; scroll-margin-inline: 1em 0.5em; /* Global values */ scroll-margin-inline: inherit; scroll-margin-inline: initial; scroll-margin-inline: revert; scroll-margin-inline: revert-layer; scroll-margin-inline: unset;
Значения
<length>-
Отступ от соответствующего края контейнера прокрутки.
Описание
Значения scroll-margin представляют отступы, определяющие область захвата прокрутки, используемую для привязки этого блока к области захвата. Область захвата прокрутки определяется путем взятия преобразованного блока border, нахождения его прямоугольной ограничивающей рамки (выровненной по осям в пространстве координат контейнера прокрутки), а затем добавления указанных отступов.
Формальное определение
| Начальное значение | как каждое из свойств сокращения: |
|---|---|
| Применимо к | всем элементам |
| Наследуется | нет |
| Вычисленное значение | как каждое из свойств сокращения:
|
| Тип анимации | по типу вычисленного значения |
Формальный синтаксис
Примеры
Простой пример
Этот пример реализует что-то очень похожее на интерактивный пример выше, за исключением того, что здесь мы объясним, как это реализовано.
Цель здесь — создать четыре горизонтально прокручивающихся блока, второй и третий из которых «прилипают» на место, находясь рядом, но не совсем справа от каждого блока.
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 #000;
scroll-snap-type: x mandatory;
}
Основные части, относящиеся к «прилипанию» при прокрутке, это overflow-x: scroll, что гарантирует, что содержимое будет прокручиваться, а не скрываться, и scroll-snap-type: x mandatory, которое диктует, что «прилипание» при прокрутке должно происходить по горизонтали, и прокрутка всегда будет останавливаться на точке «прилипания».
Элементы-потомки стилизованы следующим образом:
.scroller > div {
flex: 0 0 250px;
width: 250px;
background-color: #663399;
color: #fff;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
scroll-snap-align: end;
}
.scroller > div:nth-child(2n) {
background-color: #fff;
color: #663399;
}
Наиболее важная часть здесь — scroll-snap-align: end, которая определяет, что правые края (концы по оси x, в нашем случае) являются обозначенными точками «прилипания».
И наконец, мы определяем значения отступа прокрутки, разные для второго и третьего дочерних элементов:
.scroller > div:nth-child(2) {
scroll-margin-inline: 1rem;
}
.scroller > div:nth-child(3) {
scroll-margin-inline: 2rem;
}
Это означает, что при прокрутке мимо средних дочерних элементов прокрутка «прилипнет» к 1rem за пределами правого края (вдоль оси x) второго <div>, и 2rems за пределами правого края (вдоль оси x) третьего <div>.
Примечание: Здесь мы устанавливаем scroll-margin для начала и конца оси (x в нашем случае), но для «прилипания» действительно важен только край «конца». Здесь вполне достаточно установить отступ прокрутки только на этом крае, например, с помощью scroll-margin-inline: 0 1rem, или scroll-margin-inline-end: 1rem.
Результат
Попробуйте сами:
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
scroll-margin-inline |
69 | 79 | 68 | 56 | 15 | 69 | 68 | 48 | 15 | 10.0 | 69 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-margin-inline