align-items

Властивість CSS align-items (шикувати елементи) задає значення align-self для всіх безпосередніх нащадків як єдиної групи. У Флексбоксі ця властивість контролює шикування елементів на перехресній осі. При сітковому компонуванні вона контролює шикування елементів на блоковій осі, в межах їхньої сіткової області.

Спробуйте його в дії

Інтерактивний приклад нижче демонструє частину значень align-items при використанні сіткового та гнучкого компонування.

Синтаксис

/* Базові ключові слова */
align-items: normal;
align-items: stretch;

/* Позиційне шикування */
/* align-items не приймає значення left і right */
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;

/* Шикування за базовою лінією */
align-items: baseline;
align-items: first baseline;
align-items: last baseline; /* Шикування переповнення (лише для позиційного шикування) */
align-items: safe center;
align-items: unsafe center;

/* Глобальні значення */
align-items: inherit;
align-items: initial;
align-items: revert;
align-items: revert-layer;
align-items: unset;

Значення

normal

Дія цього ключового слова залежить від активного способу компонування:

  • При компонуванні з абсолютним позиціонуванням – поводиться як start у заміщених блоках з абсолютним позиціонуванням і як stretch у всіх інших блоках з абсолютним позиціонуванням.
  • При статичному позиціонуванні при компонуванні з абсолютним позиціонуванням – поводиться як stretch.
  • Для гнучких елементів – поводиться як stretch.
  • Для сіткових елементів – призводить до логіки, подібної до логіки stretch, окрім блоків зі співвідношенням сторін чи природними розмірами, для яких це ключове слово поводиться як start.
  • Ця властивість не застосовується до елементів блокового рівня, а також до комірок таблиць.
center

Рамки полів гнучких елементів центруються в межах шеренги на перехресній осі. Якщо перехресний розмір елемента перевищує розмір гнучкого контейнера, то такий елемент рівномірно вийде за межі контейнера з обох боків.

start

Елементи нагромаджуються врівень одне до одного у напрямку до початкового краю контейнера шикування за відповідною віссю.

end

Елементи нагромаджуються врівень одне до одного у напрямку до кінця контейнера шикування за відповідною віссю.

self-start

Елементи нагромаджуються врівень до краю з початкового боку елемента контейнера шикування, за відповідною віссю.

self-end

Елементи нагромаджуються врівень до краю з кінцевого боку елемента контейнера шикування, за відповідною віссю.

baseline, first baseline, last baseline

Усі гнучкі елементи шикуються так, що їхні базові лінії гнучкого контейнера збігаються. Елемент з найбільшою відстанню між його перехресно-початковим зовнішнім краєм та його базовою лінією стає врівень з перехресно-початковим краєм шеренги.

stretch

Якщо елементи менші за контейнер шикування, то елементи з автоматичним розміром рівномірно розтягуються, щоб заповнити контейнер, з урахуванням обмежень на ширину та висоту елементів.

anchor-center

У випадку елементів з якірним позиціюванням це значення вишиковує елементи біля центру заданого якірного елемента за блоковим напрямком. Дивіться Центрування на якорі за допомогою anchor-center.

safe

Використовуються вкупі з ключовим словом шикування. Якщо обране ключове слово означає, що елемент виходить за межі контейнера шикування, призводячи до втрати даних, то елемент замість цього шикується так, ніби спосіб шикування – start.

unsafe

Використовується вкупі з ключовим словом шикування. Незалежно від відносних розмірів елемента й контейнера шикування, а також того, чи може відбутися вихід за межі зі втратою даних, виконується задане значення шикування.

Іще є два значення, визначені для флексбоксу, оскільки вони засновані на концепціях осей гнучкої моделі, то працюють також і при сітковому компонуванні:

flex-start

Використовується лише при гнучкому компонуванні, вирівнює гнучкі елементи в гнучкому контейнері біля початкового боку на його головній чи перехресній осі. Коли використовується поза контекстом гнучкого форматування, це значення поводиться як start.

flex-end

Використовується лише при гнучкому компонуванні, вирівнює гнучкі елементи в гнучкому контейнері біля кінцевого боку на його головній чи перехресній осі. Коли використовується поза контекстом гнучкого форматування, це значення поводиться як end.

Формальне визначення

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

normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]

де
<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,
.grid {
  height: 200px;
  width: 500px;
  align-items: initial; /* Можна змінити в живому зразку */
  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;
}

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 />лінія 2</div>
  <div id="item5">5</div>
  <div id="item6">6</div>
</div>

Результат

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

Якщо ви це бачите — значить, щось трапилося з цією сторінкою.

Сумісність із браузерами

desktop mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet
Supported in Flex Layout Chrome Full support 52
Edge Full support 12
Firefox Full support 20
footnote
Internet Explorer Full support 11
footnote
Opera Full support 12.1
Safari Full support 9
WebView Android Full support 52
Chrome Android Full support 52
Firefox for Android Full support 20
footnote
Opera Android Full support 12.1
Safari on iOS Full support 9
Samsung Internet Full support 6.0
baseline
Chrome Full support 21
Edge Full support 79
Firefox Full support 28
Internet Explorer No support Ні
Opera Full support 44
Safari Full support 7
WebView Android Full support 57
Chrome Android Full support 25
Firefox for Android Full support 28
Opera Android Full support 43
Safari on iOS Full support 7
Samsung Internet Full support 7.0
first baseline
Chrome Full support 59
Edge Full support 79
Firefox Full support 52
Internet Explorer No support Ні
Opera Full support 46
Safari Full support 11
WebView Android Full support 59
Chrome Android Full support 59
Firefox for Android Full support 52
Opera Android Full support 43
Safari on iOS Full support 11
Samsung Internet Full support 7.0
last baseline
Chrome No support 59 –  86
footnote
Edge No support 79 –  86
footnote
Firefox Full support 52
Internet Explorer No support Ні
Opera Full support 46
Safari Partial support 11
footnote
WebView Android Full support 59
Chrome Android No support 59 –  86
footnote
Firefox for Android Full support 52
Opera Android Full support 43
Safari on iOS Partial support 11
footnote
Samsung Internet Full support 7.0
safe and unsafe
Chrome No support Ні
footnote
Edge No support Ні
footnote
Firefox Full support 63
Internet Explorer No support Ні
Opera No support Ні
footnote
Safari No support Ні
footnote
WebView Android No support Ні
footnote
Chrome Android No support Ні
footnote
Firefox for Android Full support 63
Opera Android No support Ні
footnote
Safari on iOS No support Ні
footnote
Samsung Internet No support Ні
footnote
start and end
Chrome Full support 93
Edge Full support 93
Firefox Full support 45
Internet Explorer No support Ні
Opera Full support 79
footnote
Safari No support Ні
WebView Android Full support 93
Chrome Android Full support 93
Firefox for Android Full support 45
Opera Android No support Ні
Safari on iOS No support Ні
Samsung Internet Full support 17.0
Supported in Grid Layout Chrome Full support 57
Edge Full support 16
Firefox Full support 52
Internet Explorer No support Ні
Opera Full support 44
Safari Full support 10.1
WebView Android Full support 57
Chrome Android Full support 52
Firefox for Android Full support 52
Opera Android Full support 43
Safari on iOS Full support 10.3
Samsung Internet Full support 6.2
start and end
Chrome Full support 57
Edge Full support 79
Firefox Full support 52
Internet Explorer No support Ні
Opera Full support 44
Safari Full support 11
WebView Android Full support 57
Chrome Android Full support 57
Firefox for Android Full support 52
Opera Android Full support 43
Safari on iOS Full support 11
Samsung Internet Full support 7.0

Дивіться також