Spec-Zone.ru › CSS

scroll-margin-inline

Baseline Широко поддерживается

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

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Свойство scroll-margin-inline сокращенной записи задаёт отступы прокрутки элемента в направлении вставки.

Попробуйте

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

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

  • scroll-margin-inline-end
  • scroll-margin-inline-start

Синтаксис

/* <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, нахождения его прямоугольной ограничивающей рамки (выровненной по осям в пространстве координат контейнера прокрутки), а затем добавления указанных отступов.

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

Начальное значение как каждое из свойств сокращения:
  • scroll-margin-inline-start: 0
  • scroll-margin-inline-end: 0
Применимо к всем элементам
Наследуется нет
Вычисленное значение как каждое из свойств сокращения:
  • scroll-margin-inline-start: как указано
  • scroll-margin-inline-end: как указано
Тип анимации по типу вычисленного значения

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

scroll-margin-inline = 
<length>{1,2}

Примеры

Простой пример

Этот пример реализует что-то очень похожее на интерактивный пример выше, за исключением того, что здесь мы объясним, как это реализовано.

Цель здесь — создать четыре горизонтально прокручивающихся блока, второй и третий из которых «прилипают» на место, находясь рядом, но не совсем справа от каждого блока.

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.

Результат

Попробуйте сами:

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

Спецификация
CSS Модуль «Прилипания при прокрутке» уровень 1
# propdef-scroll-margin-inline

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

Рабочие столы Мобильные устройства
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

См. также

  • CSS прилипание при прокрутке
  • Хорошо управляемая прокрутка с помощью CSS прилипания при прокрутке

© 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

Spec-Zone.ru

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