align-content ⚡️ HTML и CSS с примерами кода
Свойство align-content
задаёт тип выравнивания строк внутри флекс-контейнера по поперечной оси при наличии свободного пространства.
Демо
Это свойство не влияет на однострочные flex-контейнеры (т. е. с flex-wrap: nowrap
).
- flex
- flex-basis
- flex-direction
- flex-flow
- flex-grow
- flex-shrink
- flex-wrap
- order
- justify-content
- align-content
- place-content
- justify-items
- align-items
- place-items
- justify-self
- align-self
- place-self
- row-gap
- column-gap
- gap
Синтаксис
/* Positional alignment */ align-content: center; /* Pack items around the center */ align-content: start; /* Pack items from the start */ align-content: end; /* Pack items from the end */ align-content: flex-start; /* Pack flex items from the start */ align-content: flex-end; /* Pack flex items from the end */ align-content: left; /* Pack items from the left */ align-content: right; /* Pack items from the right */ /* Baseline alignment */ align-content: baseline; align-content: first baseline; align-content: last baseline; /* Distributed alignment */ /* Distribute items evenly The first item is flush with the start, the last is flush with the end */ align-content: space-between; /* Distribute items evenly Items have a half-size space on either end */ align-content: space-around; /* Distribute items evenly Items have equal space around them */ align-content: space-evenly; /* Distribute items evenly Stretch 'auto'-sized items to fit the container */ align-content: stretch; /* Overflow alignment */ align-content: safe center; align-content: unsafe center; /* Global values */ align-content: inherit; align-content: initial; align-content: unset;
Значения
Значение по-умолчанию: stretch
Применяется к флекс-контейнеру
flex-start | Строки располагаются в начале поперечной оси. Каждая следующая строка идёт вровень с предыдущей. | |
center | Строки располагаются по центру контейнера. | |
flex-end | Строки располагаются начиная с конца поперечной оси. Каждая предыдущая строка идёт вровень со следующей. | |
space-between | Строки равномерно распределяются в контейнере и расстояние между ними одинаково. | |
space-around | Строки равномерно распределяются таким образом, чтобы пространство между двумя соседними строками было одинаковым. Пустое пространство перед первой строкой и после последней строки равно половине пространства между двумя соседними строками. | |
stretch | Строки равномерно растягиваются, заполняя свободное пространство. |
Спецификации
- CSS Flexible Box Layout Module
Поддержка браузерами
Пример
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>align-content</title> <style> . flex-container { width: 70px; height: 240px; border: 1px solid #333; padding: 10px; display: flex; flex-wrap: wrap; align-content: center; } .flex-container div { width: 70px; height: 70px; border-radius: 50%; } .red { background: red; } .yellow { background: yellow; } .green { background: green; } </style> </head> <body> <div> <div></div> <div></div> <div></div> </div> </body> </html>
Примечание
Safari до версии 9 поддерживает свойство -webkit-align-content
.
Ссылки
- Свойство
align-content
MDN (рус.)
align-content | CSS справочник
Поддержка браузерами
11. 0+ | 28.0+ | 21.0+ | 12.1+ | 9.0+ |
Описание
CSS свойство align-content указывает, каким образом будут выравниваться flex-элементы по вертикали внутри flex-контейнера, если разрешён перенос элементов и строк с элементами две или больше.
Примечание: для выравнивания flex-элементов по горизонтали используйте свойство justify-content.
Значение по умолчанию: | stretch |
---|---|
Применяется: | к многострочным flex-контейнерам |
Анимируется: | нет |
Наследуется: | нет |
Версия: | CSS3 |
Синтаксис JavaScript: | object.style.alignContent=»center»; |
Синтаксис
align-content: stretch|center|flex-start|flex-end|space-between|space-around;
Значения свойства
Значение | Описание |
---|---|
stretch | Значение по умолчанию. Если у flex-элементов не задана высота, то они растягиваются на всю высоту контейнера так, чтобы каждая строка имела одинаковую высоту. |
center | flex-элементы располагаются точно по центру flex-контейнера, то есть снизу и сверху от элементов расстояние до границ контейнера будет одинаковым.
Примечание: если flex-элементы занимают больше вертикального пространства, чем высота контейнера, то элементы сместятся так, чтобы переполнение было одинаковым с обоих сторон контейнера. |
flex-start | flex-элементы выравниваются по левому верхнему углу контейнера. |
flex-end | flex-элементы выравниваются по левому нижнему углу контейнера. |
space-between | Строки с flex-элементами равномерно распределяются по вертикали так, чтобы между каждой парой соседних строк расстояние было одинаковым. Первая строка прилегает своей верхней границей к верхней границе контейнера, а последняя строка прилегает своей нижней границей к нижней границе контейнера. Примечание: если flex-элементы занимают больше вертикального пространства, чем высота контейнера, то данное значение будет соответствовать значению flex-start. |
space-around | Строки с flex-элементы равномерно распределяются по вертикали так, чтобы между каждой парой соседних строк расстояние было одинаковым. Пустое пространство перед первой и после последней строки равно половине расстояния между каждой парой соседних строк.
Примечание: если flex-элементы занимают больше вертикального пространства, чем высота контейнера, то данное значение будет соответствовать значению center. |
Пример
align-content:
stretch
center
flex-start
flex-end
space-between
space-around
1
2
3
4
5
6
7
#main {
width: 200px;
height: 200px;
border: 1px solid black;
display: flex;
flex-wrap: wrap;
align-content: stretch;
}
выравнивание контента | CSS-трюки — CSS-трюки
DigitalOcean предоставляет облачные продукты для каждого этапа вашего путешествия. Начните с бесплатного кредита в размере 200 долларов США!
Свойство align-content
является подсвойством модуля Flexible Box Layout.
Это помогает выравнивать строки гибкого контейнера внутри него, когда на поперечной оси есть дополнительное пространство, подобно тому, как justify-content
Обратите внимание: это свойство не действует, если flexbox имеет только одну строку.
Свойство align-content
принимает 6 разных значений:
-
flex-start
: строки упакованы до начала контейнера -
flex-end
6
flex-end 4 4 4 контейнера до конца
центр
: линии уложены в центр контейнера -
пространство между
: линии распределены равномерно; первая строка находится в начале контейнера, а последняя — в конце -
пробел-вокруг
: строки равномерно распределены с равным расстоянием между ними -
растягиваются
( по умолчанию ): строки растягиваются, чтобы занять оставшееся пространство
align-content
value:
Синтаксис
align-content: flex-start | гибкий конец | центр | пространство между | пространство вокруг | потягиваться . flex-контейнер { выравнивание содержимого: пространство вокруг; }
Demo
Следующая демонстрация показывает, как строки располагаются друг над другом в зависимости от значения align-content
:
- Красный список установлен на
flex-start
- Желтый список установлен на
flex-end
6 - Синий список установлен на
центр
- Зеленый список установлен на
пробел-между
- Розовый список установлен на
пробел-вокруг
- Коричневый список установлен на
5 растянуть
60024
Поддержка браузера
Это поддержка Flexbox в целом, которая должна совпадать с этим свойством, так как это своего рода оригинальное свойство .
Desktop
Chrome | Firefox | IE | Edge | Safari |
---|---|---|---|---|
21* | 28 | 11 | 12 | 6. 1* |
Mobile / Таблетка
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
111 | 110 | 4.4 | 7.0-7.1* |
For more information about how to mix syntaxes чтобы получить наилучшую поддержку браузера, обратитесь к этой статье (CSS-Tricks) или этой статье (DevOpera).
Прочие ресурсы
-
align-items
в спецификации -
align-items
в MDN - Расширенный кроссбраузерный flexbox
- Руководство по Flexbox
- Использование Flexbox
- Старый Flexbox и новый Flexbox
Полное руководство по Flexbox
макет флексбокса
Полное руководство по CSS Grid
макет сетки
выравнивание элементов
.element { align-items: flex-start; }
выравнивание содержимого
.element { align-content: space-around; }
выравнивание содержимого flexbox
гибкий поток
.element { flex-flow: перенос строк; }
выравнивание содержания
.element { justify-content: center; }
зазор
.элемент { зазор: 20px 30px; }
css - В чем разница между align-content и align-items?
спросил
Изменено 6 месяцев назад
Просмотрено 279k раз
В чем разница между align-items
и align-content
?
- css
- макет
- flexbox
- выравнивание
5
Свойство align-items
flex-box выравнивает элементы внутри flex-контейнера по поперечной оси точно так же, как justify-content
делает по главной оси. (Для flex-направления по умолчанию: строка
поперечная ось соответствует вертикальной, а главная ось соответствует горизонтальной. С flex-direction: столбец
эти два места меняются местами соответственно).
Вот пример того, как выглядит align-items:center
:
Но align-content
предназначен для многострочных гибких блоков. Это не действует, когда элементы находятся в одной строке. Он выравнивает всю структуру в соответствии со своим значением. Вот пример для align-content: space-around;
:
А вот как align-content: space-around;
с align-items:center
look:
Обратите внимание, что 3-е поле и все остальные поля в первой строке изменяются на вертикально центрированные в этой строке.
Вот несколько ссылок codepen для игры:
классная ручка, которая показывает и позволяет вам играть практически со всем во flexbox.
4
Из примера на flexboxfroggy.com:
Это займет у вас 10-20 минут и на 21 уровне вы найдете ответ на свой вопрос.
align-content определяет расстояние между строками
align-items определяет, как элементы в целом выравниваются внутри контейнера.
Когда имеется только одна строка, align-content не действует
5
Во-первых, align-items
для элементов в одной строке. Таким образом, для одного ряда элементов на главной оси , align-items
выровняет эти элементы относительно друг друга, и начнется новая перспектива со следующего ряда.
Теперь align-content
не влияет на элементы в строке, но на сами строки . Следовательно, align-content
попытается выровнять строки относительно друг друга и гибкого контейнера.
Проверьте эту скрипку: https://jsfiddle.net/htym5zkn/8/
1
У меня была такая же путаница. После некоторой работы, основанной на многих из приведенных выше ответов, я, наконец, вижу различия. По моему скромному мнению, различие лучше всего демонстрируется с помощью гибкого контейнера, который удовлетворяет следующим двум условиям:
- Сам гибкий контейнер имеет ограничение по высоте (например,
min-height: 60rem
) и, таким образом, может стать слишком высокий для своего содержимого - Дочерние элементы, заключенные в контейнер, имеют неодинаковую высоту
Условие 1 помогает мне понять, что означает содержимое
по отношению к его родительскому контейнеру. Когда содержимое находится на одном уровне с контейнером, мы не сможем увидеть никаких эффектов позиционирования, исходящих от align-content
. Только когда у нас есть дополнительное пространство вдоль поперечной оси, мы начинаем видеть его эффект: он выравнивает содержимое относительно границ родительского контейнера.
Условие 2 помогает мне визуализировать эффекты align-items
: оно выравнивает элементы относительно друг друга.
Вот пример кода. Исходные материалы взяты из учебника CSS Grid Веса Боса (21. Flexbox vs. CSS Grid)
- Пример HTML:
<дел>КороткийДольшерррррррррррррррррррр💩Это много словЛорем, ипсум.<дел>10дел>СникерсУэс крутКороткий
- Пример CSS:
.flex-контейнер { дисплей: гибкий; /*диктует минимальную высоту*/ мин-высота: 60бэр; flex-flow: перенос строк; граница: 5px сплошной белый; выравнивание содержимого: по центру; выравнивание элементов: по центру; выравнивание содержимого: flex-start; } #высокий { /*преднамеренно сделан высоким*/ мин-высота: 30бэр; } . элемент { поле: 10 пикселей; макс-высота: 10rem; }
Пример 1 : Давайте сузим область просмотра, чтобы содержимое было на одном уровне с контейнером. Это когда выравнивание содержимого: flex-start;
не имеет никакого эффекта, так как весь блок контента плотно помещается внутри контейнера (нет дополнительного места для перемещения!)
Также обратите внимание на 2-й ряд — посмотрите, как элементы выровнены по центру между собой.
Пример 2 : Поскольку мы расширяем область просмотра, у нас больше не хватает содержимого для заполнения всего контейнера. Теперь мы начинаем видеть эффекты align-content: flex-start;
-- выравнивает содержимое относительно верхнего края контейнера.
Эти примеры основаны на flexbox, но те же принципы применимы и к сетке CSS. Надеюсь, это поможет 🙂
1
Действие обоих align-items
и align-content
происходит вдоль поперечной оси .
Допустим, если flex-direction
- это ряд
, то главная ось - слева направо
, а если flex-direction
- это столбец
, тогда главная ось идет от сверху вниз
.
Итак, в приведенных ниже примерах мы предполагаем, что flex-direction
— это row
, т. е. основная ось идет слева направо, а поперечная ось — сверху вниз.
align-content
работает только при наличииflex-wrap: wrap
и если в контейнере более однойflex-line
.
align-content
имеет более высокий приоритет, чемalign-items
если есть несколько flex-line.
Что такое flex-line?
Каждая строка или столбец гибких элементов во гибком контейнере представляет собой гибкую строку. Несколько строк появляются, когда в контейнере недостаточно места, и flex-элементы будут занимать следующую строку (в flex-direction: row;
), чтобы поместиться. В flex-direction: столбец
он добавит flex-элементы в следующая строка.
пример
По умолчанию flex является гибким контейнером, т.е. он может вместить любое количество элементов, если мы не указали flex-wrap: упаковка
. Без переноса flex-элементы переполнят контейнер (если flex-direction
равно row
).
пример выравнивания содержимого
.container{ граница: 5px сплошная #000; высота: 100вх; дисплей: гибкий; flex-wrap: обернуть; выравнивание содержимого: flex-end; } .коробка{ высота: 100 пикселей; размер шрифта: 2rem; ширина: 33,33%; } .box1{ фон: фиолетовый; } .box2{ фон: #ff8c00; } .box3{ фон: лайм; } .box4{ фон: #008080; } .box5{ цвет фона: красный; }
<дел>поле 1окно 2окно 3окно 4окно 5