Spec-Zone.ru › CSS

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, за исключением случаев контейнеров с несколькими колонками с не-auto column-width, в этом случае колонки занимают указанную column-width ширину, а не растягиваются для заполнения контейнера. Поскольку stretch ведёт себя как start в контейнерах flex, normal также ведёт себя как start.

space-between

Элементы равномерно распределяются в контейнере выравнивания по основной оси. Расстояние между каждой парой смежных элементов одинаковое. Первый элемент выровнен по началу основной оси, а последний — по концу.

space-around

Элементы равномерно распределяются в контейнере выравнивания по основной оси. Расстояние между каждой парой смежных элементов одинаковое. Пустое пространство перед первым и после последнего элемента равно половине пространства между каждой парой смежных элементов. Если есть только один элемент, он центрируется.

space-evenly

Элементы равномерно распределяются в контейнере выравнивания по основной оси. Расстояния между каждой парой смежных элементов, между началом основной оси и первым элементом, и между концом основной оси и последним элементом все одинаковые.

stretch

Если суммарный размер элементов по основной оси меньше размера контейнера выравнивания, элементы с размером auto увеличивают свой размер равномерно (не пропорционально), при этом учитывая ограничения, наложенные max-height/max-width (или эквивалентные функции), так что суммарный размер точно заполняет контейнер выравнивания по основной оси.

Примечание: Для flexbox, значение stretch ведет себя как flex-start или start. Это потому, что в flexbox растяжение контролируется с помощью свойства flex-grow.

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 = 
normal |
<content-distribution> |
<overflow-position>? [ <content-position> | left | right ]

<content-distribution> =
space-between |
space-around |
space-evenly |
stretch

<overflow-position> =
unsafe |
safe

<content-position> =
center |
start |
end |
flex-start |
flex-end

Примеры

Пример базовой сетки

В этом примере сетка ужесточается по сравнению с контейнером сетки, и мы используем 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 52
21–52Более ранние версии спецификации обрабатывают абсолютно позиционированные дочерние элементы так, как будто они являются элементом гибкой компоновки размером 0 на 0. Более поздние версии спецификации выводят дочерние элементы из потока и устанавливают их позиции на основе свойств выравнивания и выравнивания по оси.
12
20До Firefox 27 Firefox поддерживал только гибкую компоновку для одной строки.
12.1 7 52
25–52Более ранние версии спецификации обрабатывают абсолютно позиционированные дочерние элементы так, как будто они являются элементом гибкой компоновки размером 0 на 0. Более поздние версии спецификации выводят дочерние элементы из потока и устанавливают их позиции на основе свойств выравнивания и выравнивания по оси.
20До Firefox 27 Firefox поддерживал только гибкую компоновку для одной строки.
12.1 7 6.0
1.5–6.0Более ранние версии спецификации обрабатывают абсолютно позиционированные дочерние элементы так, как будто они являются элементом гибкой компоновки размером 0 на 0. Более поздние версии спецификации выводят дочерние элементы из потока и устанавливают их позиции на основе свойств выравнивания и выравнивания по оси.
52
4.4–52Более ранние версии спецификации обрабатывают абсолютно позиционированные дочерние элементы так, как будто они являются элементом гибкой компоновки размером 0 на 0. Более поздние версии спецификации выводят дочерние элементы из потока и устанавливают их позиции на основе свойств выравнивания и выравнивания по оси.
grid_context 57 16 52 44 10.1 52 52 43 10.3 6.2 57

См. также

  • Основные понятия гибкой компоновки
  • Выравнивание элементов в контейнере гибкой компоновки
  • Выравнивание блоков в сетке CSS
  • Модуль CSS выравнивания блоков

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API