Свойство CSS `order`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с сентября 2015 года.
Свойство order CSS задаёт порядок размещения элемента во flex- или grid-контейнере. Элементы в контейнере сортируются по возрастанию значения order, а затем в порядке их расположения в исходном коде. Элементам, для которых явно не задано значение order, присваивается значение по умолчанию 0.
Попробуйте
order: 0;
order: 3;
order: -1;
order: 2;
<section class="default-example" id="default-example"> <div class="transition-all" id="example-element">Box 1:</div> <div style="order: 1">Box 2: <code>order: 1;</code></div> <div style="order: 2">Box 3: <code>order: 2;</code></div> <div style="order: 2">Box 4: <code>order: 2;</code></div> <div style="order: 3">Box 5: <code>order: 3;</code></div> </section>
.default-example {
max-height: 300px;
display: flex;
flex-flow: column;
}
.default-example > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
margin: 0.5rem;
padding: 0.5rem;
flex: 1;
}
#example-element {
background-color: rgb(255 0 200 / 0.2);
border: 3px solid rebeccapurple;
}
#example-element::after {
content: attr(style);
outline: 2px dashed;
font-family: monospace;
}
В демонстрации выше выберите параметры слева, чтобы изменить значение свойства order розового блока. Для светло-голубых блоков заданы фиксированные значения order.
Помните о влиянии порядка элементов в исходном коде. Например, когда выбран параметр order: 2;, розовый блок располагается перед двумя синими блоками со значением order: 2;. Это происходит потому, что розовый блок находится в исходном коде перед синими блоками.
Синтаксис
/* <integer> values */ order: 5; order: -5; /* Global values */ order: inherit; order: initial; order: revert; order: revert-layer; order: unset;
Поскольку свойство order предназначено только для изменения визуального порядка элементов, а не их логического порядка или порядка обхода с клавиатуры, его нельзя использовать для невизуальных средств, таких как речь.
Это свойство определено в модуле CSS display и влияет только на элементы сетки и flex-элементы. Если для элемента задано order, но свойство display его родителя не создаёт flex- или grid-контейнер, это свойство не оказывает никакого эффекта.
Значения
-
<integer> - Обозначает порядковую группу, используемую для элемента.
Доступность
Использование свойства order приводит к несоответствию между визуальным представлением содержимого и порядком элементов в DOM. Это негативно скажется на пользователях со слабым зрением, которые используют вспомогательные технологии, например программы чтения с экрана. Если визуальный порядок отличается от порядка в DOM, взаимодействие пользователей с содержимым будет различаться в зависимости от способа доступа к нему.
- Flexbox и нарушение порядка навигации с клавиатуры — Tink (2016)
- Порядок элементов в исходном коде имеет значение — Adrian Roselli (2015)
- Пояснения к руководству 1.3 WCAG
-
[Понимание критерия успеха 1.3.2 Руководство W3C по WCAG 2.0](https://www.w3.org/TR/UNDERSTANDING-WCAG20/content-structure-separation-sequence.html)
Формальное определение
| Начальное значение | 0 |
|---|---|
| Применяется к | Flex-элементы, элементы сетки и абсолютно позиционированные дочерние элементы flex- и grid-контейнеров |
| Наследуется | нет |
| Вычисленное значение | как задано |
| Тип анимации | целое число <a href="/en-US/docs/Web/CSS/Reference/Values/integer#interpolation" title="Значения типа данных CSS <integer> интерполируются дискретными целочисленными шагами. Вычисление выполняется так, как если бы это были вещественные числа с плавающей точкой, а дискретное значение получается с помощью функции floor.">целое число</a> |
Формальный синтаксис
order = <integer> <integer> = <number-token>
Примеры
Упорядочивание элементов во flex-контейнере
В этом примере мы создадим классический макет с двумя боковыми панелями.
HTML
Добавим заголовок, нижний колонтитул и основную область содержимого. Основная область включает статью и две боковые панели. Обратите внимание на их порядок! Мы изменим визуальный порядок с помощью свойства CSS order.
<header>Header</header> <main> <article>Article</article> <nav>Nav</nav> <aside>Aside</aside> </main> <footer>Footer</footer>
CSS
Для оформления основной области мы используем возможности модуля гибкой блочной раскладки; задав для свойства display значение flex, мы превратим элемент <main> во flex-контейнер. По умолчанию это создаёт flex-элементы одинаковой высоты. Для обеих боковых панелей задаётся абсолютная width, а элемент <article> займёт всё положительное свободное пространство благодаря коэффициенту flex-grow, заданному с помощью сокращённого свойства flex.
Затем мы задаём разные значения свойства order для каждого из трёх дочерних элементов flex-контейнера; таким образом, визуальный порядок компонентов задаётся в CSS, а не определяется порядком их объявления в HTML.
main {
display: flex;
text-align: center;
}
main > article {
flex: 1;
order: 2;
}
main > nav {
width: 200px;
order: 1;
}
main > aside {
width: 200px;
order: 3;
}
Результат
Элемент <article> первым идёт в исходном коде, но визуально отображается в центре.
Спецификации
| Спецификация |
|---|
| CSS Display Module Level 3 # order-property |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
order |
29
21
|
12
12
|
20Начиная с Firefox 28 поддерживается многострочная flex-разметка.49
|
12.1 |
9
7
|
29
25
|
20Начиная с Firefox для Android 28 поддерживается многострочная flex-разметка.49
|
12.1 |
9
7
|
2.0
1.5
|
4.4
4.4
|
9
7
|
См. также
- Основные понятия flexbox
- Упорядочивание flex-элементов
- CSS Grid Layout и доступность
- Модуль CSS display
- Порядок чтения
© 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/order