Spec-Zone.ru › CSS

Свойство CSS `scroll-marker-group`

Базовая поддержка Ограниченная доступность

Эта функция не входит в базовую поддержку, поскольку не работает в некоторых наиболее широко используемых браузерах.

Экспериментальная: Это экспериментальная технология
Перед использованием в рабочей среде внимательно ознакомьтесь с таблицей совместимости браузеров.

Экспериментальная: Это экспериментальная технология
Перед использованием в рабочей среде внимательно ознакомьтесь с таблицей совместимости браузеров.

Свойство scroll-marker-group CSS определяет, будет ли для элемента контейнера прокрутки создан псевдоэлемент ::scroll-marker-group. Если он присутствует, свойство также задаёт, следует ли размещать группу маркеров прокрутки before или after содержимого контейнера группы прокрутки в визуальном порядке и порядке перехода клавишей Tab по умолчанию.

Примечание: Чтобы создать контейнер группы маркеров прокрутки из существующего элемента, содержащего набор элементов <a>, используйте свойство scroll-target-group. Ознакомьтесь с различиями в поведении этих двух свойств.

Синтаксис

/* Single values */
scroll-marker-group: before;
scroll-marker-group: after;
scroll-marker-group: none;

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

Значения

Для этого свойства указывается одно из следующих ключевых слов:

after
Псевдоэлемент ::scroll-marker-group создаётся как соседний элемент DOM-элементов-потомков контейнера прокрутки — непосредственно перед ними и любыми сгенерированными псевдоэлементами ::scroll-button(). Он располагается в конце порядка перехода клавишей Tab и порядка блоков макета контейнера (но не в структуре DOM).
before
Псевдоэлемент ::scroll-marker-group создаётся как соседний элемент DOM-элементов-потомков контейнера прокрутки — непосредственно перед ними и любыми сгенерированными псевдоэлементами ::scroll-button(). Группа маркеров прокрутки располагается в начале порядка перехода клавишей Tab и порядка блоков макета контейнера.
none
Для элемента не будет создан псевдоэлемент ::scroll-marker-group. Это значение по умолчанию.

Примечание: В соответствии с рекомендациями по доступности визуальное положение контейнера группы маркеров прокрутки должно соответствовать порядку перехода клавишей Tab. Если с помощью стилей, применённых к ::scroll-marker-group, группа маркеров размещается в начале содержимого, поместите её в начало порядка перехода клавишей Tab, используя before. Если группа размещается в конце содержимого, поместите её в конец порядка перехода клавишей Tab, используя after.

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

Исходное значение none
Применяется к контейнерам прокрутки
Наследуется нет
Вычисленное значение как задано
Тип анимации дискретный

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

scroll-marker-group = 
  none |
  before |
  after

Примеры

Полные примеры использования свойства scroll-marker-group см. в статье Создание каруселей с помощью CSS.

Размещение маркеров прокрутки

В этом примере показаны три значения свойства scroll-marker-group.

HTML

У нас есть простой список HTML <ul> с несколькими элементами списка <li>.

<fieldset>
  <legend>Select <code>scroll-marker-group</code> value:</legend>
  <label><input type="radio" name="p" value="before" />before</label>
  <label><input type="radio" name="p" value="after" checked />after</label>
  <label><input type="radio" name="p" value="none" />none</label>
</fieldset>
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
  <li>Item 4</li>
  <li>Item 5</li>
  <li>Item 6</li>
  <li>Item 7</li>
  <li>Item 8</li>
</ul>

CSS

Мы превращаем <ul> в карусель, задавая свойству display значение flex и создавая одну строку элементов <li> без переноса. Свойству overflow-x задаётся значение auto, поэтому при переполнении контейнера элементами по оси x содержимое будет прокручиваться по горизонтали. Затем мы превращаем <ul> в контейнер привязки прокрутки, чтобы элементы всегда фиксировались на месте при прокрутке контейнера, задав свойству scroll-snap-type значение mandatory.

Мы создаём контейнер группы маркеров прокрутки с помощью свойства scroll-marker-group, размещая группу после всего содержимого.

ul {
  display: flex;
  gap: 4vw;
  padding-left: 0;
  margin: 32px 0;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;

  scroll-marker-group: after;
}

Затем мы оформляем элементы <li>, используя свойство flex, чтобы задать им 33% ширины контейнера. Значение start свойства scroll-snap-align приводит к тому, что при прокрутке содержимого левая сторона самого левого видимого элемента фиксируется у левого края контейнера.

li {
  list-style-type: none;
  background-color: #eeeeee;
  flex: 0 0 33%;
  scroll-snap-align: start;
  text-align: center;
  line-height: 5;
}

Затем мы используем псевдоэлемент ::scroll-marker, чтобы создать квадратный маркер с красной рамкой для каждого элемента списка, и применяем стили к псевдоэлементу ::scroll-marker-group, чтобы расположить маркеры прокрутки в строку с интервалом 0.2em между ними.

li::scroll-marker {
  content: " ";
  border: 1px solid red;
  height: 1em;
  width: 1em;
}

::scroll-marker-group {
  display: flex;
  gap: 0.2em;
}

Наконец, для удобства пользователей мы задаём маркеру прокрученного в данный момент элемента стиль, отличающийся от остальных, используя псевдокласс :target-current.

::scroll-marker:target-current {
  background: red;
}
fieldset {
  width: 20em;
}

label {
  font-family: monospace;
  display: block;
}

:has([value="before"]:checked) ul {
  scroll-marker-group: before;
}
:has([value="after"]:checked) ul {
  scroll-marker-group: after;
}

:has([value="none"]:checked) ul {
  scroll-marker-group: none;
}

Результат

Обратите внимание на расположение контейнера группы маркеров прокрутки. Сравните порядок перехода клавишей Tab для before и after, а также обратите внимание, что группа исчезает, когда задано значение none.

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

Спецификация
Модуль CSS Overflow, уровень 5
# scroll-marker-group-property

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

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android WebView для iOS
scroll-marker-group
135
135
Нет
120
Нет
135
Нет
89
Нет
29.0
135
Нет
after
135
135
Нет
120
Нет
135
Нет
89
Нет
29.0
135
Нет
before
135
135
Нет
120
Нет
135
Нет
89
Нет
29.0
135
Нет
none
135
135
Нет
120
Нет
135
Нет
89
Нет
29.0
135
Нет

См. также

  • scroll-target-group
  • ::scroll-button()
  • ::scroll-marker-group
  • ::scroll-marker
  • :target-current
  • :target-before
  • :target-after
  • Создание каруселей с помощью CSS
  • Модуль переполнения CSS
  • Галерея CSS-каруселей на chrome.dev (2025)

© 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-marker-group

Spec-Zone.ru

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