CSS-свойство `align-items`
Базовая поддержка Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она поддерживается браузерами с сентября 2015 года.
Свойство align-items из CSS задаёт значение align-self для всех непосредственных дочерних элементов как группы. Во flexbox оно управляет выравниванием элементов по поперечной оси. В макете grid оно управляет выравниванием элементов по блочной оси внутри их областей сетки.
В интерактивном примере ниже используется макет grid, чтобы показать некоторые значения этого свойства.
Попробуйте
align-items: stretch;
align-items: center;
align-items: start;
align-items: end;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="transition-all" id="example-element">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
</div>
</section>
#example-element {
border: 1px solid #c5c5c5;
display: grid;
width: 200px;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 80px;
grid-gap: 10px;
}
#example-element > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
}
Синтаксис
/* Basic keywords */ align-items: normal; align-items: stretch; /* Positional alignment */ /* align-items does not take left and right values */ align-items: center; align-items: start; align-items: end; align-items: flex-start; align-items: flex-end; align-items: self-start; align-items: self-end; align-items: anchor-center; /* Baseline alignment */ align-items: baseline; align-items: first baseline; align-items: last baseline; /* Overflow alignment (for positional alignment only) */ align-items: safe center; align-items: unsafe center; /* Global values */ align-items: inherit; align-items: initial; align-items: revert; align-items: revert-layer; align-items: unset;
Значения
Этому свойству задаётся одно или два из следующих ключевых слов:
-
normal - Действие этого ключевого слова зависит от используемого режима макета:
- В макетах с абсолютным позиционированием ключевое слово ведёт себя как
startдля замещаемых абсолютно позиционированных блоков и какstretchдля всех остальных абсолютно позиционированных блоков. - В статическом положении макетов с абсолютным позиционированием ключевое слово ведёт себя как
stretch. - Для flex-элементов ключевое слово ведёт себя как
stretch. - Для grid-элементов это ключевое слово приводит к поведению, похожему на
stretch, за исключением блоков с соотношением сторон или внутренним размером, для которых оно ведёт себя какstart. - Свойство не применяется к блочным элементам и ячейкам таблиц.
- В макетах с абсолютным позиционированием ключевое слово ведёт себя как
-
center - Блоки внешних отступов flex-элементов центрируются внутри строки по поперечной оси. Если поперечный размер элемента превышает размер flex-контейнера, он будет одинаково выступать за его границы в обоих направлениях.
-
start - Элементы располагаются вплотную друг к другу у начального края контейнера выравнивания по соответствующей оси.
-
end - Элементы располагаются вплотную друг к другу у конечного края контейнера выравнивания по соответствующей оси.
-
self-start - Элементы располагаются вплотную к краю начальной стороны элемента в контейнере выравнивания по соответствующей оси.
-
self-end - Элементы располагаются вплотную к краю конечной стороны элемента в контейнере выравнивания по соответствующей оси.
-
baseline,first baseline,last baseline - Все flex-элементы выравниваются так, чтобы их базовые линии flex-контейнера совпадали. Элемент с наибольшим расстоянием между краем внешнего отступа со стороны начала поперечной оси и базовой линией располагается вплотную к краю строки со стороны начала поперечной оси.
-
stretch - Если поперечный размер элемента равен
auto, используемый размер задаётся таким, чтобы максимально заполнить контейнер, с учётом ограничений ширины и высоты элемента. Если размер элемента не является автоматическим, это значение заменяется наflex-start, а также наself-startилиself-end, если значение свойстваalign-contentконтейнера равноfirst baseline(илиbaseline) илиlast baseline. -
anchor-center - Для элементов с позиционированием относительно якоря выравнивает элементы по центру связанного элемента-якоря в направлении блока. См. раздел Центрирование относительно якоря с помощью
anchor-center. -
safe - Используется вместе с ключевым словом выравнивания. Если выбранное ключевое слово приводит к переполнению контейнера выравнивания и потере данных, элемент выравнивается так, как если бы режимом выравнивания было
start. -
unsafe - Используется вместе с ключевым словом выравнивания. Независимо от относительных размеров элемента и контейнера выравнивания, а также от вероятности переполнения с потерей данных, заданное значение выравнивания применяется.
Также существуют два значения, определённые для flexbox на основе концепций осей flex-модели; они работают и в макетах grid:
-
flex-start - Используется только в flex-макете; выравнивает flex-элементы вплотную к стороне начала главной или поперечной оси flex-контейнера. При использовании вне контекста форматирования flex это значение ведёт себя как
start. -
flex-end - Используется только в flex-макете; выравнивает flex-элементы вплотную к стороне конца главной или поперечной оси flex-контейнера. При использовании вне контекста форматирования flex это значение ведёт себя как
end.
Формальное определение
| Начальное значение | normal |
|---|---|
| Применяется к | всем элементам |
| Наследуется | нет |
| Вычисленное значение | как задано |
| Тип анимации | дискретный |
Формальный синтаксис
align-items = normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ] | anchor-center <baseline-position> = [ first | last ]? baseline <overflow-position> = unsafe | safe <self-position> = center | start | end | self-start | self-end | flex-start | flex-end
Примеры
В этом примере есть контейнер с шестью дочерними элементами. Выпадающее меню <select> позволяет переключать значение display контейнера между grid и flex. Второе меню позволяет изменять значение свойства align-items контейнера.
CSS
Мы задаём стили контейнеру и элементам так, чтобы они располагались в двух линиях или строках. Мы определили классы .flex и .grid, которые будут применяться к контейнеру с помощью JavaScript. Они задают значение display контейнера и меняют цвета фона и границы, дополнительно показывая изменение макета. У каждого из шести flex-элементов свой цвет фона; четвёртый элемент занимает две строки, а у шестого увеличен размер шрифта.
.flex,
.grid {
height: 200px;
width: 500px;
align-items: initial; /* Change the value in the live sample */
border: solid 5px transparent;
gap: 3px;
}
.flex {
display: flex;
flex-wrap: wrap;
background-color: #8c8c9f;
border-color: magenta;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, 100px);
background-color: #9f8c8c;
border-color: slateblue;
}
#item1 {
background-color: #8cffa0;
min-height: 30px;
}
#item2 {
background-color: #a0c8ff;
min-height: 50px;
}
#item3 {
background-color: #ffa08c;
min-height: 40px;
}
#item4 {
background-color: #ffff8c;
min-height: 60px;
}
#item5 {
background-color: #ff8cff;
min-height: 70px;
}
#item6 {
background-color: #8cffff;
min-height: 50px;
font-size: 30px;
}
select {
font-size: 16px;
}
.row {
margin-top: 10px;
}
div > div {
box-sizing: border-box;
border: 2px solid white;
width: 100px;
display: flex;
align-items: center;
justify-content: center;
}
HTML
Мы добавляем контейнер <div> с шестью вложенными дочерними элементами <div>. HTML-код формы и JavaScript-код, изменяющий класс контейнера, скрыты для краткости.
<div id="container" class="flex"> <div id="item1">1</div> <div id="item2">2</div> <div id="item3">3</div> <div id="item4">4<br />line 2</div> <div id="item5">5</div> <div id="item6">6</div> </div>
<div class="row">
<label for="display">display: </label>
<select id="display">
<option value="flex">flex</option>
<option value="grid">grid</option>
</select>
</div>
<div class="row">
<label for="values">align-items: </label>
<select id="values">
<option value="normal">normal</option>
<option value="flex-start">flex-start</option>
<option value="flex-end">flex-end</option>
<option value="center" selected>center</option>
<option value="baseline">baseline</option>
<option value="stretch">stretch</option>
<option value="start">start</option>
<option value="end">end</option>
<option value="self-start">self-start</option>
<option value="self-end">self-end</option>
<option value="first baseline">first baseline</option>
<option value="last baseline">last baseline</option>
<option value="safe center">safe center</option>
<option value="unsafe center">unsafe center</option>
<option value="safe right">safe right</option>
<option value="unsafe right">unsafe right</option>
<option value="safe end">safe end</option>
<option value="unsafe end">unsafe end</option>
<option value="safe self-end">safe self-end</option>
<option value="unsafe self-end">unsafe self-end</option>
<option value="safe flex-end">safe flex-end</option>
<option value="unsafe flex-end">unsafe flex-end</option>
</select>
</div>
const values = document.getElementById("values");
const display = document.getElementById("display");
const container = document.getElementById("container");
values.addEventListener("change", (evt) => {
container.style.alignItems = evt.target.value;
});
display.addEventListener("change", (evt) => {
container.className = evt.target.value;
});
Результат
Спецификации
| Спецификация |
|---|
| Модуль выравнивания блоков CSS, уровень 3 # align-items-property |
| Модуль гибкой компоновки CSS, уровень 1 # align-items-property |
Совместимость с браузерами
| Настольные | Мобильные | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
align-items |
29
21
|
12
12
|
20
49
|
16
15
|
9
7
|
29
25
|
20
49
|
16
14
|
9
7
|
2.0
1.5
|
4.4
4.4
|
9
7
|
anchor-center |
125 |
125 |
147 |
111 |
26 |
125 |
147 |
83 |
26 |
27.0 |
125 |
26 |
flex_context |
52
21–52В более ранних версиях спецификации дочерние элементы с абсолютным позиционированием рассматриваются как flex-элементы размером 0 на 0. В более поздних версиях спецификации дочерние элементы исключаются из потока, а их позиции задаются на основе свойств выравнивания и распределения. Chrome реализует новое поведение начиная с Chrome 52. |
12 |
20Многострочный flexbox поддерживается начиная с Firefox 28. |
39
15–39В более ранних версиях спецификации дочерние элементы с абсолютным позиционированием рассматриваются как flex-элементы размером 0 на 0. В более поздних версиях спецификации дочерние элементы исключаются из потока, а их позиции задаются на основе свойств выравнивания и распределения. Opera реализует новое поведение начиная с Opera 39. |
7 |
52
25–52В более ранних версиях спецификации дочерние элементы с абсолютным позиционированием рассматриваются как flex-элементы размером 0 на 0. В более поздних версиях спецификации дочерние элементы исключаются из потока, а их позиции задаются на основе свойств выравнивания и распределения. Chrome Android реализует новое поведение начиная с Chrome Android 52. |
20Многострочный flexbox поддерживается в Firefox для Android начиная с версии 28. |
41
14–41В более ранних версиях спецификации дочерние элементы с абсолютным позиционированием рассматриваются как flex-элементы размером 0 на 0. В более поздних версиях спецификации дочерние элементы исключаются из потока, а их позиции задаются на основе свойств выравнивания и распределения. Opera Android реализует новое поведение начиная с Opera Android 41. |
7 |
6.0
1.5–6.0В более ранних версиях спецификации дочерние элементы с абсолютным позиционированием рассматриваются как flex-элементы размером 0 на 0. В более поздних версиях спецификации дочерние элементы исключаются из потока, а их позиции задаются на основе свойств выравнивания и распределения. Samsung Browser реализует новое поведение начиная с Samsung Browser 6.0. |
52
4.4–52В более ранних версиях спецификации дочерние элементы с абсолютным позиционированием рассматриваются как flex-элементы размером 0 на 0. В более поздних версиях спецификации дочерние элементы исключаются из потока, а их позиции задаются на основе свойств выравнивания и распределения. WebView Android реализует новое поведение начиная с WebView Android 52. |
7 |
grid_context |
57 |
16 |
52 |
44 |
10.1 |
52 |
52 |
43 |
10.3 |
6.2 |
57 |
10.3 |
См. также
align-selfalign-contentjustify-items-
place-items— сокращённое свойство - Основные понятия flexbox
- Выравнивание элементов во flex-контейнере
- Выравнивание блоков в макете grid
- Выравнивание блоков CSS — модуль
- Гибкая компоновка CSS — модуль
- Компоновка CSS с помощью grid — модуль
© 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/align-items