Выравнивание элементов во Flex контейнере — CSS
Одной из причин быстрого роста популярности flexbox среди веб-разработчиков было то, что впервые были предоставлены адекватные возможности выравнивания. Он предоставил адекватное вертикальное выравнивание, и стало возможным, наконец, легко поместить элемент в центр по вертикали. В этом руководстве детально рассматривается, как выравнивание и распределение работают во Flexbox.
Для центрирования элемента по перекрёстной оси (в данном случае — вертикальной) используется свойство align-items
. Для центрирования элемента по главной оси (в данном случае — горизонтально), используется свойство justify-content
.
На примере ниже можно изменить размер контейнера или вложенного элемента, но элемент всегда останется по центру.
В этом руководстве рассматриваются следующие свойства:
justify-content
— управляет выравниванием элементов по главной оси.align-items
— управляет выравниванием элементов по перекрёстной оси.align-self
— управляет выравниванием конкретного flex элемента по перекрёстной оси.align-content
— описывается в спецификации как “упаковка flex строк”; управляет промежутками между flex строками по перекрёстной оси.
Также будет рассмотрены авто-отступы для выравнивания элементов во flexbox.
Замечание: Свойства выравнивания во Flexbox помещены в отдельную спецификацию — CSS Box Alignment Level 3. Ожидается, что данная спецификация в конце концов заменит свойства, определённые во Flexbox Level One.
Свойства align-items
и align-self
управляют выравниванием flex элементов по перекрёстной оси: вертикальной для flex-direction
установленным в row,
и горизонтальной для flex-direction
установленным в column
.
Рассмотрим выравнивание по перекрёстной оси на простейшем примере. Если установить display: flex
у контейнера, все дочерние элементы становятся flex элементами, выстроенными в ряд. Все они по вертикали примут размер самого высокого элемента, который станет определяющим вертикального размера. Если у flex контейнера задана высота, то все элементы растянутся до высоты контейнера, независимо от размера содержимого.
Все элементы становятся одной высоты, т.к. по умолчанию свойство align-items
имеет значение stretch
.
Другие возможные значения свойства:
align-items: flex-start
align-items: flex-end
align-items: center
align-items: stretch
align-items: baseline
В примере ниже значение свойств align-items
установлено в stretch
. Попробуйте другие значения для понимания их действия.
Выравнивание одного элемента при помощи
align-self
Свойство align-items
align-self
для всех flex элементов как для группы. Это означает, что можно явно указать значение align-self
для конкретного элемента. Свойство align-self
может принимать все те же значения, что и свойство align-items,
а так же значение auto
, которое сбросит значение, установленное в flex контейнере.В следующем примере, у flex контейнера установлено align-items: flex-start
, означающее, что все элементы будут выравнены по началу перекрёстной оси. У первого элемента с помощью first-child
селектора установлено align-items: stretch
; у следующего элемента с классом selected
установлено align-self:
center
. Можно изменять значение align-items
на контейнере или align-self
на элементе для изучения их работы.8н
Изменение основной оси
До сего момента мы изучали поведение при flex-direction
установленном в row
, в языке, использующем написание сверху вниз. Это означает, что основная ось идёт горизонтально, а выравнивание по перекрёстной оси сдвигает элементы вверх или вниз.
Если изменить flex-direction
на column, align-items
и align-self
будут сдвигать элементы влево или вправо.
Можно попробовать пример ниже, где установлено flex-direction: column
.
До сих пор мы выравнивали элементы внутри flex-контейнера. Если содержимое вашего flex контейнера переносится на несколько строк, используйте свойство align-content
для управления свободным пространством между строками. В спецификации это описано как упаковка flex-строк.
Чтобы свойство align-content
работало, необходимо, чтобы в flex-контейнере было больше места, что требуется для отображения всего содержимого. Оно применяется ко всем элементам как группе, и управляет распределением свободного места и положением всей группы элементов внутри контейнера.
Свойство align-content
принимает следующие значения:
align-content: flex-start
align-content: flex-end
align-content: center
align-content: space-between
align-content: space-around
align-content: stretch
align-content: space-evenly
(не описано в спецификации Flexbox)
В примере ниже flex контейнер имеет высоту 400 пикселей — больше, чем необходимо для отображения всех элементов. Значение align-content
установлено в space-between
, означающее, что свободное пространство разделено между строками, расположенными вплотную к началу и концу контейнера по перекрёстной оси.
Попробуйте другие значения align-content
для понимания принципа их работы.
Также можно сменить значение flex-direction
на column
и увидеть, как наше свойство работает в режиме колонок. Как и ранее, что увидеть работу свойства, у контейнера должно быть больше свободного места, чем требуется содержимому.
Замечание: значение space-evenly
не определено в спецификации flexbox и добавлено позже в спецификацию Box Alignment. Поддержка браузерами этого значение не так широка, как значений определённым в спецификации flexbox.
В документации по justify-content
на MDN приведено больше деталей о всех значениях и поддержке браузерами.
Теперь, когда мы увидели, как работает выравнивание по перекрёстной оси, можно посмотреть на главную ось. Здесь нам доступно только одно свойство — justify-content
. Это обусловлено тем, что с элементами на главной оси мы работаем только как с группой. Используя свойство justify-content
, мы контролируем, что происходит со свободным пространством на главной оси, и требуется ли нам больше пространства, чем нужно для отображения наших элементов.
В нашем первом примере с использованием свойства display: flex
, применённым к контейнеру, элементы отображаются как строка и выстраиваются в начале блока. Это обусловлено тем, что свойство justify-content
имеет начальное значение flex-start
. Все свободное место располагается в конце контейнера.
Свойство justify-content
может принимать те же самые значения, что и align-content
.
justify-content: flex-start
justify-content: flex-end
justify-content: center
justify-content: space-between
justify-content: space-around
justify-content: stretch
justify-content: space-evenly
(не определено в спецификации Flexbox)
justify-content
задано значение space-between
. Все доступное пространство распределяется между элементами после их позиционирования в контейнере. Первый и последний элементы занимают положения в начале и в конце контейнера соответственно.Если свойство flex-direction
имеет значение column
, то свойство justify-content
распределит доступное пространство в контейнере между элементами.
Выравнивание и режим записи
Необходимо помнить, что при использовании свойств flex-start
иflex-end
элементы позиционируются в режиме записи. Если свойству justify-content
задано значение start
и стоит режим записи left-to-right (слева-направо), как в английском, то элементы выравниваются, начиная с левой стороны контейнера.
Однако, если задан режим записи right-to-left (справа-налево), как в арабском языке, то элементы будут выстраиваться с правой стороны контейнера.
В примере ниже свойству property
задано значение rtl
, которое изменяет порядок наших элементов. Вы можете удалить это свойство или изменить значение свойства justify-content
, чтобы увидеть, как работает flexbox, когда отображение элементов начинается справа.
Начальное положение элементов поменяется, если вы измените значение свойства flex-direction
— например установите row-reverse
вместо row
.
В следующем примере заданы следующие свойства: flex-direction: row-reverse
и justify-content: flex-end
. В языках с параметром записи ltr
все элементы будут отображаться с левой стороны. Попробуйте изменить свойство flex-direction: row-reverse
на flex-direction: row
. Вы увидите, что теперь элементы отображаются реверсивно.
Может показаться немного запутанным, но главное правило, которое необходимо запомнить – до тех пор, пока вы не измените свойство flex-direction
, элементы контейнера выстраиваются в режиме записи вашего языка (ltr
или rtl
).
Вы можете сделать отображение элементов контейнера блочным, задав свойству flex-direction
значение column
. Свойство flex-start
будет отображать элементы в столбец сверху вниз. Таким образом, первый элемент будет первым параграфом.
Если вы зададите свойству flex-direction
реверсивное значение, то элементы будут позиционироваться в обратном порядке. Так, свойство flex-start
будет брать начало в конце контейнера. Первый элемент будет находится в конце строки, если задано строчное отображение элементов или в конце параграфа, если задано блочное отображение.
Так как элементы, расположенные на главной оси, обрабатываются как группа, свойства justify-items
justify-self
становятся недоступными. Тем не менее, существует способ отделить конкретный элемент или группу элементов от остальных, используя внешний отступ margin
со значением auto
. Распространённый пример — панель навигации, в которой отдельные важные элементы выровнены по правому краю, а основная группа элементов — по левому.
На первый взгляд может показаться, что этот пример использования свойства justify-self
. Однако, рассмотрим следующий ниже пример. Имеется три элемента с одной стороны и два — с другой. Если бы мы могли использовать justify-self
на элементе d, это также изменило бы выравнивание следующего элемента — e, что может противоречить первоначальному замыслу.
Вместо этого мы можем выбрать четвёртый элемент (d) и отделить его от первых трёх, задав ему значение auto
для margin-left
. Авто-margin заполнит всё доступное свободное место по своей оси. Тем же образом работает margin-right
. Оба свойства со значениями auto
отцентрируют блок, так как каждый из отступов будет пытаться занять максимум пространства.
В интерактивном примере ниже у нас имеется простой ряд из флекс-элементов и класс push
с заданным margin-left: auto
. Вы можете, например, попробовать удалить это значение или добавить класс другому элементу, чтобы увидеть, как работает этот метод.
В начале этой статьи объясняется, что свойства выравнивания, которые в настоящее время содержатся в спецификации Flexbox Level 1, также включены в спецификацию Box Alignment Level 3, которая в дальнейшем может расширить эти свойства и значения. Мы уже видели, как это произошло с введением значения space-evenly
для свойств align-content
и justify-content
.
Выравнивание во Flexbox также включает в себя другие методы создания пространства между элементами, такие как column-gap
and row-gap
, как показано в макете CSS Grid Layout. Включение этих свойств в Box Alignment означает, что в будущем мы также сможем использовать column-gap
и row-gap
во Flexbox разметке. Это означает, что вам не нужно будет использовать отступы, чтобы создать пространство между элементами.
Моё предложение заключается в том, чтобы при изучении выравнивания во Flexbox, делать это параллельно с выравниванием в Grid Layout. В обеих спецификациях используются свойства выравнивания, подобные Flexbox. Вы можете видеть, как эти свойства ведут себя при работе с сеткой в статье Box Alignment in Grid Layout, а также рассмотреть как выравнивание работает в этих спецификациях в статье Box Alignment Cheatsheet.
Смотрите Также
- Выравнивание Коробки
- Выравнивание Коробки в Flexbox (Гибкая Коробка)
- Выравнивание Коробки в Grid Layout (Макет Сетки)
Выравнивание полей CSS — CSS
Модуль CSS Box Alignment определяет CSS-функции, которые относятся к выравниванию ящиков в различных моделях макета CSS: макет блока, макет таблицы, гибкая макет и макет сетки. Модуль нацелен на создание согласованного метода выравнивания по всем CSS. В этом документе описываются общие понятия, содержащиеся в спецификации.
Примечание: Документация для каждого метода макета будет подробно описана, как там применяется шкала выравнивания.
У CSS традиционно были очень ограниченные возможности выравнивания. Мы могли выровнять текст, используя text-align
, центральные блоки, используя auto margin
s, а в макетах таблицы или встроенного блока, используя vertical-align
свойство. Выравнивание текста теперь покрывается модулями Inline Layout и CSS Text, и впервые в Box Alignment мы имеем полные возможности горизонтального и вертикального выравнивания.
Если вы изначально узнали Flexbox, вы можете считать эти свойства частью спецификации Flexbox и некоторые из свойств действительно перечислены в Level 1 Flexbox. Однако в спецификации отмечается, что спецификация Box Alignment должна рассматриваться, поскольку она может добавить дополнительные возможности по сравнению с тем, что в настоящее время находится в Flexbox.
Следующие примеры демонстрируют, как некоторые из Box Alignment Properties применяются в Grid and Flexbox.
Пример выравнивания раскладки сетки CSS
В этом примере с использованием Grid Layout, в контейнере сетки есть дополнительное пространство после прокладки фиксированных дорожек ширины на основной оси. Это пространство распределяется с помощью justify-content
. На блочной (поперечной) оси выравнивание элементов внутри их областей сетки контролируется с помощью align-items
. Первый элемент переопределяет значение элементов выравнивания, заданное в группе, путём установки align-self
в центр.
Пример выравнивания Flexbox
В этом примере три элемента гибкости выровнены по главной оси с использованием justify-content
и на поперечной оси с использованием align-items
. Первый элемент переопределяет align-items
, заданные в группе align-self
по center
.
Спецификация описывает некоторую терминологию выравнивания, чтобы упростить обсуждение этих свойств выравнивания вне их реализации в рамках конкретного метода компоновки. Существуют также некоторые ключевые концепции, которые являются общими для всех методов макета.
Связь с режимами записи
Выравнивание связано с режимами записи, когда мы выравниваем элемент, который мы не рассматриваем, если мы сопоставляем его с физическими размерами сверху, справа, снизу и слева. Вместо этого мы описываем выравнивание с точки зрения начала и конца конкретного измерения, с которым мы работаем. Это гарантирует, что выравнивание работает так же, как в режиме записи, который имеет документ.
Два измерения выравнивания
При использовании свойств выравнивания ячеек вы выровняете содержимое по одной из двух осей — inline (или main) оси и block (или cross) оси. Внутренняя ось — это ось, по которой используются слова в потоке предложения в режиме записи — для английского языка, например, встроенная ось горизонтальна. Ось блока — это ось, вдоль которой выложены блоки, такие как элементы абзаца, и проходит по оси Inline.
При выравнивании элементов на встроенной оси вы будете использовать свойства, начинающиеся с justify-
:
При выравнивании элементов на оси блока вы будете использовать свойства, которые начинаются с align-
:
Flexbox добавляет дополнительное усложнение в том, что указанное выше верно, когда flex-direction
установлено в row
. Свойства меняются местами, когда flexbox установлен в column
. Поэтому при работе с flexbox легче думать о главной и поперечной оси, а не о линии и блоке. Свойства justify-
всегда используются для выравнивания по главной оси, align-
на поперечной оси.
The alignment subject
Объект выравнивания — это то, что выровнено. Для justify-self
, или align-self
, или при настройке этих значений как группы с justify-items
или align-items
это будет поле элемента, в котором используется это свойство. Свойства justify-content
и align-content
различаются для каждого метода макета.
The alignment container
Контейнер выравнивания — это поле, в котором объект выравнивается внутри. Обычно это будет блок, содержащий объект выравнивания. Контейнер выравнивания может содержать один или несколько объектов выравнивания.
На приведённом ниже рисунке показан контейнер выравнивания с двумя объектами выравнивания внутри.
Fallback alignment
Если вы установите выравнивание, которое не может быть выполнено, тогда возвратное выравнивания вступит в игру и обработает доступное пространство. Это резервное выравнивание указывается отдельно для каждого метода макета и подробно описано на странице для этого метода.
Существует три различных типа выравнивания, которые специфицируют детали; они используют значения ключевых слов.
- Positional alignment (выравнивание положения): указание положения объекта выравнивания относительно его контейнера выравнивания.
- Baseline alignment (исходное выравнивание): эти ключевые слова определяют выравнивание как взаимосвязь между базовыми линиями нескольких объектов выравнивания в контексте выравнивания.
- Distributed alignment (распределённое выравнивание): эти ключевые слова определяют выравнивание как распределение пространства между объектами выравнивания.
Значения ключевых слов позиционирования
Следующие значения определены для позиционного выравнивания и могут использоваться в качестве значений для выравнивания содержимого с justify-content
и align-content
, а также для самовыравнивания с justify-self
и align-self
.
center
start
end
self-start
self-end
flex-start
for Flexbox onlyflex-end
for Flexbox onlyleft
right
Помимо физических значений left
и right
, которые относятся к физическим атрибутам экрана, все остальные значения являются логическими значениями и относятся к режиму записи содержимого.
Например, при работе в CSS Grid Layout, если вы работаете на русском языке и устанавливаете для него значение justify-content
start
, это приведёт к перемещению элементов в встроенном измерении в начало, которое будет левым, поскольку предложения на русском начинаются слева. Если вы использовали арабский язык, право на левый язык, то одно и то же значение start
приведёт к тому, что элементы перемещаются вправо, так как предложения на арабском языке начинаются с правой стороны страницы.
Оба этих примера имеют justify-content: start
, однако местоположение начала изменяется в соответствии с режимом записи.
Исходное выравнивание
Ключевые слова выравнивания базовой линии используются для выравнивания базовых линий ящиков по группе субъектов выравнивания. Они могут использоваться в качестве значений для выравнивания контента с помощью justify-content
и align-content
, а также для самовыравнивания с justify-self
и align-self
.
baseline
first baseline
last baseline
Исходное выравнивание содержимого — указание значения выравнивания базовой линии для justify-content
или align-content
— работает в методах макета, которые содержат элементы в строках. Объекты выравнивания выравниваются по базовой линии друг к другу, добавляя в них поля.
Исходная линия выравнивания сдвигает поля для выравнивания по базовой линии путём добавления поля за пределами полей. Self alignment — это использование justify-self
или align-self
или при настройке этих значений в виде группы с justify-items
и align-items
.
Distributed alignment
Ключевые слова распределённого выравнивания используются с параметрами align-content
и justify-content
. Эти ключевые слова определяют, что происходит с каким-либо дополнительным пространством после отображения объекта. Значения следующие:
stretch
space-between
space-around
space-evenly
Например, элементы Flex Layout сначала выровнены с использованием flex-start.
Работая в горизонтальном верхнем и нижнем режимах записи, таком как русский, с flex-direction
в виде row
элементы начинаются в крайнем левом углу и любое свободное место после отображения элементов помещается после элементов.
Если вы устанавливаете justify-content: space-between
в контейнере flex, доступное пространство теперь разделяется и помещается между элементами.
Для того, чтобы эти ключевые слова вступили в силу, должно быть доступно пространство в измерении, для которого вы хотите выровнять элементы. Без места, нечего распространять.
safe
и unsafe
ключевые слова помогают определить поведение, когда объект выравнивания больше, чем контейнер выравнивания. Ключевое слово safe
будет выравниваться для start
в случае заданного выравнивания, вызывающего переполнение, целью которого является избежать «потери данных», когда часть элемента находится за пределами границ контейнера выравнивания и не может быть прокручена до.
Если вы укажете unsafe
, выравнивание будет выполнено, даже если это приведёт к такой потере данных.
Спецификация выравнивания коробки также включает свойства gap
, row-gap
и column-gap
. Эти свойства позволяют установить постоянный разрыв между элементами в строке или столбце в любом методе макета, который имеет элементы, расположенные таким образом.
Свойство gap
является сокращением для row-gap
и column-gap
, что позволяет сразу установить эти свойства:
В приведённом ниже примере макет сетки использует сокращённую gap
, чтобы установить разрыв 10px
между дорожками строк и 2em
разрыв между дорожками столбцов.
В этом примере я использую свойство grid-gap
в дополнение к gap
. Первоначальные свойства зазора были предварительно префиксными grid-
в спецификации Grid Layout, а некоторые браузеры поддерживают только эти префиксные версии.
Префиксные версии будут поддерживаться как псевдоним неподписанных, однако вы всегда можете удвоить так, как это было бы с префиксами поставщика, добавив свойство grid-gap
, а затем свойство gap
с теми же значениями.
Кроме того, имейте в виду, что другие вещи могут увеличить визуальный промежуток, отображаемый, например, используя ключевые слова распределения пространства или добавляя поля к элементам.
Поскольку свойства выравнивания полей CSS реализованы по-разному в зависимости от спецификации, с которой они взаимодействуют, обратитесь к следующим страницам для каждого типа макета для получения подробных сведений о том, как использовать с ним свойства выравнивания:
CSS Properties
Glossary Entries
CSS: элемент в центре — dr.Brain
Эта статья будет полезна для тех, кто только начинает свой путь в веб-разработке. Выравнивание элемента по центру — достаточно распространенная задача, но каждый из нас все равно когда-то испытывал связанные с этим затруднения и искал оптимальные способы выравнивания по центру одного блока относительно другого c помощью Google или Stackoverflow. Несомненно, это простая задача. Однако, наличие большого количества элементов и стилей зачастую приводит к обидным ошибкам.
Ниже мы разберем несколько способов выравнивания блока по центру.
Text-align
Метод text-align: center, пожалуй самый распространенный. Обычно он используется для горизонтального выравнивания по центру текста. Кроме того, он успешно используется и для div
.
Как это делается?
- вокруг элемента, который нужно выровнять по центру, создайте родительский блок (обычно он называется wrapper или container),
- задайте для этого (родительского) элемента CSS-свойство text-align: center,
- для выравниваемого элемента создайте свойство display: inline-block.
В примере для синего квадрата есть блок-обертка blue-square-container
, для которого определено выравнивание текста по центру text-align: center, а для самого квадрата есть свойство display: inline-block.
Следует обратить внимание на то, что по умолчанию для свойства display div
получает значение block и поэтому занимает всю доступную ширину 100% и не выравнивается по правилам строчных элементов.
В свою очередь для inline-block элемента:
- ширина определяется содержимым или установленным фиксированным значением,
- выравнивание относительно родительского блока происходит по правилам, установленным для строчных элементов.
Margin: auto
Другой распространенный способ центрирования блока по горизонтали связан с автовырвниванием левого и правого внешних отступов (например: margin: 0 auto). В этом случае не имеет значения: есть ли родительский элеменет и что с ним происходит.
Мы просто применяем margin: 0 auto к желтому блоку, и это будет работать, если у выравниваемого элемента есть фиксированная ширина.
margin: 0 auto — короткая запись CSS-свойств, определяющая верхний и нижний внешние отступы равными 0, и автоматическое определение ширины для левого и правого внешних отступов.
Важно, чтобы для выравниваемого элемента была установлена фиксированная ширина (в нашем случае для желтого квадрата width: 100px), без нее браузер не сможет рассчитать значения правого и левого внешних отступов, чтобы установить элемент по центру.
Вместо 0 можно установить любые необходимые значения для верхнего и нижнего внешних отступов.
Еще один интересный прием — установить значение auto только для margin-left или только для margin-right, что позволит сместить элемент, соответственно, вправо или влево (попробуйте).
Абсолютное позиционирование
Элемент с абсолютным позиционированием можно разместить в любом месте страницы, но с одной особенностью.
Элемет с абсолютным позиционированием выпадает из потока страницы. То есть остальные элементы страницы ведут себя так, будто абсолютно позиционированного элемента вовсе не существует.
Почему это важно?
Потому, что при некорректном использовании данного свойства, можно спровоцировать наложение элементов.
Если мы хотим просто разместить блок по центру, как в двух предыдущих примерах, нужно выполнить три действия:
- установить элементу свойство position: absolute,
- применить свойство left: 50%,
- установить margin-left равным половине ширины элемента с отрицательным значением.
В данном случае, для этого примера создан зеленый квадрат с такими же размерами, как и в остальных случаях, то есть ширина равна 100px.
Свойства position: absolute и left: 50% указывают браузеру на необходимость сместить элемент на 50% влево. Но в этом случае на отметке 50% будет находиться левый край центрируемого элемента, а не его середина.
Наконец, для того, чтобы выровнять элемент по центру, мы смещаем его влево на половину ширины, за счет margin-left с отрицательным значением.
Следует помнить, что расчет положения элемента с абсолютным позиционированием осуществляется относительно любого из родительских элементов с установленным свойством “position: relative” или относительно страницы при их отсутствии.
Transform/translate
До сих пор мы изучали методы выравнивания элементов по горизонтали. Но что делать, если элемент должен находиться точно в центре страницы (как по горизонтали, так и по вертикали).
Проделаем это с красным квадратом из второго примера (смотри выше).
Хотя мы все еще применяем абсолютное позиционирование и margin-left: 50%, появляются и два новых CSS-свойства.
Устанавливая верхний внешний отступ равным 50%: margin-top: 50%, мы смещаем верхний край элемента к центру. Но, аналогично предыдующему примеру, в центре по вертикали оказывается верхний край элемента, а не его середина.
Вот почему нам нужно еще одно свойство, которое называется transform
С помощью transform можно делать разные крутые штуки, в том числе: смещение, ротацию, масштабирование. Но в данном случае нас интересует именно смещение (translate).
Создаем для центрируемого элемента свойство transform: translate(-50%, -50%), и…
Наш красный квадрат находится в центре как по горизонтали, так и по вертикали страницы.
Этот метод часто используется в адаптивной верстке и не требует определения фиксированных размеров элемента, как в примере с абсолютным позиционированием.
Flexbox
Flexbox — одна из популярных моделей позиционирования и выравнивания элементов на странице.
Если Вы не знакомы с flexbox, воспользуйтесь Flexbox Froggy — это увлекательный и веселый интерактивный способ изучения всех возможностей модели flexbox.
Для того, чтобы разместить элемент в центре (по горизонтали и вертикали) с помощью flexbox, нужно выполнить следующие действия:
- HTML, body и родительский контейнер должны иметь высоту 100%,
- для родителського контейнера нужно установить display: flex,
- так же для родительского контейнера нужно установить align-items: center,
- еще для родительского контейнера нужно установить justify-content: center.
Устанавливая display: flex, мы создаем flex-контейнер.
align-items: center определяет вертикальное выравнивание всех дочерних элементов по центру родительского.
justify-content: center по действию подобен предыдущему свойству, но работает в другом направлении — горизонтальном.
Этот метод хорош тем, что отлично подходит для адаптивной верстки и не требует вычисления внешних отступов.
Спасибо за внимание.
Перевод статьи Stephen Sun “How to center things with style in CSS “.
CSS: выравнивание элементов внутри div
У меня есть div, который содержит три элемента, и у меня возникают проблемы с правильным позиционированием последнего. Div слева должен быть слева, тот, что посередине, должен быть центрирован, а третий-справа.
Итак, у меня есть что-то вроде:
#left-element {
margin-left: 9px;
margin-top: 3px;
float:left;
width: 13px;
}
#middle-element {
margin:0 auto;
text-align: center;
width: 300px;
}
#right-element {
float:right;
width: 100px;
}
Мой html выглядит так:
<div>
<div>
<img src="images/left_element.png" alt="left"/>
</div>
<div>
I am the text inside the middle element
</div>
<div>
I am the text in right element
</div>
</div>
Есть идеи?
Спасибо!
css positioning htmlПоделиться Источник luqita 30 апреля 2011 в 13:54
4 ответа
- Кроссбраузерное выравнивание div по центру с помощью CSS
Какой самый простой способ выровнять div , чье положение relative по горизонтали и вертикали, используя CSS ? Ширина и высота div неизвестны, то есть он должен работать для каждого измерения div и во всех основных браузерах. Я имею в виду выравнивание по центру. Я думал сделать горизонтальное…
- Выравнивание по вертикали входных элементов в div
Я сделал поиск на SO, чтобы узнать, как я могу выровнять по вертикали входные элементы в div. Этот div находится внутри формы. Большинство вопросов, элементы формы имеют много <div> ‘ s для каждого элемента или тег <br> для этого. Вертикальное выравнивание входных элементов…
4
Вы не включили css для вашего контейнера div, но всякий раз, когда он содержит плавающие элементы, вы должны скрыть переполнение следующим образом:
#container {
overflow: hidden;
width: 100%; /* for good measure */
}
Когда вы размещаете средний div, вы устанавливаете поля, которые охватывают весь контейнер, поэтому любые дополнительные элементы будут располагаться на линии ниже. Обратите внимание, по крайней мере, для большинства современных браузеров, далее . Если вы переупорядочите свои элементы, например так:
<div>
<div>
<img src="images/left_element.png" alt="left"/>
</div>
<div>
I am the text in right element
</div>
<div>
I am the text inside the middle element
</div>
</div>
Вы должны найти, что это работает. Лучшим методом, поскольку я не совсем уверен, что это должно сработать, было бы использовать позиционирование css. Применяются следующие css:
#container {
overflow: hidden;
width: 100%;
min-height: 36px; /* Remember absolute positioning is outside the page flow! */
position: relative;
}
#left-element {
position: absolute;
left: 9px;
top: 3px;
width: 13px;
}
#middle-element {
margin: 0 auto;
text-align: center;
width: 300px;
}
#right-element {
position: absolute;
right: 0px;
top: 0px;
width: 100px;
}
Поделиться lpd 30 апреля 2011 в 14:32
1
Я думаю, что ваша проблема заключается в том, что вы плавали левым и правым элементом, но не центральным. Попробуйте что-нибудь вроде этого:
CSS:
<style>
#container { display:block; margin:0; padding:0; width:640px; height:400px; outline:1px solid #000; }
#left-element { float:left; display:block; margin:10px; padding:0; width:200px; height:380px; background:#ccc; }
#middle-element { float:left; display:block; margin:10px 0; padding:0; width:200px; height:380px; background:#eaeaea; }
#right-element { float:left; display:block; margin:10px; padding:0; width:200px; height:380px; background:#ddd; }
</style>
HTML:
<div>
<div>Left Element</div>
<div>Middle Element</div>
<div>Right Element</div>
</div>
Поделиться Jonathan Miller 30 апреля 2011 в 14:06
1
Проблема заключается именно в том, что средний div имеет заданную ширину, но не плавает, то есть он все еще является элементом уровня блока. Даже если сам div не проходит по всей ширине контейнера, он все равно рассматривается как таковой. Вам нужно сделать 2 вещи-поплавать в среднем div, затем очистить поплавки, чтобы контейнер рос с высотой дочерних divs. Метод clearfix является предпочтительным, поскольку он не вызывает проблем со свойствами CSS3, которые естественным образом выходят за пределы элемента, к которому они применяются (box-shadow, text-shadow и т. д.).
http://perishablepress.com/press/2009/12/06/new-clearfix-hack/
Поделиться Brent Friar 30 апреля 2011 в 14:53
- Как установить вертикальное выравнивание элементов, существующих в теге div, по центру с css?
Я пытаюсь установить вертикальное выравнивание элементов, существующих в теге div, по центру. Пожалуйста, совет <div class=new_div> <h4>نام من</h4> <p>توضیحات من</p> <button class=btn btn-primary>بیشتر …</button> </div> css .new_div { position:…
- css вертикальное выравнивание вертикальное выравнивание внутри
Моя цель состоит в том, чтобы создать 3 вертикально выровненных div, где один div имеет вертикальную полосу высоты родителя ( border-right ). родитель может иметь фиксированную высоту, что, в свою очередь, должно позволить использовать вертикальное выравнивание с помощью css (я знаю, что flexbox…
0
У меня была точно такая же проблема. Я использовал этот подход. Я сделал центральный элемент отображения встроенным блоком. Таким образом, мне не нужно было давать элементам определенную ширину или основному контейнеру определенную высоту. Блоки занимали столько же места, сколько и содержимое внутри. Надеюсь, это поможет.
.main-nav {
text-align: center;
padding: 2em 3em;
background: #f4f4f4;
}
#logo {
margin: 0;
width: 50px;
float: left;
margin-top: 18px;
}
#logo-link {
float: left;
display: inline-block;
}
.name {
display: inline-block;
}
.nav {
float: right;
margin-top: 18px;
}
.nav li {
float: left;
margin-right: 15px;
margin-top: 5px;
}
.nav li:last-child {
margin-right: 0;
}
<header>
<div>
<a href="index.html"><img src="img/site-logo.svg" alt="Munchies"></a>
<div>
<h2>The Munchies Family Site</h2>
<h3>Designer</h3>
</div>
<nav>
<ul>
<li><a href="index.html">Gallery</a></li>
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</div>
</header>
сильный текст
Поделиться Samgraphics 17 ноября 2017 в 04:12
Похожие вопросы:
Как выровнять div внутри элемента td с помощью класса CSS
Он работает с этим способом <td align=center> Но я хочу использовать класс CSS. Я определил класс таким образом, но не повезло td { vertical-align: middle; text-align: center; margin-left:…
вертикальное выравнивание изображения внутри div
Я хочу установить вертикальное выравнивание изображения внутри div. Я использую img { vertical-align:middle} но это не работает.
Вертикальное выравнивание элементов внутри UITableViewCell
Можно ли программно установить вертикальное выравнивание (середину) всех элементов внутри прототипной ячейки UITableView (UILabel, UIImageView)? Я хотел бы установить его на середину.
Кроссбраузерное выравнивание div по центру с помощью CSS
Какой самый простой способ выровнять div , чье положение relative по горизонтали и вертикали, используя CSS ? Ширина и высота div неизвестны, то есть он должен работать для каждого измерения div и…
Выравнивание по вертикали входных элементов в div
Я сделал поиск на SO, чтобы узнать, как я могу выровнять по вертикали входные элементы в div. Этот div находится внутри формы. Большинство вопросов, элементы формы имеют много <div> ‘ s для…
Как установить вертикальное выравнивание элементов, существующих в теге div, по центру с css?
Я пытаюсь установить вертикальное выравнивание элементов, существующих в теге div, по центру. Пожалуйста, совет <div class=new_div> <h4>نام من</h4> <p>توضیحات من</p>…
css вертикальное выравнивание вертикальное выравнивание внутри
Моя цель состоит в том, чтобы создать 3 вертикально выровненных div, где один div имеет вертикальную полосу высоты родителя ( border-right ). родитель может иметь фиксированную высоту, что, в свою…
Почему бы выравнивание текста выравнивание текста в div?
Выравнивание текста в div выполняется через text-align . Обычно он работает нормально: <div style=text-align:right;border:1px solid red> this goes to the right </div> У меня есть кусок…
Измените класс css после заданного количества элементов внутри div
Мне нужно изменить значение css display элементов внутри div с помощью jQuery. Что мне нужно сделать, так это получить количество элементов внутри элемента div. (Экс — Li-элементы). Если количество…
Вертикальное выравнивание внутри сетки CSS
Я хотел бы иметь гигантскую панель прогресса, которая вертикально выровнена внутри сетки CSS. Проблема в том, что вертикальное выравнивание внутри сетки CSS не работает для меня. Я попробовал на…
CSS: выравнивание элемента списка как по вертикали, так и по горизонтали
Заголовок моей страницы имеет смещенный элемент <li>
. Вот скриншот:
В основном я хочу сказать: «центрируйте оба элемента вертикально, один слева, а другой справа».
Я могу выровнять элемент <li>
- горизонтально с
style="float:right"
- вертикально с
style="vertical-align:middle"
.
..Но не в одно и то же время. Основываясь на подобном вопросе , я ожидал, что это сработает:
style="float:right; vertical-align:middle"
Это не.
Я также нашел несколько способов выравнивания всего списка, но они не были применимы к выравниванию отдельного элемента списка.
Вот соответствующий код html-thymeleaf:
<div th:fragment="header">
<nav>
<ul>
<li><a href="/"><h3>Personal Expense Tracker</h3></a></li>
<li th:inline="text"><a href="/logout">[[(${user != null ? 'Logout ' + user : ''})]]</a></li>
</ul>
</nav>
</div>
Вот соответствующий код css:
nav {
background-color: #333;
border: 1px solid #333;
color: #fff;
display: block;
margin: 0;
overflow: hidden;
}
nav ul{
margin: 0;
padding: 0;
list-style: none;
}
nav ul li {
margin: 0;
display: inline-block;
list-style-type: none;
transition: all 0.2s;
}
nav > ul > li > a {
color: #aaa;
display: block;
line-height: 2em;
padding: 0.5em 2em;
text-decoration: none;
}
nav > ul > li > a:hover {
background-color: #111;
}
html
css
vertical-alignment Поделиться Источник Atte Juvonen 02 января 2017 в 02:51
3 ответа
- Как центрировать div как по вертикали, так и по горизонтали
Я хотел бы центрировать текст как по вертикали, так и по горизонтали apple. Я перепробовал все уже предложенные решения (внутренний div, вертикальное выравнивание, margin:auto…) Я просто не понимаю этого. http://jsfiddle.net/0jkdLr84/3 / Я думаю, что проблема находится ниже. #distance {…
- Центрирование изображения автоматического размера как по горизонтали, так и по вертикали
Я провел много поисков и нашел довольно много ответов на эту проблему, но ни один из них, казалось, не работал, когда я попробовал их в своей конкретной установке. Вот JSFiddle проблемы, которую я пытаюсь решить: http://jsfiddle.net/kr394ye2/1 / .classA { background-color: yellow; width: 50px;…
1
С кодом, который вы добавили..
Используя flexbox, вы можете сделать это:
nav {
background-color: #333;
border: 1px solid #333;
color: #fff;
display: block;
margin: 0;
overflow: hidden;
}
nav ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;/* added */
align-items: center;/* added */
justify-content: space-between;/* added */
}
nav ul li {
margin: 0;
display: inline-block;
list-style-type: none;
transition: all 0.2s;
}
nav > ul > li > a {
color: #aaa;
display: block;
line-height: 2em;
padding: 0.5em 2em;
text-decoration: none;
}
nav > ul > li > a:hover {
background-color: #111;
}
<div th:fragment="header">
<nav>
<ul>
<li><a href="/"><h3>Personal Expense Tracker</h3></a></li>
<li th:inline="text" ><a href="/logout">Log out</a></li>
</ul>
</nav>
</div>
Поделиться pol 02 января 2017 в 02:59
1
вопрос немного расплывчатый. Если бы вы могли дать мне визуальное представление о вашей проблеме / о том, что вы ищете в результате, я, вероятно, мог бы помочь больше.
В любом случае, вот классический способ горизонтального и вертикального выравнивания элемента по отношению к его родителю.
Желаю удачи!
.container {
position: relative;
display: block;
margin: 0 auto;
width: 50%;
max-width: 1000px;
height: 100px;
background: grey;
}
.element {
position: absolute;
display: block;
width: 50%;
height: 50px;
background: red;
top: 50%;
margin-top: -25px;
left: 50%;
margin-left: -25%;
}
<ul>
<li></li>
</ul>
Поделиться Stephen Bennett 02 января 2017 в 03:28
0
Вы должны дать height
или line-height
элементу (или в каком-то случае родительский элемент не имеет высоты), поэтому vertical-align:middle
не будет работать, потому что высоты нет.
Сначала дайте высоту элементу, который вы хотите установить вертикально посередине, если он не работает, дайте высоту родительскому элементу.
Поделиться Maharshi 02 января 2017 в 03:47
Похожие вопросы:
Выравнивание изображения по центру как по вертикали, так и по горизонтали
Мне нужна помощь, чтобы сделать центр изображения выровненным по горизонтали и вертикали как с помощью CSS. Рассмотрим ниже код, в котором контейнер является единственным элементом, доступным в…
Центрирование пролета по вертикали и горизонтали внутри элемента списка
У меня возникли проблемы с центрированием пролета по горизонтали и вертикали в элементе списка. Он просто торчит в левом верхнем углу. Вот мой markup: <ul id=folders> <li…
Сделайте так, чтобы текст появлялся в центре SPAN по горизонтали и вертикали
Я хочу отобразить некоторый текст в DIV, который должен появиться в центре SPAN-как по вертикали, так и по горизонтали. Это мой jsfiddle- http://jsfiddle.net/8Syqv/13 / HTML: <span>something…
Как центрировать div как по вертикали, так и по горизонтали
Я хотел бы центрировать текст как по вертикали, так и по горизонтали apple. Я перепробовал все уже предложенные решения (внутренний div, вертикальное выравнивание, margin:auto…) Я просто не…
Центрирование изображения автоматического размера как по горизонтали, так и по вертикали
Я провел много поисков и нашел довольно много ответов на эту проблему, но ни один из них, казалось, не работал, когда я попробовал их в своей конкретной установке. Вот JSFiddle проблемы, которую я…
CSS : самый простой способ центрирования элементов как по горизонтали, так и по вертикали с помощью flex?
Как сделать отзывчивую коробку с элементами, центрированными как по горизонтали, так и по вертикали внутри нее, используя css flex?
Выравнивание текста по центру по горизонтали и вертикали в элементе div
Я сделал div фиксированной высоты и хочу, чтобы текст выравнивался как по вертикали, так и по горизонтали в div. Я попробовал использовать margin:auto и выравнивание текста, но это не помогло. Я…
Выравнивание изображения по центру внутри div по горизонтали и вертикали
В настоящее время у меня есть header div, а внутри него- header-top и header-bottom . Я пытаюсь разместить свой логотип на top-header и выровнять его по вертикали и горизонтали. Логотип…
Центрирование div по вертикали и горизонтали
Есть ли способ центрировать .polygon_container и .polygon по вертикали и горизонтали? Кроме того, есть ли возможность сделать его размер отзывчивым, как тег <img> ниже? http:/ /…
HTML/CSS: центрируйте содержимое как по горизонтали, так и по вертикали
Я хочу центрировать свой контент как по вертикали, так и по горизонтали на странице. Я никак не мог заставить его работать. Кто-нибудь здесь может помочь? Спасибо. <style type = text/css>…
Выравнивание по вертикали CSS
Вертикальное выравнивание CSS — весьма непростая работа. Я видел достаточно людей, борющихся с этим, и постоянно обнаруживаю “критические” ошибки, когда дело доходит до реального адаптивного дизайна.
Но не бойтесь: если вы уже боретесь с CSS вертикальным выравниванием — вы обратились по адресу.
Когда я только начинал работать в области веб-разработки, то немного помучился с этим свойством. Я думал, что оно должно работать, как классическое свойство “text-align”. Ах, если бы все было так просто…
CSS свойство vertical-align отлично работает с таблицами, но не с div или другими элементами. Когда вы используете его для div, то оно выравнивает элемент относительно других блоков, но не его содержимое. При этом свойство работает только с display: inline-block;.
У вас есть два выхода. Если у вас только элементы div с текстом, то можно использовать свойство line-height. Это означает, что нужно знать высоту элемента, но нельзя ее устанавливать. Таким образом, ваш текст будет всегда в центре.
Правда у этого подхода CSS выравнивания по вертикали есть недостаток. Если текст многострочный, тогда высота строки будет умножена на количество строк. Скорее всего, в этом случае, у вас получится ужасно сверстанная страница.
Взгляните на приведенный ниже пример.
Если контент, который вы хотите центрировать, состоит больше, чем из одной строки, тогда лучше использовать табличные div. Также можно использовать таблицы, но семантически это не правильно. Если вам нужны разрывы для адаптивных целей, лучше использовать элементы div.
Чтобы это работало, должен быть родительский контейнер с display: table, а внутри него – нужное количество столбцов, которое вы хотите центрировать с помощью display: table-cell и vertical-align: middle.
Почему это работает с табличной разметкой, но не с элементами div? Потому что у строк в таблице одинаковая высота. Когда содержимое ячейки таблицы не использует все доступное пространство по высоте, браузер автоматически добавляет вертикальные отступы, чтобы центрировать содержимое.
Начнем с основ выравнивания по вертикали CSS div:
- position: static — это значение по умолчанию. Элемент отображается в соответствии с порядком HTML;
- position: absolute — используется, чтобы определить точное положение элемента. Эта позиция всегда связана с ближайшим относительно позиционированным родительским элементом (не static). Если не определить точное положение элемента, вы потеряете контроль над ним. Он отобразится случайно, полностью игнорируя поток документа. По умолчанию элемент отображается в левом верхнем углу;
- position: relative — используется для позиционирования элемента относительно его нормального положения (статического). Это значение сохраняет порядок потока документа;
- position: fixed — используется для позиционирования элемента относительно окна браузера, поэтому он всегда отображается в области просмотра.
Примечание: некоторые свойства (top и z-index) работают только в том случае, если для элемента задано значение position (не static).
Вы хотите осуществить CSS выравнивание по центру по вертикали? Сначала создайте элемент с относительной позицией и размерами. Например: 100% по ширине и высоте.
Второй шаг может быть различным в зависимости от целевых браузеров, но можно использовать один из двух вариантов:
Старое свойство: нужно знать точный размер окна, чтобы удалить половину ширины и половину высоты. Посмотрите приведенный ниже пример.
Новое свойство CSS3: можно добавить свойство transform со значением translate 50% и блок всегда будет в центре. Посмотрите приведенный ниже пример.
В принципе, если вы хотите центрировать контент, никогда не используйте top: 40% или left: 300px. Это прекрасно работает на тестовых экранах, но это не центровка.
Помните position: fixed? Можно сделать с ним то же самое, что и с абсолютной позицией, но вам не нужна относительная позиция для родительского элемента — она всегда будет позиционировать относительно окна браузера.
Можно использовать flexbox. Это гораздо лучше, чем любой другой вариант выравнивания текста по центру CSS по вертикали. С flexbox управление элементами напоминает детскую игру. Проблема состоит в том, что нужно отбросить некоторые браузеры, такие как IE9 и версии ниже. Вот пример того, как вертикально центрировать блок:
Используя flexbox расположение, можно центрировать несколько блоков.
Если вы примените то, что узнали из этих примеров, то сможете освоить CSS выравнивание блока по вертикали в кратчайшие сроки.
Данная публикация является переводом статьи «CSS Vertical Align for Everyone (Dummies Included)» , подготовленная редакцией проекта.
Vertical align CSS — выравнивание по вертикали в помощью CSS
Вертикальное выравнивание CSS — не самая простая задача. Осложняет дело и то, что с сегодняшними требованиями к адаптивному дизайну для разных устройств разработчикам приходится создавать элементы с «гибкой» высотой, и вычисление центра по вертикали становится довольно хитрой задачей.
В данной статье мы рассмотрим:
- свойство vertical-align, как и когда оно работает;
- метод центрирования по вертикали элемента с известной высотой;
- центрирование по вертикали элементов с изменяемой высотой.
Свойство vertical-align влияет только на элементы, у которых свойство display имеет значения inline, inline-block или table-cell. Оно принимает в качестве значений число, проценты или ключевое слово.
Длина и проценты выравнивают базовую линию элемента на соответствующем расстоянии от базовой линии родительского элемента.
Ключевые значения vertical-align могут быть следующими:
- baseline;
- sub;
- super;
- text-top;
- text-bottom;
- middle;
- top;
- bottom.
Большинство из них не требует дополнительного объяснения. Стоит отметить только sub и super, которые отображают элемент как подстрочный и надстрочный, не изменяя при этом размер шрифта.
Рассмотрим наглядный пример вертикального выравнивания текста CSS с помощью vertical-align. У нас есть сетка с изображениями и текстом — все они разной высоты, поэтому не везде текст выравнивается красиво:
<div> <img src="http://placebacn.com/200/400"> <h3>grilled bacon</h3> </div> <div> <img src="http://placebacn.com/200/300"> <h3>tasty bacon</h3> </div> <div> <img src="http://placebacn.com/200/200"> <h3>crispy bacon</h3> </div> <div> <img src="http://placebacn.com/200/350"> <h3>bacon</h3> </div>
Чтобы всё аккуратно выровнять, можно задать контейнерам сетки свойство display: inline-block и использовать для изображений свойство vertical-align: bottom. Если бы в нашем примере не было текста, можно было бы использовать vertical-align: middle и легко добиться нужного результата.
В примере, приведенном ниже, у нас есть div с чёрным фоном и рамкой. Внутри него находится блок поменьше с нужной нам шириной и высотой:
<div> <div> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nobis aperiam quidem minima a qui ipsa deleniti nisi modi nesciunt dolores, consequatur dolorem, dignissimos debitis distinctio. Voluptas eligendi fuga voluptatem eos. </div> </div>
Если мы знаем высоту блока, можно использовать абсолютное позиционирование, чтобы осуществить CSS вертикальное выравнивание по центру.
Применив к контейнеру свойство position: relative, можно задать абсолютное позиционирование внутреннему блоку. Если присвоить свойствам top и left значение 50%, блок сдвинется на 50% от верхнего и левого краёв. Верхний левый угол блока окажется точно в центре контейнера:
.container { position: relative; background: #444; } .box { position: absolute; top: 50%; left: 50%; width: 400px; height: 200px; margin: -100px 0 0 -200px; color: #fff; background: #cc3f85; }
Наш блок имеет заданные ширину и высоту, поэтому можно установить для него отрицательные отступы — на половину высоты вверх и половину ширины влево. Наш блок теперь размещён в центре контейнера.
Этот приём CSS вертикального выравнивания блока работает, но его недостаток заключается в неизменяемой ширине элементов. Поэтому он будет далеко не лучшим решением для работы над адаптивным дизайном.
Отличные результаты для центрирования по вертикали элементов с изменяемой высотой можно получить, объединив vertical-align: middle с псевдоэлементами. Возьмём тот же пример с блоком внутри контейнера, но в этот раз блок будет иметь изменяемую высоту.
Главный приём здесь — создать невидимый элемент (используя псевдоэлемент), который будет заполнять контейнер по высоте, и установить свойства display: inline-block и vertical-align:middle. После этого нужно выровнять внутренний блок, также установив ему свойства display: inline-block и vertical-align: center. Затем центрировать блок по горизонтали, используя text-align: center:
.container { height: 400px; margin: 20px; background: #444; font-size: 0; text-align: center; } .container:before { content: ''; display: inline-block; height: 100%; vertical-align: middle; } .box { display: inline-block; width: 50%; padding: 2em; border: 1px solid #000; background: #cc3f85; font-size: 1rem; vertical-align: middle; }
Теперь, когда изменяется ширина контейнера, также изменяется ширина дочернего блока в процентах, соответственно меняя его высоту. Но при этом к блоку применяется вертикальное выравнивание CSS div.
Данная публикация является переводом статьи «Vertical-Alignment in CSS» , подготовленная редакцией проекта.
Комбинаторы CSS
Комбинаторы CSS
Комбинатор — это то, что объясняет взаимосвязь между селекторами.
Селектор CSS может содержать более одного простого селектора. Между простым селекторы, мы можем включить комбинатор.
В CSS есть четыре разных комбинатора:
- Селектор потомков (пробел)
- дочерний селектор (>)
- Селектор соседних братьев (+)
- общий родственный селектор (~)
Селектор потомков
Селектор потомков соответствует всем элементам, которые являются потомками указанного элемент.
В следующем примере выбираются все элементы
внутри элементов
Селектор детей (>)
Дочерний селектор выбирает все элементы, которые являются дочерними элементами указанный элемент.
В следующем примере выбираются все элементы
, которые дочерние элементы
Селектор соседних братьев и сестер (+)
Смежный селектор соседнего уровня используется для выбора элемента, который непосредственно после другого конкретного элемента.
Родственные элементы должны иметь один и тот же родительский элемент, и «смежный» означает «сразу после».
В следующем примере выбирается первый элемент
, который помещается сразу после элементов
Общий селектор братьев и сестер (~)
Общий селектор одноуровневых элементов выбирает все элементы, являющиеся братьями и сестрами указанного элемента.
В следующем примере выбираются все элементы
, которые являются родственниками элементов
Проверьте себя упражнениями!
Все селекторы комбинаторов CSS
Селектор | Пример | Описание примера |
---|---|---|
элемент элемент | div p | Выбирает все элементы внутри элементов |
элемент > элемент | div> p | Выбирает все элементы , где родительский элемент |
элемент + элемент | div + p | Выбирает первый элемент , который помещается сразу после элементов |
элемент1 ~ элемент2 | пол | Выбирает каждый элемент
|
CSS свойство align-items
Пример
Центрировать выравнивания для всех элементов гибкого элемента
div
{
дисплей: гибкий;
align-items: center;
}
Определение и использование
Свойство align-items
определяет выравнивание по умолчанию для элементов внутри гибкого контейнера.
Совет: Используйте свойство align-self каждого элемента, чтобы переопределить свойство align-items
.
Значение по умолчанию: | растяжка |
---|---|
Унаследовано: | № |
Анимация: | нет. Подробнее о animatable |
Версия: | CSS3 |
Синтаксис JavaScript: | объект .style.alignItems = «центр» Попытайся |
Поддержка браузера
Числа в таблице указывают первую версию браузера, полностью поддерживающую свойство.
Числа, за которыми следует -webkit-, указывают первую версию, которая работала с префиксом.
Имущество | |||||
---|---|---|---|---|---|
align-items | 21.0 | 11,0 | 20,0 | 9,0 7,0 -вебкит- | 12,1 |
Синтаксис CSS
выровнять элементы: растяжение | центр | гибкий старт | гибкий конец | базовая линия | начальный | наследование;
Стоимость недвижимости
Значение | Описание | Играй |
---|---|---|
растяжка | По умолчанию.Предметы растягиваются по размеру контейнера | Играй » |
центр | Предметы расположены в центре контейнера | Играй » |
гибкий старт | Предметы помещаются в начало контейнера | Играй » |
гибкий конец | Предметы расположены в конце контейнера | Играй » |
базовый | Предметы расположены на базовой линии контейнера | Играй » |
начальный | Устанавливает для этого свойства значение по умолчанию.Читать про начальные | Играй » |
наследовать | Наследует это свойство от своего родительского элемента. Читать про наследство |
Связанные страницы
Ссылка CSS: свойство align-content
Ссылка CSS: свойство align-self
Ссылка на HTML DOM: свойство alignItems
CSS: центрирующие объекты
CSS: центрирующие объектыСм. Также указатель всех подсказок.
Центрирующие предметы
Распространенной задачей CSS является центрирование текста или изображений. По факту, существует три вида центрирования:
В последних реализациях CSS вы также можете использовать функции из уровень 3, позволяющий центрировать абсолютно позиционированные элементы:
Центрирующие строки текста
Самый распространенный и (следовательно) самый простой тип центрирования — это строк текста в абзаце или заголовке. CSS имеет свойство text-align для этого:
П {выравнивание текста: центр} h3 {text-align: center}
отображает каждую строку в виде буквы P или h3 с центром между ее поля, например:
Все строки в этом абзаце по центру между полями абзаца благодаря значению ‘center’ свойства CSS ‘text-align’.
Центрирование блока или изображения
Иногда нужно центрировать не текст, а блок в целом. Или, говоря иначе: мы хотим левую и правое поле должно быть равным. Для этого нужно установить поля. на «авто». Обычно это используется с блоком фиксированной ширины, потому что если сам блок гибкий, он просто займет все доступная ширина. Вот пример:
P.blocktext { маржа слева: авто; маржа-право: авто; ширина: 8em } ...Это скорее ...
Этот довольно узкий блок текста расположен по центру. Обратите внимание, что линии внутри блока не центрированы (они с выравниванием по левому краю), в отличие от предыдущего примера.
Это также способ центрировать изображение: превратить его в блок свой собственный и примените к нему свойства поля. Например:
IMG.displayed { дисплей: блок; маржа слева: авто; margin-right: auto} ...
Следующее изображение отцентрировано:
Вертикальное центрирование
CSS level 2 не имеет свойства для центрирования вещей вертикально.Вероятно, он будет на уровне CSS 3 (см. Ниже). Но даже в CSS2 вы можете центрировать блоки по вертикали, комбинируя несколько свойств. Хитрость заключается в том, чтобы указать, что внешний блок форматироваться как ячейка таблицы, потому что содержимое таблицы ячейку можно центрировать по вертикали .
Пример ниже центрирует абзац внутри блока, имеющего определенная заданная высота. В отдельном примере показан абзац, центрированный по вертикали в браузере. окно, потому что оно находится внутри блока, который абсолютно позиционирован и высотой с окно.
DIV.container { мин-высота: 10em; дисплей: таблица-ячейка; вертикальное выравнивание: средний} ...Этот небольшой абзац ...
Этот маленький абзац расположен по центру вертикально.
Вертикальное центрирование в CSS, уровень 3
CSS level 3 предлагает другие возможности. В это время (2014 г.) хороший способ центрировать блоки по вертикали без использования абсолютного позиционирование (которое может привести к наложению текста) все еще ниже обсуждение.Но если вы знаете, что перекрывающийся текст не будет проблема в вашем документе, вы можете использовать свойство ‘transform’, чтобы центрировать абсолютно позиционированный элемент. Например:
Этот абзац расположен по центру по вертикали.
Для документа, который выглядит так:
Этот абзац…
таблица стилей выглядит так:
div.container3 { высота: 10em; позиция: относительная } / * 1 * / div.container3 p { маржа: 0; позиция: абсолютная; / * 2 * / верх: 50%; / * 3 * / преобразование: перевод (0, -50%) } / * 4 * /
Основные правила:
- Сделайте контейнер относительно позиционированным, который объявляет, что это контейнер для абсолютно позиционированных элементов.
- Сделайте сам элемент абсолютно позиционированным.
- Поместите его наполовину в емкость с надписью «верх: 50%».(Примечание что 50% ‘здесь означает 50% высоты контейнера.)
- Используйте перевод, чтобы переместить элемент вверх вдвое. высота. (‘50% ‘в’ translate (0, -50%) ‘обозначает высоту сам элемент.)
Недавно (примерно с 2015 г.) стала еще одна техника доступен в нескольких реализациях CSS. Он основан на новом Ключевое слово flex для свойства display. Это ключевое слово имеет в виду для использования в графических пользовательских интерфейсах (GUI), но вас ничто не останавливает от использования его в документе, если документ имеет правильная структура.
Этот абзац расположен по центру по вертикали.
таблица стилей выглядит так:
div.container5 { высота: 10em; дисплей: гибкий; align-items: center } div.container5 p { маржа: 0}
Вертикальное и горизонтальное центрирование в CSS, уровень 3
Мы можем расширить оба метода, чтобы центрировать по горизонтали и вертикально одновременно.
Побочным эффектом абсолютного позиционирования абзаца является что тогда он будет настолько широким, насколько он должен быть (если мы не дадим ему явная ширина, конечно).В приведенном ниже примере это именно то, что мы хотим: мы центрируем абзац всего одним словом («По центру!»), Поэтому ширина абзаца должна быть точно ширина этого слова.
Желтый фон показывает, что абзац на самом деле только настолько, насколько велико его содержание. Мы предполагаем ту же наценку, что и перед:
По центру!
Таблица стилей аналогична предыдущему примеру в отношении до вертикального центрирования.Но теперь мы переместим элемент наполовину по всему контейнеру, с ‘left: 50%’, и в то же время время переместите его влево на половину его собственной ширины в ‘translate’ трансформация:
div.container4 { высота: 10em; position: relative} div.container4 p { маржа: 0; фон: желтый; позиция: абсолютная; верх: 50%; осталось: 50%; поле справа: -50%; преобразовать: перевести ( -50%, -50%)}
В следующем примере ниже объясняется, почему «margin-right: -50%» нужный.
Когда средство форматирования CSS поддерживает flex, это еще проще:
с этой таблицей стилей:
div.container6 { высота: 10em; дисплей: гибкий; align-items: center; justify-content: center } div.container6 p { маржа: 0}
, то есть единственное дополнение — это «justify-content: center». Просто как ‘align-items’ определяет вертикальное выравнивание содержимого контейнера, ‘justify-content’ определяет горизонтальный выравнивание.(На самом деле это немного сложнее, так как их имена предлагаю, но в простом случае это работает именно так.) Побочный эффект из ‘flex’ заключается в том, что дочерний элемент, P в данном случае, является автоматически делается как можно меньше.
Центрирование в области просмотра в CSS уровня 3
Контейнером по умолчанию для абсолютно позиционированных элементов является область просмотра. (В случае браузера это означает окно браузера). Так центрировать элемент в области просмотра очень просто.Вот полный пример. (В этом примере используется синтаксис HTML5.)
<стиль> тело { background: white} раздел { фон: черный; цвет белый; радиус границы: 1em; заполнение: 1em; позиция: абсолютная; верх: 50%; осталось: 50%; поле справа: -50%; преобразование: перевод (-50%, -50%) } <раздел>Красиво по центру
Этот текстовый блок центрирован по вертикали.
И по горизонтали, если окно достаточно широкое.
Вы можете увидеть результат в отдельном документ.
Поле «margin-right: -50%» необходимо для компенсации «left: 50% ». Правило «влево» уменьшает доступную ширину элемента. на 50%. Таким образом, средство визуализации попытается создать строки, которые больше не чем на половину ширины контейнера. Сказав, что право маржа элемента дальше вправо на ту же величину, максимальная длина строки снова равна ширине контейнера.
Попробуйте изменить размер окна: вы увидите, что каждое предложение состоит из одного линия, когда окно достаточно широкое. Только когда окно слишком узкий для всего предложения будет ли приговор разбит несколько строк. Когда вы удаляете ‘margin-right: -50%’ и изменяете размер снова окно, вы увидите, что предложения будут разбиты уже тогда, когда ширина окна в два раза превышает ширину текстовых строк.
(Использование ‘translate’ для центрирования в области просмотра было первым предложенный «Чарли» в ответе на переполнение стека.)
Выравнивание блока CSS — CSS: каскадные таблицы стилей
Модуль CSS Box Alignment определяет функции CSS, которые связаны с выравниванием полей в различных моделях макета CSS-боксов: макет блока, макет таблицы, макет гибкости и макет сетки. Модуль направлен на создание единого метода выравнивания для всего CSS. В этом документе подробно описаны общие концепции, содержащиеся в спецификации.
Примечание : В документации для каждого метода компоновки будет подробно описано, как там применяется выравнивание поля.
CSS традиционно имел очень ограниченные возможности выравнивания. Мы смогли выровнять текст, используя text-align
, центральные блоки, используя автоматическое поле ,
s, и в макетах таблицы или встроенных блоков, используя свойство vertical-align
. Выравнивание текста теперь покрывается модулями Inline Layout и CSS Text, и впервые в Box Alignment у нас есть возможности полного горизонтального и вертикального выравнивания.
Если вы изначально изучали Flexbox, то можете считать, что эти свойства являются частью спецификации Flexbox, и некоторые из свойств действительно перечислены на уровне 1 Flexbox.Однако в спецификации отмечается, что следует ссылаться на спецификацию Box Alignment, поскольку она может добавлять дополнительные возможности по сравнению с тем, что в настоящее время находится во Flexbox.
Следующие примеры демонстрируют, как некоторые свойства выравнивания блока применяются в сетке и Flexbox.
Пример выравнивания макета сетки CSS
В этом примере с использованием макета сетки после размещения дорожек фиксированной ширины на встроенной (основной) оси есть дополнительное пространство в контейнере сетки. Это пространство распределяется с использованием justify-content
.На блочной (поперечной) оси выравнивание элементов внутри их областей сетки контролируется с помощью align-items
. Первый элемент отменяет значение align-items
, установленное для группы, путем установки align-self
на center
.
Пример выравнивания Flexbox
В этом примере три гибких элемента выравниваются по главной оси с помощью justify-content
и по поперечной оси с помощью align-items
. Первый элемент отменяет набор align-items
, установленный для группы, путем установки align-self
на center
.
В спецификации подробно описывается некоторая терминология выравнивания, чтобы упростить обсуждение этих свойств выравнивания вне их реализации в рамках конкретного метода компоновки. Есть также некоторые ключевые концепции, общие для всех методов компоновки.
Связь с режимами записи
Выравнивание связано с режимами записи в том смысле, что при выравнивании элемента мы не учитываем, выравниваем ли мы его по физическим размерам сверху, справа, снизу и слева. Вместо этого мы описываем согласование в терминах начала и конца конкретного измерения, с которым мы работаем.Это гарантирует, что выравнивание работает одинаково, независимо от того, какой режим записи имеет документ.
Два измерения выравнивания
При использовании свойств выравнивания блока вы выравниваете содержимое по одной из двух осей — линейной (или основной) оси и блочной (или поперечной) оси. Встроенная ось — это ось, по которой слова в предложении перемещаются в используемом режиме письма. Например, для английского языка встроенная ось горизонтальна. Ось блока — это ось, вдоль которой размещаются блоки, такие как элементы абзаца, и она проходит поперек оси Inline.
При выравнивании элементов по встроенной оси вы будете использовать свойства, которые начинаются с justify-
:
При выравнивании элементов по оси блока вы будете использовать свойства, которые начинаются с align-
:
Flexbox добавляет дополнительную сложность, поскольку вышесказанное верно, когда flex-direction
установлено на row
. Свойства меняются местами, когда для flexbox установлено значение , столбец
. Поэтому при работе с flexbox легче думать об основной и поперечной оси, чем о встроенных и блочных.Свойства justify-
всегда используются для выравнивания по главной оси, свойства align-
по поперечной оси.
Объект выравнивания
Объект выравнивания — это то, что выравнивается. Для justify-self
или align-self
, или при установке этих значений как группы с justify-items
или align-items
, это будет поле поля элемента, для которого это свойство используется . Свойства justify-content
и align-content
различаются в зависимости от метода макета.
Контейнер для выравнивания
Контейнер для выравнивания — это коробка, внутри которой выравнивается объект. Обычно это содержащий блок объекта выравнивания. Контейнер выравнивания может содержать один или несколько объектов выравнивания.
На изображении ниже показан контейнер для совмещения с двумя объектами совмещения внутри.
Резервное выравнивание
Если вы установили выравнивание, которое не может быть выполнено, тогда в игру вступит резервное выравнивание и обработает доступное пространство.Это резервное выравнивание указывается индивидуально для каждого метода макета и подробно описывается на странице для этого метода.
Существует три различных типа выравнивания, которые подробно описаны в спецификации; в них используются значения ключевых слов.
- Позиционное выравнивание : определение положения объекта выравнивания относительно его контейнера выравнивания.
- Базовое выравнивание : Эти ключевые слова определяют выравнивание как отношение между базовыми линиями нескольких субъектов выравнивания в контексте выравнивания.
- Распределенное выравнивание : Эти ключевые слова определяют выравнивание как распределение пространства между объектами выравнивания.
Значения ключевого слова позиционного выравнивания
Следующие значения определены для позиционного выравнивания и могут использоваться в качестве значений для выравнивания содержимого с justify-content
и align-content
, а также для самовыравнивания с justify-self
и выровнять себя
.
-
центр
-
начало
-
конец
-
самозапуск
-
саморез
-
flex-start
только для Flexbox -
гибкий конец
только для Flexbox -
слева
-
правый
За исключением физических значений слева
и справа
, которые относятся к физическим атрибутам экрана, все другие значения являются логическими значениями и относятся к режиму записи контента.
Например, при работе в CSS Grid Layout, если вы работаете на английском языке и устанавливаете justify-content
на start
, это переместит элементы во встроенном измерении в начало, которое будет слева как предложения на английском языке. начать слева. Если вы использовали арабский язык (язык справа налево), то такое же значение start
приведет к перемещению элементов вправо, поскольку предложения на арабском языке начинаются с правой стороны страницы.
Оба этих примера имеют justify-content: start
, однако местоположение начала изменяется в соответствии с режимом записи.
Базовое выравнивание
Ключевые слова Базовое выравнивание используются для выравнивания базовых линий прямоугольников по группе объектов выравнивания. Их можно использовать в качестве значений для выравнивания содержимого с justify-content
и align-content
, а также для самовыравнивания с justify-self
и align-self
.
-
базовый
-
первая базовая
-
последняя базовая линия
Базовое выравнивание содержимого — указание значения выравнивания базовой линии для justify-content
или align-content
— работает в методах макета, которые размещают элементы в строках.Объекты выравнивания выравниваются по базовой линии друг относительно друга, добавляя отступы внутри полей.
Самовыравнивание по базовой линии сдвигает поля для выравнивания по базовой линии, добавляя поля за пределами полей. Самовыравнивание происходит при использовании justify-self
или align-self
, или при установке этих значений как группы с justify-items
и align-items
.
Распределенное выравнивание
Ключевые слова распределенного выравнивания используются со свойствами align-content
и justify-content
.Эти ключевые слова определяют, что происходит с любым дополнительным пространством после отображения объектов выравнивания. Значения следующие:
-
растяжка
-
расстояние между
-
пространство вокруг
-
равномерно
Например, в Flex Layout элементы изначально выровнены с flex-start
. При работе в горизонтальном режиме письма сверху вниз, таком как английский, с flex-direction
как строка
элементы начинаются с крайнего левого угла, а любое доступное пространство после отображения элементов помещается после элементов.
Если вы установите justify-content: space-between
на гибкий контейнер, доступное пространство теперь распределяется и размещается между элементами.
В измерении, в котором вы хотите выровнять элементы, должно быть свободное место, чтобы эти ключевые слова вступили в силу. Нет места, нечего раздавать.
Ключевые слова safe
и unsafe
помогают определить поведение, когда объект выравнивания больше, чем контейнер выравнивания.Ключевое слово safe
будет выровнено с start
в случае указанного выравнивания, вызывающего переполнение, цель состоит в том, чтобы избежать «потери данных», когда часть элемента находится за пределами границ контейнера выравнивания и не может быть прокрутил до.
Если вы укажете unsafe
, то выравнивание будет выполнено, даже если это вызовет такую потерю данных.
Спецификация выравнивания прямоугольника также включает свойства зазора
, зазора между строками
и зазора между столбцами
.Эти свойства позволяют установить постоянный промежуток между элементами в строке или столбце при любом методе компоновки, в котором элементы расположены таким образом.
Свойство gap
является сокращением для row-gap
и column-gap
, что позволяет нам сразу установить эти свойства:
В приведенном ниже примере макет сетки использует сокращение зазор
, чтобы установить зазор 10 пикселей
между дорожками строк и зазор 2em
между дорожками столбцов.
В этом примере я использую свойство gap
в дополнение к gap
. Свойства разрыва изначально имели префикс grid-
в спецификации Grid Layout, и некоторые браузеры поддерживают только эти версии с префиксом.
Версии с префиксами будут поддерживаться как псевдонимы без префиксов, однако вы всегда можете удвоить их так же, как и с префиксами поставщиков, добавив свойство grid-gap
, а затем свойство gap
с теми же значениями. .
Также имейте в виду, что другие вещи могут увеличить отображаемый визуальный разрыв, например, использование ключевых слов распределения пространства или добавление полей к элементам.
Поскольку свойства выравнивания блока CSS реализуются по-разному в зависимости от спецификации, с которой они взаимодействуют, обратитесь к следующим страницам для каждого типа макета для получения подробной информации о том, как использовать свойства выравнивания с ним:
Свойства CSS
Глоссарий
align-content — CSS: каскадные таблицы стилей
Свойство CSS align-content
устанавливает распределение пространства между элементами содержимого и вокруг них вдоль поперечной оси гибкого блока или блока сетки ось.
В интерактивном примере ниже используется макет сетки для демонстрации некоторых значений этого свойства.
Это свойство не влияет на однострочные гибкие контейнеры (т. Е. С flex-wrap: nowrap
).
выровнять контент: центр;
выровнять контент: начало;
выровнять контент: конец;
выровнять контент: гибкий старт;
выровнять контент: гибкий конец;
выровнять контент: нормальный;
выровнять контент: базовая линия;
align-content: первая базовая линия;
align-content: последняя базовая линия;
выровнять контент: пробел между;
выровнять контент: пространство вокруг;
выровнять содержимое: равномерно по пространству;
выровнять контент: растянуть;
align-content: безопасный центр;
align-content: небезопасный центр;
выровнять контент: наследовать;
выровнять контент: начальный;
выровнять контент: отключено;
Значения
-
начало
- Предметы уложены заподлицо друг с другом, вплотную к начальному краю выравнивающего контейнера по поперечной оси.
-
конец
- Предметы уложены заподлицо друг с другом, вплотную к торцу выравнивающего контейнера по поперечной оси.
-
гибкий старт
- Элементы упакованы заподлицо друг с другом, вплотную к краю контейнера для выравнивания, в зависимости от поперечной стороны гибкого контейнера.
Это применимо только к элементам гибкого макета. Для элементов, которые не являются дочерними по отношению к гибкому контейнеру, это значение обрабатывается какstart
. -
гибкий конец
- Элементы упакованы заподлицо друг с другом, вплотную к краю контейнера для выравнивания, в зависимости от поперечной стороны гибкого контейнера.
Это применимо только к элементам гибкого макета. Для элементов, которые не являются дочерними по отношению к гибкому контейнеру, это значение обрабатывается какend
. -
центр
- Предметы уложены заподлицо друг с другом в центре выравнивающего контейнера вдоль поперечной оси.
-
нормальный
- Элементы упакованы в их положение по умолчанию, как если бы значение
align-content
не было установлено. -
исходный уровень
первый базовый уровень
последний исходный уровень
- Задает участие в выравнивании первой или последней базовой линии: выравнивает базовую линию выравнивания первого или последнего набора базовых линий блока с соответствующей базовой линией в общем первом или последнем наборе базовых линий всех блоков в его группе совместного использования базовых линий.
Резервное выравнивание дляпервой базовой линии
— этоначало
, дляпоследней базовой линии
—конец
. -
промежуток между
- Элементы равномерно распределены в контейнере для выравнивания вдоль поперечной оси. Расстояние между каждой парой соседних элементов одинаковое. Первый элемент находится заподлицо с начальным краем контейнера выравнивания по поперечной оси, а последний элемент находится заподлицо с конечным краем контейнера выравнивания по поперечной оси.
-
пространство вокруг
- Элементы равномерно распределены в контейнере для выравнивания вдоль поперечной оси. Расстояние между каждой парой соседних элементов одинаковое. Пустое пространство перед первым и после последнего элемента равно половине пространства между каждой парой соседних элементов.
-
равномерно
- Элементы равномерно распределены в контейнере для выравнивания вдоль поперечной оси. Расстояние между каждой парой смежных элементов, начальным краем и первым элементом, а также конечным краем и последним элементом, абсолютно одинаково.
-
растяжка
- Если объединенный размер элементов вдоль поперечной оси меньше, чем размер контейнера выравнивания, любые элементы
auto
-size увеличивают свой размер одинаково (не пропорционально), при этом соблюдая ограничения, налагаемые параметромmax-height.
/max-width
(или эквивалентная функциональность), чтобы комбинированный размер точно заполнял контейнер выравнивания вдоль поперечной оси. -
сейф
- Используется вместе с ключевым словом выравнивания.Если выбранное ключевое слово означает, что элемент переполняет контейнер выравнивания, вызывая потерю данных, элемент вместо этого выравнивается, как если бы режим выравнивания был
начало
. -
небезопасно
- Используется вместе с ключевым словом выравнивания. Независимо от относительных размеров элемента и контейнера выравнивания и того, может ли произойти переполнение, которое вызывает потерю данных, заданное значение выравнивания соблюдается.
CSS
#container {
высота: 200 пикселей;
ширина: 240 пикселей;
выровнять контент: центр;
цвет фона: # 8c8c8c;
}
.flex {
дисплей: гибкий;
flex-wrap: обертка;
}
.сетка {
дисплей: сетка;
столбцы-шаблон-сетки: повтор (автозаполнение, 50 пикселей);
}
div> div {
размер коробки: рамка-рамка;
граница: 2px solid # 8c8c8c;
ширина: 50 пикселей;
дисплей: гибкий;
align-items: center;
justify-content: center;
}
# item1 {
цвет фона: # 8cffa0;
минимальная высота: 30 пикселей;
}
# item2 {
цвет фона: # a0c8ff;
минимальная высота: 50 пикселей;
}
# item3 {
цвет фона: # ffa08c;
минимальная высота: 40 пикселей;
}
# item4 {
цвет фона: # ffff8c;
минимальная высота: 60 пикселей;
}
# item5 {
цвет фона: # ff8cff;
минимальная высота: 70 пикселей;
}
# item6 {
цвет фона: # 8cffff;
минимальная высота: 50 пикселей;
размер шрифта: 30 пикселей;
}
Выбрать {
размер шрифта: 16 пикселей;
}
.строка {
маржа сверху: 10 пикселей;
}
HTML
1
2
3
4
5
6
<выбор>
<выбор>
Результат
Поддержка в макете Flex
Таблицы BCD загружаются только в браузере
Поддержка в макете сетки
Таблицы BCD загружаются только в браузере
CSS Central, Horizontal and Vertical Alignment
CSS имеет несколько свойств, которые можно использовать для выравнивания элементов на веб-страницах.
Выравнивание текста
Текст внутри элементов уровня блока можно выровнять, правильно установив выравнивание текста.
h2 {
выравнивание текста: центр;
}
п {
выравнивание текста: слева;
}
См. Руководство по CSS-тексту, чтобы узнать больше о форматировании текста.
Выравнивание по центру с использованием свойства поля
Выравнивание по центру элемента уровня блока является одним из наиболее важных следствий свойства CSS Правила стиля в приведенном выше примере по центру выравнивают элемент Примечание: Значение CSS Чтобы узнать больше о позиционировании элементов, см. Руководство по позиционированию CSS. CSS-свойство Следовательно, если элемент перемещается влево, содержимое будет перемещаться по его правой стороне. И наоборот, если элемент перемещается вправо, содержимое будет перемещаться по его левой стороне. Одна из самых непонятных вещей при работе с макетами с плавающей запятой — это сворачивающийся родительский элемент.Родительский элемент не растягивается автоматически для размещения плавающих элементов. Хотя это не всегда очевидно, если родительский элемент не содержит визуально заметного фона или границ, но это важно знать и с этим нужно иметь дело, чтобы предотвратить странный макет и проблемы с кроссбраузерностью. См. Иллюстрацию ниже: Вы можете видеть, что элемент Есть несколько способов исправить проблему сворачивания родительского CSS-кода. В следующем разделе описаны эти решения вместе с живыми примерами. Самый простой способ решить эту проблему — поместить родительский элемент в плавающее положение. Предупреждение: Это исправление будет работать только в ограниченном числе обстоятельств, поскольку перемещение родительского объекта может привести к неожиданным результатам. Это старомодный способ, но это простое решение, которое работает во всех браузерах. Вы также можете сделать это с помощью тега Псевдоэлемент Класс Предупреждение: Internet Explorer вверх IE7 не поддерживает псевдоэлемент CSS позволяет нам выровнять содержимое элемента Это очень просто, если вы выполните шаги, описанные ниже. Давайте посмотрим на примере и попробуем обсудить каждую часть кода вместе. Свойство float игнорируется, если элементы позиционируются абсолютно (позиция: абсолютная). Давайте объединим части кода и посмотрим, как он работает! Lorem Ipsum — это просто фиктивный текст, используемый в полиграфической и наборной индустрии. Bottom Content Div В следующем примере содержимое В нашем следующем примере содержимое Давайте посмотрим на другой пример, где содержимое Ниже вы можете увидеть другой пример со свойством CSS align-items.Он определяет выравнивание по умолчанию для гибких элементов. Это похоже на свойство justify-content, но в вертикальной версии. Некоторые браузеры не поддерживают display: flex. Используйте префиксы, перечисленные ниже. Мы должны использовать расширения -Webkit- и -Moz- со свойством align-items, так как оно будет поддерживаться всеми браузерами. Часть текста выравнивается по нижнему краю Рассмотрим еще один пример со свойством position.В нашем первом примере мы используем свойство position с «относительным» значением для тега HTML Свойство z-index влияет только на позиционированные элементы. margin
.Например, контейнер auto
.
div {
ширина: 50%;
маржа: 0 авто;
}
auto
для свойства margin
не будет работать в Internet Explorer 8 и более ранних версиях, если не указан
. Выравнивание элементов с помощью свойства position
позиция
в сочетании со свойством left
, right
, top
и bottom
можно использовать для выравнивания элементов относительно области просмотра документа или содержащих родительский элемент.
.up {
позиция: абсолютная;
верх: 0;
}
.вниз {
позиция: абсолютная;
внизу: 0;
}
Выравнивание по левому и правому краю с использованием свойства float
float
может использоваться для выравнивания элемента слева или справа от содержащего его блока таким образом, чтобы другой контент мог перемещаться вдоль его стороны.
div {
ширина: 200 пикселей;
плыть налево;
}
Сброс поплавков
Исправление свернутого родительского элемента
Решение 1. Плавайте контейнер
.container {
плыть налево;
фон: # f2f2f2;
}
Решение 2. Использование пустого Div
.clearfix {
ясно: оба;
}
/ * фрагмент HTML-кода * /
.Но этот метод не рекомендуется, поскольку он добавляет несемантический код в вашу разметку.
Решение 3. Использование псевдоэлемента: after
: after
в сочетании со свойством content
довольно широко использовался для решения проблем с очисткой флота.
.clearfix: after {
содержание: ".";
дисплей: блок;
высота: 0;
ясно: оба;
видимость: скрыта;
}
.clearfix
применяется к любому контейнеру, имеющему плавающие дочерние элементы.: after
. Однако IE8 поддерживает, но требует объявления
. Как выровнять содержимое элемента Div по нижнему краю
Создать HTML¶
в первый
<тело>
W3docs
Добавить CSS¶
.main {
граница: 1px solid # 4287f5;
высота: 180 пикселей;
ширина: 500 пикселей;
положение: относительное;
}
.column1 {
цвет: # 4287f5;
выравнивание текста: центр;
}
.column2 {
выравнивание текста: центр;
}
#Нижний {
позиция: абсолютная;
внизу: 0;
слева: 0;
}
Пример выравнивания содержимого по левому нижнему краю: ¶
Попробуйте сами »
W3docs
Результат
W3docs
Пример выравнивания содержимого по правому нижнему краю: ¶
Попробуйте сами »
W3docs
Пример выравнивания содержимого по центру снизу: ¶
Попробуйте сами »
W3docs
Пример выравнивания содержимого по низу с помощью Flexbox: ¶
Попробуйте сами »
Заголовок заголовка
Часть текста выравнивается по нижнему краю
дисплей: -webkit-box;
дисплей: -webkit-flex;
дисплей: -ms-flexbox;
дисплей: гибкий;
Пример выравнивания содержимого по нижнему краю с помощью свойства align-items: ¶
Попробуйте сами »
Заголовок
Пример выравнивания содержимого по нижнему краю с «фиксированным» значением свойства position: ¶
Попробуйте сами ».
Это заголовок