Spec-Zone.ru › CSS

Свойство CSS `reading-order`

Baseline Ограниченная доступность

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

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

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

Свойство reading-order CSS позволяет изменять порядок чтения дочернего элемента относительно его элементов-соседей в контейнере потока чтения.

Синтаксис

/* <integer> values */
reading-order: 1;
reading-order: -1;

/* Global values */
reading-order: inherit;
reading-order: initial;
reading-order: revert;
reading-order: revert-layer;
reading-order: unset;

Значение

<integer>
Обозначает порядковую группу, к которой принадлежит элемент.

Описание

Если у родительского контейнера элемента — блочного, flex или grid — свойству reading-flow задано значение, отличное от normal, свойство reading-order можно использовать, чтобы задать положение элемента в потоке чтения относительно его соседей.

При чтении и навигации элементы внутри блочного, flex- или grid-контейнера сортируются по возрастанию значения reading-order. Если у нескольких соседних элементов одинаковое значение reading-order, эти элементы сортируются в соответствии со свойством контейнера reading-flow. Соседним элементам, которым явно не задано значение reading-order, присваивается значение по умолчанию 0. Благодаря этому все дочерние элементы контейнера потока чтения по умолчанию принадлежат одной порядковой группе.

Соседние элементы упорядочиваются от группы с наименьшим номером к группе с наибольшим номером. Поэтому, чтобы элемент читался после соседних элементов, ему можно задать значение reading-order или 1 либо большее. Чтобы элемент читался перед соседними элементами, ему можно задать значение reading-order или -1 либо меньшее.

Свойство reading-order определяет порядок чтения и перехода по элементам с помощью клавиши Tab, но не влияет на визуальный порядок.

Взаимодействие с tabindex

Если дочерние элементы контейнера потока чтения, которые обычно не могут получать фокус, сделать фокусируемыми с помощью атрибутов tabindex="0", их порядок чтения будет изменён ожидаемым образом свойствами reading-flow и reading-order, точно так же, как у интерактивных элементов, например <a> или <button>.

Однако любые попытки изменить порядок перехода по содержимому контейнера потока чтения с помощью положительных значений tabindex будут проигнорированы — их переопределит действие свойств reading-flow и reading-order. Как правило, использовать эти значения не следует; см. статью Не используйте tabindex больше 0. Свойства reading-flow и reading-order позволяют гораздо удобнее изменять порядок перехода по элементам, если это необходимо.

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

Исходное значение 0
Применяется к Блочные контейнеры, flex-контейнеры и grid-контейнеры
Наследуется нет
Вычисленное значение Указанное целое число
Тип анимации по типу вычисленного значения

Примеры

Порядок строк сетки

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

HTML

В нашей разметке шесть элементов <a> находятся внутри обёртки <div>.

<div class="wrapper">
  <a href="#">Item 1</a>
  <a class="bottom" href="#">Item 2</a>
  <a href="#">Item 3</a>
  <a class="top" href="#">Item 4</a>
  <a href="#">Item 5</a>
  <a href="#">Item 6</a>
</div>

CSS

Для элемента <div> мы задаём свойству grid-auto-flow значение dense, поэтому элементы могут отображаться не в порядке исходного кода. Для свойства reading-order элемента <a> с классом top задано значение -1, поэтому «Элемент 4» будет первым в потоке чтения. Для свойства reading-order элемента <a> с классом bottom задано значение 21, поэтому «Элемент 4» будет последним в порядке чтения. Остальные элементы будут прочитаны между ними в порядке строк сетки, поскольку для свойства reading-flow элемента <div> задано значение grid-rows.

.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 150px);
  grid-auto-flow: dense;
  reading-flow: grid-rows;
}

.top {
  reading-order: -1;
}

.bottom {
  reading-order: 21;
}

Результат

Демонстрация выше отображается следующим образом:

Попробуйте перемещаться по ссылкам с помощью клавиши Tab. Обратите внимание, что переход к «Элементу 4» происходит первым, а к «Элементу 2» — последним из-за изменённых значений reading-order. Между ними переход выполняется в порядке строк сетки.

Переопределение порядка исходного кода

В этом примере нечётным элементам задано меньшее значение reading-order, поэтому они будут прочитаны раньше остальных в группе независимо от порядка в исходном коде или порядка отображения.

HTML

В нашей разметке пять элементов <a> находятся внутри обёртки <div>.

<div class="wrapper">
  <a href="#">Item 1</a>
  <a href="#">Item 2</a>
  <a href="#">Item 3</a>
  <a href="#">Item 4</a>
  <a href="#">Item 5</a>
</div>

CSS

Для свойства reading-flow элемента <div> задано значение source-order, которое позволяет использовать reading-order для переопределения порядка чтения исходного кода по умолчанию. Для нечётных элементов <a> задано значение -1 свойства reading-order, поэтому они читаются перед чётными элементами.

.wrapper {
  reading-flow: source-order;
}

.wrapper > a {
  display: block;
}

.wrapper a:nth-child(odd) {
  reading-order: -1;
}

Результат

Демонстрация выше отображается следующим образом:

Попробуйте перемещаться по ссылкам с помощью клавиши Tab и обратите внимание, что переход к «Элементу 1», «Элементу 3» и «Элементу 5» происходит первым из-за изменённых значений reading-order. Затем переход выполняется в порядке исходного кода.

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

Спецификация
CSS Display Module Level 4
# propdef-reading-order

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

Компьютер Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
reading-order
137
137
Нет
121
Нет
137
Нет
90
Нет
30.0
137
Нет

См. также

  • reading-flow
  • Примеры CSS reading-flow на сайте chrome.dev

© 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/reading-order

Spec-Zone.ru

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