justify-content
Определение базовой линии Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2015 года.
Свойство CSS justify-content определяет, как браузер распределяет пространство между и вокруг элементов содержимого вдоль основной оси контейнера Flex и оси вставки контейнеров Grid и multicol.
Нижеприведенный интерактивный пример демонстрирует некоторые justify-content значения с использованием макета Grid.
Попробовать
Синтаксис
/* Positional alignment */ justify-content: center; justify-content: start; justify-content: end; justify-content: flex-start; justify-content: flex-end; justify-content: left; justify-content: right; /* Normal alignment */ justify-content: normal; /* Distributed alignment */ justify-content: space-between; justify-content: space-around; justify-content: space-evenly; justify-content: stretch; /* Overflow alignment */ justify-content: safe center; justify-content: unsafe center; /* Global values */ justify-content: inherit; justify-content: initial; justify-content: revert; justify-content: revert-layer; justify-content: unset;
Значения
start-
Элементы выравниваются плотно друг к другу в сторону начальной границы контейнера выравнивания по основной оси.
end-
Элементы выравниваются плотно друг к другу в сторону конечной границы контейнера выравнивания по основной оси.
flex-start-
Элементы выравниваются плотно друг к другу в сторону начальной границы контейнера выравнивания, в зависимости от стороны main-start контейнера flex. Это применимо только к элементам макета flex. Для элементов, которые не являются потомками контейнера flex, это значение обрабатывается как
start. flex-end-
Элементы выравниваются плотно друг к другу в сторону конечной границы контейнера выравнивания, в зависимости от стороны main-end контейнера flex. Это применимо только к элементам макета flex. Для элементов, которые не являются потомками контейнера flex, это значение обрабатывается как
end. center-
Элементы выравниваются плотно друг к другу по центру контейнера выравнивания вдоль основной оси.
left-
Элементы выравниваются плотно друг к другу по левому краю контейнера выравнивания. Когда горизонтальная ось свойства не параллельна оси вставки, например, когда
flex-direction: column;установлено, это значение ведет себя какstart. right-
Элементы выравниваются плотно друг к другу по правому краю контейнера выравнивания в соответствующей оси. Если ось свойства не параллельна оси вставки (в контейнере сетки) или основной оси (в контейнере flexbox), это значение ведет себя как
start. normal-
Ведёт себя как
stretch, за исключением случаев контейнеров с несколькими колонками с не-autocolumn-width, в этом случае колонки занимают указаннуюcolumn-widthширину, а не растягиваются для заполнения контейнера. Посколькуstretchведёт себя какstartв контейнерах flex,normalтакже ведёт себя какstart. space-between-
Элементы равномерно распределяются в контейнере выравнивания по основной оси. Расстояние между каждой парой смежных элементов одинаковое. Первый элемент выровнен по началу основной оси, а последний — по концу.
space-around-
Элементы равномерно распределяются в контейнере выравнивания по основной оси. Расстояние между каждой парой смежных элементов одинаковое. Пустое пространство перед первым и после последнего элемента равно половине пространства между каждой парой смежных элементов. Если есть только один элемент, он центрируется.
space-evenly-
Элементы равномерно распределяются в контейнере выравнивания по основной оси. Расстояния между каждой парой смежных элементов, между началом основной оси и первым элементом, и между концом основной оси и последним элементом все одинаковые.
stretch-
Если суммарный размер элементов по основной оси меньше размера контейнера выравнивания, элементы с размером
autoувеличивают свой размер равномерно (не пропорционально), при этом учитывая ограничения, наложенныеmax-height/max-width(или эквивалентные функции), так что суммарный размер точно заполняет контейнер выравнивания по основной оси. safe-
Если элемент выходит за пределы контейнера выравнивания, то он выравнивается так, как если бы режим выравнивания был
start. Желаемое выравнивание не будет реализовано. unsafe-
Даже если элемент выходит за пределы контейнера выравнивания, желаемое выравнивание будет реализовано. В отличие от
safe, которое игнорирует желаемое выравнивание в пользу предотвращения переполнения.
Описание
Определённый в модуле выравнивание блоков CSS, justify-content применяется к контейнерам multicol, flex и grid. Свойство не применяется к и не оказывает никакого влияния на контейнеры блоков.
Это свойство разделяет многие ключевые значения со свойством align-content, но не все! justify-content не участвует в выравнивании по базовой линии и поэтому не принимает значения базовой линии.
В flex-макетах, свойство определяет, как положительное свободное пространство распределяется между или вокруг элементов flex вдоль основной оси. Это свойство влияет на расстояние между элементами в строке, а не на расстояние между строками. Выравнивание выполняется после применения длин и автоматических отступов, что означает, что когда один или несколько элементов flex в строке имеют коэффициент flex-grow больше, чем 0, свойство не имеет эффекта, так как нет места для распределения в этой строке. Также, поскольку растяжение по основной оси контролируется flex, значение stretch ведет себя как flex-start.
В сетках, это свойство распределяет доступное пространство между или вокруг колонок сетки, а не элементов сетки. Если контейнер сетки больше, чем сама сетка, свойство justify-content может использоваться для выравнивания сетки по оси вставки, выравнивая колонки сетки.
Размеры треков сетки auto (и только размеры треков auto) могут быть растянуты свойствами align-content и justify-content. Поэтому по умолчанию размер трека auto будет занимать всё оставшееся пространство в контейнере сетки. Поскольку размер сетки по оси вставки должен быть меньше размера контейнера сетки по оси вставки, чтобы было пространство для распределения, свойство в этом случае не имеет эффекта.
Формальное определение
| Начальное значение | normal |
|---|---|
| Применимо к | flex контейнерам |
| Наследуется | нет |
| Вычисленное значение | как указано |
| Тип анимации | дискретный |
Формальный синтаксис
Примеры
Пример базовой сетки
В этом примере сетка ужесточается по сравнению с контейнером сетки, и мы используем justify-content для равномерного распределения доступного места вокруг и между колонками сетки.
HTML
Контейнер <section>, будущий контейнер сетки, содержит 16 вложенных <div>, которые станут элементами сетки.
<section class="container"> <div>A</div> <div>B</div> <div>C</div> <div>D</div> <div>E</div> <div>F</div> <div>G</div> <div>H</div> <div>I</div> <div>J</div> <div>K</div> <div>L</div> <div>M</div> <div>N</div> <div>O</div> <div>P</div> </section>
CSS
Мы устанавливаем ширину контейнера в 500px и задаём три колонки, каждая шириной 80px, что означает, что 260px свободного места доступно для распределения между ними или вокруг них. Затем мы задаём justify-content: space-evenly, что означает, что 65px пространства будет перед, между и после каждой колонки.
Мы задаём разные ширины (и цвета фона) для демонстрации того, как применяется выравнивание к колонкам.
.container {
display: grid;
grid: auto-flow / repeat(3, 80px);
width: 500px;
justify-content: space-evenly;
}
div {
background-color: pink;
width: 80px;
}
div:nth-of-type(n + 9) {
width: 35px;
background-color: lightgreen;
}
div:nth-last-of-type(3) {
width: 250px;
background-color: lightblue;
}
Результат
Обратите внимание, что justify-contents выравнивает колонки и не влияет на элементы или выравнивание в областях сетки. Элементы сетки, даже те, которые выходят за пределы своей ячейки сетки, не влияют на выравнивание колонок.
Ключевое слово безопасной
Этот пример демонстрирует ключевое слово safe . Мы задаём четыре центрированных элемента гибкой компоновки, которые не могут переходить на следующую строку, и в результате выходят за пределы контейнера одной строки гибкой компоновки. Добавление safe к center в свойстве justify-content означает, что содержимое, выходящее за пределы, ведёт себя так, как если бы режим выравнивания был start
Контейнер установлен на center, и каждый контейнер, кроме первого, имеет добавленное ключевое слово safe.
.container {
align-items: baseline;
display: flex;
width: 350px;
height: 2em;
}
.safe {
justify-content: center;
}
.safe-center {
justify-content: safe center;
}
div {
flex: 0 0 100px;
}
Результат
Поскольку элемент выходит за пределы контейнера выравнивания, с включённым safe, режим выравнивания ведёт себя как start, и выравнивание center не применяется. Ключевое слово safe не имеет эффекта, если элементы не выходят за пределы контейнера.
Визуализация распределения элементов гибкой компоновки
Этот пример включает многострочную компоновку гибкой компоновки с переходом на новую строку. Второй элемент гибкой компоновки имеет положительный коэффициент роста гибкости, занимая всё доступное свободное место в первой строке гибкой компоновки.
CSS
#container {
display: flex;
flex-flow: row wrap;
justify-content: space-between; /* Can be changed in the live sample */
width: 510px;
}
div {
line-height: 2em;
flex: 0 0 120px;
background-color: pink;
}
div:nth-of-type(2) {
flex-grow: 1;
background-color: yellow;
}
div:nth-of-type(n + 9) {
flex: 0 0 35px;
background-color: lightgreen;
}
div:last-of-type {
flex: 0 0 300px;
background-color: lightblue;
}
Результат
Выберите разные ключевые слова из раскрывающегося списка, чтобы визуализировать различные значения ключевого слова justify-content . Поскольку элемент на первой строке может увеличиваться, на этой строке нет свободного места для свойства justify-content для распределения. При значении space-between первый элемент на каждой строке выровнен с краем main-start, а последний - с краем main-end. В результате, если строка содержит только один элемент, он будет выровнен по краю main-start (как показано в последней строке). Это не так для других значений space-* , таких как space-evenly и space-around , которые центрируют строки гибкой компоновки, содержащие только один элемент.
Спецификации
| Спецификация |
|---|
| Модуль выравнивания CSS Box Level 3 # align-justify-content |
| Модуль CSS гибкой компоновки Level 1 # justify-content-property |
Совместимость браузеров
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari в iOS | Samsung Internet | WebView Android | |
justify-content |
2921 | 1212 | 2049 | 12.1 | 97 | 2925 | 2049 | 12.1 | 97 | 2.01.5 | 4.44.4 |
flex_context |
5221–52Более ранние версии спецификации обрабатывают абсолютно позиционированные дочерние элементы так, как будто они являются элементом гибкой компоновки размером 0 на 0. Более поздние версии спецификации выводят дочерние элементы из потока и устанавливают их позиции на основе свойств выравнивания и выравнивания по оси. |
12 | 20До Firefox 27 Firefox поддерживал только гибкую компоновку для одной строки. |
12.1 | 7 | 5225–52Более ранние версии спецификации обрабатывают абсолютно позиционированные дочерние элементы так, как будто они являются элементом гибкой компоновки размером 0 на 0. Более поздние версии спецификации выводят дочерние элементы из потока и устанавливают их позиции на основе свойств выравнивания и выравнивания по оси. |
20До Firefox 27 Firefox поддерживал только гибкую компоновку для одной строки. |
12.1 | 7 | 6.01.5–6.0Более ранние версии спецификации обрабатывают абсолютно позиционированные дочерние элементы так, как будто они являются элементом гибкой компоновки размером 0 на 0. Более поздние версии спецификации выводят дочерние элементы из потока и устанавливают их позиции на основе свойств выравнивания и выравнивания по оси. |
524.4–52Более ранние версии спецификации обрабатывают абсолютно позиционированные дочерние элементы так, как будто они являются элементом гибкой компоновки размером 0 на 0. Более поздние версии спецификации выводят дочерние элементы из потока и устанавливают их позиции на основе свойств выравнивания и выравнивания по оси. |
grid_context |
57 | 16 | 52 | 44 | 10.1 | 52 | 52 | 43 | 10.3 | 6.2 | 57 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content