Css content align: align-content — CSS: Cascading Style Sheets

Содержание

align-content ⚡️ HTML и CSS с примерами кода

Свойство align-content задаёт тип выравнивания строк внутри флекс-контейнера по поперечной оси при наличии свободного пространства.

Демо

Это свойство не влияет на однострочные flex-контейнеры (т. е. с flex-wrap: nowrap).

Flexbox и выравнивание
  • 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

У меня была такая же путаница. После некоторой работы, основанной на многих из приведенных выше ответов, я, наконец, вижу различия. По моему скромному мнению, различие лучше всего демонстрируется с помощью гибкого контейнера, который удовлетворяет следующим двум условиям:

  1. Сам гибкий контейнер имеет ограничение по высоте (например, min-height: 60rem ) и, таким образом, может стать слишком высокий для своего содержимого
  2. Дочерние элементы, заключенные в контейнер, имеют неодинаковую высоту

Условие 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

В приведенном выше примере, если бы было flex-wrap: no-wrap , то align-content не влияет на наш макет.


Пример align-items

Свойство align-items определяет, как flex-элементы располагаются внутри flex-линии вдоль поперечной оси.

 .контейнер{
  граница: 5px сплошная #000;
  высота: 100вх;
  дисплей: гибкий;
  flex-wrap: обернуть;
  элементы выравнивания: flex-end;
}
.коробка{
  высота: 100 пикселей;
  размер шрифта: 2rem;
  ширина: 33,33%;
}
.box1{
  фон: фиолетовый;
}
.box2{
  фон: #ff8c00;
}
.box3{
  фон: лайм;
}
.box4{
  фон: #008080;
}
.box5{
  цвет фона: красный;
} 
 <дел>
  
поле 1
окно 2
окно 3
окно 4
окно 5

Если align-content и align-items объявлены в контейнере со свойствами flex-wrap: wrap и если их больше, чем flex-line, то свойство align-content имеет более высокий приоритет, чем align- предметы .

align-content и align-items пример приоритета

 . контейнер{
  граница: 5px сплошная #000;
  высота: 100вх;
  дисплей: гибкий;
  flex-wrap: обернуть;
  выравнивание содержимого: flex-end;
  выравнивание элементов: flex-start;
}
.коробка{
  высота: 100 пикселей;
  размер шрифта: 2rem;
  ширина: 33,33%;
}
.box1{
  фон: фиолетовый;
}
.box2{
  фон: #ff8c00;
}
.box3{
  фон: лайм;
}
.box4{
  фон: #008080;
}
.box5{
  цвет фона: красный;
} 
 <дел>
  
поле 1
окно 2
окно 3
окно 4
окно 5

Я просмотрел их в своем браузере.

align-content может изменить высоту строки для направления строки или ширину для столбца, если его значение равно stretch, или добавить пустое пространство между строками или вокруг них для space-between , space-around , flex- начать , значения flex-end .

align-items может изменять высоту или положение элементов внутри области строки. Когда элементы не обернуты, они имеют только одну строку, область которой всегда растягивается до области flex-box (даже если элементы переполняются), и align-content не влияет на одну строку. Таким образом, это не влияет на элементы, которые не упакованы, и только align-items могут изменить положение элементов или растянуть их, когда все они находятся в одной строке.

Однако, если они завернуты, у вас будет несколько строк и элементов внутри каждой строки. И если все элементы каждой строки имеют одинаковую высоту (для направления строки), высота этой строки будет равна высоте этих элементов, и вы не увидите никакого эффекта, изменив значение align-items .

Итак, если вы хотите воздействовать на элементы с помощью align-items , когда ваши элементы обернуты и имеют одинаковую высоту (для направления строки), сначала вам нужно использовать align-content со значением растяжения, чтобы расширить область строк. .

Прочитав некоторые ответы, они правильно определили, что align-content не влияет, если содержимое flex не упаковано. Однако чего они не понимают, так это того, что align-items по-прежнему играет важную роль, когда есть обернутое содержимое:

В следующих двух примерах align-items используется для центрирования элементов в каждой строке , затем мы меняем align-content , чтобы увидеть эффект.

Пример 1:

 выравнивание содержимого: flex-start;
 

Пример 2:

 align-content: flex-end;
 

Вот код:

 
<дел>1 <дел>2 <дел>3 <дел>4 <дел>5 <дел>6 <дел>7 <дел>8 <дел>9 <дел>10
11
<дел>12
<стиль> .контейнер { дисплей: гибкий; ширина: 300 пикселей; flex-flow: перенос строк; выравнивание содержимого: пробел между; выравнивание элементов: по центру; выравнивание содержимого: flex-end; фон: светло-серый; высота: 400 пикселей; } . ребенок { отступ: 12px; фон: красный; граница: сплошная черная 1px; }

0

align-content

align-content управляет поперечной осью (т.е. вертикальным направлением, если flex-direction равно row , и горизонтальным, если positioning flex-direction

6 равно

6) из кратных строк относительно друг друга.

(Представьте, что строки абзаца растянуты по вертикали, стопкой вверх, стопкой вниз. Это меньше flex-direction парадигма строки).

align-items

align-items управляет поперечной осью отдельной линии гибких элементов.

(Подумайте, как выравнивается отдельная строка абзаца, если она содержит обычный текст и какой-то более высокий текст, например, математические уравнения. В этом случае это будет низ, верх или центр каждого типа текста в строке что будет выровнено?)

align-items распределяет дочерние элементы по вертикали с интервалом между ними.

align-content объединяет их вместе, как если бы они были одним элементом.

(если flex-направление — столбец)

1

Из каждого ответа и посещения блога я узнал

.

что такое поперечная ось и главная ось

  • основная ось представляет собой горизонтальную строку, а поперечная ось представляет собой вертикальный столбец - для flex-direction: строка
  • основная ось представляет собой вертикальный столбец, а поперечная ось представляет собой горизонтальный ряд - для flex-направление: столбец

Теперь выравнивание содержимого и выравнивание элементов

align-content для строки, работает, если контейнер имеет (более одной строки) Свойства align-content

 .container {
  выравнивание содержимого: flex-start | гибкий конец | центр | пространство между | пространство вокруг | пространственно-равномерно | растянуть | начать | конец | базовый | первый базовый | последний базовый уровень + . .. безопасный | небезопасно;
}
 

align-items для элементов в строке Свойства элементов выравнивания

 .контейнер {
  элементы выравнивания: растянуть | гибкий старт | гибкий конец | центр | базовый | первый базовый | последний базовый | начать | конец | самозапуск | самоконец + ... безопасный | небезопасно;
}
 

Для получения дополнительной информации посетите flex

Ключевое свойство flex-wrap . Когда вместо (или когда на поперечной оси нет дополнительного пространства), align-content не действует. Когда wrap или wrap-reverse , это всегда имеет эффект ( независимо от количества строк ), если на поперечной оси есть дополнительное пространство.

Сравните эти четыре поля:

, тогда как align-items будет центрироваться как одна строка текста по горизонтали и вертикали внутри контейнера , align-content будет вести себя так, как если бы было несколько строк текст или абзац и начинаются с выравнивания по верхнему краю даже одной строки текста, как если бы это был абзац, для которого задано правило text-align: center.

Это результат, который мы получаем от

 align-content:center;
 

1

Первая часть

align-items применяется только к одной строке полей. Предположим, внутри контейнера в одной строке стоят 4 ящика. затем будет применено align-items для выравнивания этих блоков в одну строку. Если flex-direction равно row (что по умолчанию), то align-items расположит блоки вертикально, если его столбец, то расположит блоки горизонтально.

Вторая часть

Продолжая описанную выше единственную строку ящиков, если мы добавим еще одну строку из 4 ящиков, теперь будет 8 ящиков, по 4 в каждой строке. Здесь появляется align-content , если мы применим align-content к контейнеру, он будет применен к обеим строкам, имеющим всего 8 блоков. Если мы применим align-content:center , обе строки будут центрированы в контейнере.