Оставшееся пространство распределяется вокруг элементов flexbox / grid. Пустое пространство до первого и после последнего элемента равно половине пространства между каждым элементом.
Блоки распределены вдоль главной оси,
при этом первый элемент прижат к началу оси,
а последний — к концу.
space-around
Блоки распределены вдоль главной оси,
при этом между первым блоком и началом оси,
последним блоком и концом оси такой же промежуток,
как и между остальными блоками.Однако, они не равны, как могло бы показаться:
промежутки суммируются и между двумя блоками
расстояние в два раза больше, чем между блоком и началом/концом оси.
Значение по умолчанию: flex-start.
Пример . Значение flex-start
Сейчас ось направлена слева направо (это
делает
flex-direction: row), а блоки
прижаты к левой стороне:
Блоки распределены вдоль главной оси, при
этом между первым блоком и началом оси, последним
блоком и концом оси такой же промежуток,
как и между остальными блоками. Однако, промежутки
суммируются и между двумя блоками расстояние
в два раза больше, чем между блоком и началом/концом
оси:
свойство flex-direction, которое задает направление осей flex блоков
свойство justify-content, которое задает выравнивание по главной оси
свойство align-items, которое задает выравнивание по поперечной оси
свойство flex-wrap, которое многострочность flex блоков
свойство flex-flow, сокращение для flex-direction и flex-wrap
свойство order, которое задает порядок flex блоков
свойство align-self, которое задает выравнивание одного блока
свойство flex-basis, которое задает размер конкретного flex блока
свойство flex-grow, которое задает жадность flex блоков
свойство flex-shrink, которое задает сжимаемость flex блоков
свойство flex, сокращение для flex-grow, flex-shrink и flex-basis
Flexbox CSS #1 — display | justify-content
В текущем уроке разберем три основных свойства Flexbox CSS — display | justify-content | align-items. При помощи их можно выравнивать flex-элементы по горизонтали и вертикали.
Посмотреть видео — 1# Видео-урок по flexbox CSS
See the Pen #1 Flexbox – display | justify-content | align-items by Denis (@Dwstroy) on CodePen.
Делаем площадку для тестирования свойств Flexbox
Для теории подготовим плацдарм, на котором буду рассматривать поведение flex-элементов. Для этого сделаю отдельную директорию (lesson) и создам в ней index файл.
Блок с классом dws-wrapper, будет служить оберткой всего содержимого. В нем пропишем заголовок с темой урока «#1 Flexbox – display | justify-content | align-items».
Далее нам понадобится, блок, который будет выступать в качестве flex-контейнера, в нутрии его расположим flex-элементы. Используем UL в качестве контейнера, а списки LI в качестве элементов. В нутрии добавлю текст с порядковым номером элемента.
Для более понятной визуализации придам оформление данным элементам.
Создам, и подключим два файла, в первом описываем стандартное оформление элементов, во втором прописываем правила по flexbox и все это расположим в новой директории css.
Когда речь идет о flexbox, вы визуально должны представлять перед собой какой-то контейнер. Что бы это было наглядней, UL представим в виде блока, где зададим для него базовый цвет, уберем маркировку списков и добавим внутренние отступы. Это будет будущей flex-контейнер.
ul {
background: #ccc;
list-style-type: none;
padding: 10px;
}
Затем оформим списки LI в качестве отдельных блоков, они являются дочерними элементами будущего flex-контейнера. Сделаем их фон определенного цвета, увеличим шрифт, которому присвоим белый цвет, и зададим внешние и внутренние отступы каждому элементу. Плюс дополнительно проведу еще некие оформления.
И так, мы получили некий контейнер с вложенными в нем элементами. Элементы ведут себя стандартным образом, занимая всю допустимую ширину родительского контейнера.
Для чего этот весь процесс подробно описал, для того что бы вы понимали, что flexbox может быть любой элемент, будь то UL или отдельно взятый блок, разницы не какой не имеет.
Разбираем три основных свойства FLEXBOX
Свойство display
Первое свойство, с которым познакомимся это display, при помощи которого объявляем flex-контейнер.
<h2><span>display</span> (объявляем flexbox)</h2>
Свойство display применимо только для контейнера, и имеет два значения:
display: flex – делает flex-контейнер блочным элементом который занимает всю ширину экрана.
display: flex;
display: inline-flex – контейнер преобразуется в строчный элемент, который занимает только отведенное пространство.
display: inline-flex;
Мы будем использовать flex, так как собираемся позиционировать элементы в нутрии flex-контейнера.
.flex-cont {
display: flex;
}
Обратите внимание, что когда объявили правило display: flex, все его дочерние элементы стали flex-элементами и приняли горизонтальное положение, выстраивавшиеся в ряд. Такое ранее расположение мы достигали путем float: left к тому же, после последнего элемента нам приходилось сбрасывать обтекание, что бы фон блока не схлопывался.
.flex-elem {
float: left;
}
<div></div>
Теперь это мы делаем все одной записью display: flex, и нет проблем схлопыванием фона у контейнера.
Далее давайте разберем, горизонтальное выравнивание flex-элементов, но прежде немного о flex-контейнере и flex-элементах.
Для каждых из них есть свои определенные свойства, как для flex-контейнера, так и для flex-элементов. Когда задаем свойства для контейнера, тем самым мы задаем какое-то поведение всех его дочерних элементов. В тоже время, когда задаем свойство для элементов, это подразумевается правило для конкретного элемента или для какой-то группы.
В данном уроке мы работаем с контейнером, а соответственно свойство применяется ко всем его дочерним элементам.
Свойство justify-content – (Выравнивание по горизонтали)
Рассмотрим выравнивание flex-элементов по горизонтали, для этого есть свойство justify-content, оно применимо только для контейнера, имеет пять значений.
justify-content: flex-start, значение по умолчанию, все элементы позиционируются в начале контейнера.
justify-content: flex-start;
justify-content: flex-end, элементы позиционирует в конце контейнера.
justify-content: flex-end;
justify-content: center, все элементы позиционирует по середине flex-контейнера.
justify-content: center;
justify-content: space-between, первый и последний элемент позиционируется по краям контейнера, а все остальные элементы равномерно распределяют пространство между собой.
justify-content: space-between;
justify-content: space-around, элементы позиционируются по горизонтали равномерно, распределяя между собой все свободное пространство.
justify-content: space-around;
Свойство align-items — (Выравнивание по вертикали)
Как с горизонтальным выравниванием, есть так же свойство для выравнивания flex-элементов по вертикали.
<h2><span>align-items</span> - Выравнивание по вертикали</h2>
Называется оно align-items, устанавливается только для контейнера и имеет пять значений, но что бы с ним познакомится, давайте любому элементу добавим содержание блока, что бы он растянулся по высоте, и у нас появилось пространство для позиционирования элементов.
<ul>
<li>elem-1</li>
<li>elem-2</li>
<li>elem-3</li>
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut, blanditiis consectetur deserunt dolores eos error et explicabo iste iure labore laboriosam laudantium maxime neque nesciunt quo quos reiciendis suscipit unde!</li>
<li>elem-5</li>
<li>elem-6</li>
</ul>
Что мы видим, другие элементы так же растянулись на всю высоту контейнера.
align-items: stretch, значение по умолчанию, элементы растягиваются на всю высоту flex-контейнера.
align-items: stretch;
align-items: flex-start, элементы позиционируются по верхнему краю контейнера.
align-items: flex-start;
align-items: flex-end, элементы позиционируются по нижнему краю контейнера.
align-items: flex-end;
align-items: center, элементы выравниваются по центру flex-контейнера.
align-items: center;
align-items: baseline, выравнивает элементы по базовой оси. На данный момент мы не увидим разницы от значения flex-start, но если добавить картинку, вы увидите другой результат.
В уроке показал, как выравнивать flex-элементы по горизонтали и вертикали, если понравился материал поделись им в социальных сетях.
Урок подготовил Горелов Денис.
Разница между justify-self, justify-items и justify-content в сетке CSS
Я совсем запуталась. При поиске онлайн-ресурсов и документации большая часть документации этих свойств, похоже, ссылается на Flex-box, а не на grid. И я не знаю, насколько применима документация для эквивалентных свойств в Flex-box к сетке.
Итак, я пробовал ссылаться https://css-tricks.com/snippets/css/complete-guide-grid/, который определяет их следующим образом:
обоснуй-элементы — выравнивает содержимое внутри элемент сетки вдоль оси строк
оправдать-содержание — это свойство выравнивает сетку по оси строки
оправдывать-себя — выравнивает содержимое внутри элемента сетки по оси строки
но я все еще не понимаю, в чем разница между ними. Итак, у меня есть 3 вопроса, которые я хочу уточнить.
— это justify-items свойство в Flex-box такое же, как justify-items собственность в сетке? или они разные почему?
(Другими словами, могу ли я повторно использовать документацию Flex-box для Grid)
что делают (оправдывают-)содержание, себя и элементы?
как (оправдать-)содержание, себя и предметы разные?
любое уточнение было бы весьма признательно.
Edit: поскольку все продолжают давать мне ресурсы Flex-box, я спрашиваю о css-grid, а не flex-box.
4 ответов
1
Как упоминал reiallenramos, » свойства justify-self и justify-items не реализованы в flexbox. Это связано с одномерным характером flexbox и тем, что вдоль оси может быть несколько элементов, что делает невозможным обоснование одного элемента. Для выравнивания элементов вдоль основной встроенной оси в flexbox используется свойство justify-content.» — MDN
2-3
этот снимок экрана из W3 делает отличную работу, показав, что они делают, и различия между ними.
для Больше информации и примера, я предложил бы вас проверить out:
ключевые отличия между justify-content, justify-items и justify-self в сетке CSS:
на justify-content свойство управляет выравниванием столбцов сетки. Он установлен на решетки контейнер. Он не применяется и не управляет выравниванием элементов сетки.
на justify-items свойство управляет выравниванием элементов сетки. Он установлен на решетки контейнер.
на justify-self свойство переопределяет justify-items on отдельные предметы. Он установлен на элементы сетки и наследует значение justify-items по умолчанию.
с justify-content: space-between оба столбца прикреплены к краям. Элементы сетки сдвигаются только потому, что они существуют внутри этих столбцов. Они в остальном-нет.
обратите внимание, что это свойство работает только при наличии свободного места в контейнере. Если бы любой из столбцов был размером с fr, тогда все свободное пространство будет потреблено, и justify-content будет иметь никакого эффекта.
justify-items
на justify-items свойства выравнивает элементы сетки в пределах их треков (не весь контейнер)
эти свойства делают то же самое, что и их justify-* коллеги, но в перпендикулярном направлении.
подробнее здесь: в чем разница между align-items и align-content в макете сетки?
Спец Ссылка
10.3. Выравнивание по оси строк:justify-self и justify-items свойства
элементы сетки может быть выравнивание в встроенном измерении с помощью justify-self свойство элемента сетки или justify-items собственность
на сетке контейнера.
10.4. Выравнивание оси столбца:align-self и align-items свойства
элементы сетки можно также выровнять в размере блока (перпендикулярном
к встроенному измерению) с помощью align-self собственность на
элемент сетки или align-items свойство в сетке контейнер.
10.5. Выравнивание сетки:justify-content и align-content свойства
если сетка внешние края не соответствуют контейнеру сетки
края содержимого (например, если столбцы не имеют размера flex), сетка
дорожки выровнены в поле содержимого в соответствии с justify-content и align-content свойства в сетке
контейнер.
(курсив добавлено)
модуль выравнивания CSS Box
вы писали:
— это justify-items свойство в Flex-box такое же, как justify-items собственность в сетке?
хотя спецификации гибкого трубопровода и решетки обеспечивают их собственные определения для свойств выравнивания ключевого слова, как justify-items и align-content, W3C находится в процессе поэтапного отказа от свойств выравнивания для отдельных моделей коробки и реализация их новых Окно «Выравнивание» Модуль, который стремится определить набор свойств выравнивания для использования во всех моделях коробки.
из спецификации flexbox:
1.2. Модуль
взаимодействия
модуль выравнивания CSS Box расширяет и заменяет определения
свойства выравнивания (justify-content, align-items, align-self, align-content) введена здесь.
в спецификации сетки есть аналогичные ссылки.
10
поделиться
автор: Michael_B
хорошо, я думаю, что понял это благодаря Michael_B. Моя путаница возникла из — за того, что иногда разные свойства случайным образом ничего не меняли в макете сетки.
оправдать-содержание позволяет расположить сетку внутри контейнера сетки. Вот почему свойство justify-content не будет иметь никакого эффекта, если grid-container имеет тот же размер, что и grid. (Что всегда имеет место, если вы используете единицы fr). Это также почему оно может иметь значения: пространство-вокруг, пространство-между и пространство-равномерно (в дополнение к началу, концу, центру и растяжке), что разбивает сетку и помещает элементы сетки в контейнер сетки. Это свойство решетки контейнер.
обоснуй-элементы позволяет установить позицию по умолчанию для содержимого, помещенного в элементы сетки сетки (элемент сетки является полем в сетке, как определено в сообщении Michael_B). Это свойство решетки контейнер.
оправдывать-себя позволяет переопределить положение содержимого по умолчанию в отдельной ячейке. Это переопределит позицию, заданную justify-items. Следовательно, если вы используете justify-self для всех дочерних элементов контейнера, установка justify-items в контейнере сетки не будет иметь никакого эффекта. Это свойство содержимое внутри элемента сетки.
Примечание: Если вы сделаете элемент сетки самой сеткой, (другими словами, содержимое внутри элемент сетки-это сетка), то вы можете разместить его внутри элемента внешней сетки, используя либо свойство justify-self, либо свойство justify-content в контейнере сетки внутренней сетки, поскольку контейнер сетки внутренней сетки является одним из содержимого элементов сетки внешней сетки.
Как и следовало ожидать, все это также относится к свойствам align -*.
пожалуйста, поправьте меня, если я что-то не так
1
поделиться
автор: keithlee96
оправдывать-себя для согласования позиции контента в ячейке горизонтально.
пока align-self для согласования позиции контента в ячейке вертикально.
вот результат для выравнивания элементов с помощью justify-self: start;
РЕЗУЛЬТАТ ДЛЯ КОДА justify-self: start;
0
поделиться
автор: Zaid Ahmad
Свойство CSS justify-content
❮ Предыдущий
Полное руководство по CSS
Далее ❯
Пример
Выровняйте гибкие элементы по центру контейнера:
div
{ дисплей: гибкий; выравнивание-контента: по центру; }
Попробуйте сами »
Другие примеры «Попробуйте сами» ниже.
Определение и использование
Свойство justify-content выравнивает элементы гибкого контейнера, когда элементы не используют все доступное пространство на главной оси (по горизонтали).
Совет: Используйте свойство align-items для выравнивания элементов по вертикали.
Показать демо ❯
Значение по умолчанию:
гибкий старт
Унаследовано:
нет
Анимация:
нет. Читать о анимированном
Версия:
CSS3
Синтаксис JavaScript:
объект .style.justifyContent=»промежуток»
Попытайся
Поддержка браузера
Числа в таблице указывают первую версию браузера, которая полностью поддерживает это свойство.
Числа, за которыми следует -webkit- или -moz-, указывают первую версию, которая работала с префиксом.
Значение по умолчанию. Элементы расположены в начале контейнера
Демонстрация ❯
гибкий конец
Предметы располагаются в конце контейнера
Демонстрация ❯
центр
Предметы расположены в центре контейнера
Демонстрация ❯
пробел между
Элементы будут иметь пробел между ними
Демонстрация ❯
пространство вокруг
Элементы будут иметь пробел до, между и после них
Демонстрация ❯
равномерно
Предметы будут иметь одинаковое пространство вокруг них
Демонстрация ❯
начальный
Устанавливает для этого свойства значение по умолчанию. Читать про начальный
наследовать
Наследует это свойство от родительского элемента. Читать о унаследовать
Дополнительные примеры
Пример
Выровняйте гибкие элементы по началу контейнера (по умолчанию):
div
{ дисплей: гибкий; выравнивание-контента: flex-start; }
Попробуйте сами »
Пример
Выровняйте гибкие элементы в конце контейнера:
div
{ дисплей: гибкий; выравнивание-контента: flex-end; }
Попробуйте сами »
Пример
Отображение гибких элементов с пробелом между строками:
div
{ дисплей: гибкий; выравнивание содержимого: пробел; }
Попробуйте сами »
Пример
Отображение гибких элементов с пробелами до, между и после строк:
div
{ дисплей: гибкий; выравнивание содержимого: пространство вокруг; }
Попробуйте сами »
Связанные страницы
Справочник CSS: свойство align-content
Справочник CSS: свойство align-items
Справочник CSS: свойство align-self
Ссылка HTML DOM: свойство justifyContent
❮ Назад
Полное руководство по CSS
Далее ❯
НОВИНКА
Мы только что запустили Видео W3Schools
Узнать
ВЫБОР ЦВЕТА
КОД ИГРЫ
Играть в игру
Лучшие учебники
Учебник HTML Учебник CSS Учебник JavaScript How To Tutorial Учебник SQL Учебник Python Учебник W3. CSS Учебник Bootstrap Учебник PHP Учебник Java Учебник C++ Учебник jQuery
900
Справочник по HTML Справочник по CSS Справочник по JavaScript Справочник по SQL Справочник по Python Справочник по W3.CSS Справочник по Bootstrap Справочник по PHP Цвета HTML Справочник по Java Справочник по Angular Справочник по jQuery
W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения.
Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования,
куки-файлы и политика конфиденциальности.
Copyright 1999-2022 Refsnes Data. Все права защищены. W3Schools работает на основе W3.CSS.
УСС | Свойство text-justify — GeeksforGeeks
Просмотреть обсуждение
Улучшить статью
Сохранить статью
Последнее обновление:
04 авг, 2022
Читать
Обсудить
Посмотреть обсуждение
Улучшить статью
Сохранить статью
Свойство text-justify в CSS используется для установки выравнивания текста по ширине. Он распространяет слова в полную строку.
Быстро управляйте макетом, выравниванием и размером столбцов сетки, навигацией, компонентами и многим другим с помощью полного набора гибких утилит flexbox. Для более сложных реализаций может потребоваться пользовательский CSS.
Включить гибкое поведение
Применить утилиты display для создания контейнера flexbox и преобразования прямых дочерних элементов во flex-элементы. Flex-контейнеры и элементы могут быть изменены с помощью дополнительных flex-свойств.
Я флексбокс-контейнер!
Я контейнер flexbox!
Я встроенный контейнер flexbox!
Я встроенный контейнер flexbox!
Адаптивные варианты также существуют для .d-flex и .d-inline-flex .
. d-flex
.d-inline-flex
.d-sm-flex
.d-sm-inline-flex
.d-md-flex
.d-md-inline-flex
.d-lg-flex
.d-lg-inline-flex
.d-xl-flex
.d-xl-inline-flex
Направление
Установите направление flex-элементов в flex-контейнере с помощью утилит направления. В большинстве случаев вы можете опустить здесь горизонтальный класс, так как по умолчанию в браузере используется строка . Однако вы можете столкнуться с ситуациями, когда вам нужно явно установить это значение (например, адаптивные макеты).
Используйте .flex-row , чтобы установить горизонтальное направление (браузер по умолчанию), или .flex-row-reverse , чтобы начать горизонтальное направление с противоположной стороны.
Flex item 1
Flex item 2
Flex item 3
Flex item 1
Flex item 2
Flex item 3
<дел>
Элемент Flex 1
Элемент Flex 2
Элемент Flex 3
<дел>
Элемент Flex 1
Элемент Flex 2
Элемент Flex 3
дел>
Используйте .flex-column для установки вертикального направления или .flex-column-reverse , чтобы начать вертикальное направление с противоположной стороны.
Flex item 1
Flex item 2
Flex item 3
Flex item 1
Flex item 2
Flex item 3
<дел>
Элемент Flex 1
Элемент Flex 2
Элемент Flex 3
<дел>
Элемент Flex 1
Элемент Flex 2
Элемент Flex 3
дел>
Адаптивные варианты также существуют для flex-direction .
. flex-ряд
.flex-ряд-реверс
.flex-столбец
.flex-столбец-обратный
.flex-см-строка
.flex-sm-row-reverse
.flex-sm-столбец
.flex-sm-column-reverse
.flex-MD-строка
.flex-md-row-reverse
.flex-MD-столбец
.flex-md-column-reverse
.flex-lg-строка
.flex-lg-ряд-реверс
.flex-lg-столбец
.flex-lg-колонка-реверс
.flex-xl-ряд
.flex-xl-строка-реверс
.flex-xl-столбец
.flex-xl-столбец-реверс
Содержимое по ширине
Используйте утилиты justify-content в контейнерах flexbox для изменения выравнивания flex-элементов по главной оси (ось x для начала, ось y, если flex-direction: column ). Выберите из start (браузер по умолчанию), end , center , между или вокруг .
Адаптивные варианты также существуют для justify-content .
.justify-content-start
.justify-content-end
.justify-content-center
.выравнивание содержимого между
.justify-content-around
.justify-content-sm-start
.justify-content-sm-end
.justify-content-sm-центр
. justify-content-sm-между
.justify-content-sm-round
.justify-content-md-start
.justify-content-md-end
.justify-content-md-центр
.justify-content-md-между
.justify-content-md- вокруг
.justify-content-lg-start
.justify-content-lg-end
.justify-content-lg-центр
.justify-content-lg-между
.justify-content-lg-around
.justify-content-xl-start
.justify-content-xl-end
.justify-content-xl-центр
.justify-content-xl-между
.justify-content-xl-вокруг
Выравнивание элементов
Используйте утилиты align-items в контейнерах flexbox для изменения выравнивания flex-элементов по поперечной оси (ось Y для начала, ось X, если flex-direction: столбец ). Выберите из start , end , center , baseline или stretch (браузер по умолчанию).
Адаптивные варианты также существуют для align-items .
.align-items-start
.align-items-end
.align-items-center
.align-items-baseline
.align-items-stretch
.align-items-sm-start
.align-items-sm-end
.align-items-sm-center
.align-items-sm-baseline
. align-items-sm-stretch
.align-items-md-start
.align-items-md-end
.align-items-md-center
.align-items-md-baseline
.align-items-md-stretch
.align-items-lg-start
.align-items-lg-end
.align-items-lg-center
.align-items-lg-базовый уровень
.align-items-lg-stretch
.align-items-xl-start
.align-items-xl-end
.align-items-xl-center
.align-items-xl-базовый уровень
.align-items-xl-stretch
Самовыравнивание
Используйте утилиты align-self для элементов flexbox для индивидуального изменения их выравнивания по поперечной оси (ось Y для начала, ось X, если flex-direction: column ). Выберите один из тех же параметров, что и align-items : start , end , center , baseline или stretch (браузер по умолчанию).
Flex-элемент
Выровненный гибкий элемент
Flex-элемент
Flex Item
Выравнившийся сгибаемый элемент
Flex Item
Elex Item
Выровненное изгиб
Elect Item
Elect Item
Выравнированный изгиб
Elemp Гибкий элемент
Выровненный гибкий элемент
Выровненный гибкий элемент
Выровненный гибкий элемент
Выровненный гибкий элемент
Выровненный гибкий элемент
Также существуют адаптивные варианты для align-self .
.align-self-start
.align-self-end
.align-self-center
.align-self-базовый уровень
. align-self-stretch
.align-self-sm-start
.align-self-sm-end
.align-self-sm-центр
.align-self-sm-базовая линия
.align-self-sm-stretch
.align-self-md-start
.align-self-md-end
.align-self-md-центр
.align-self-md-базовый уровень
.align-self-md-stretch
.align-self-lg-start
.align-self-lg-end
.align-self-lg-центр
.align-self-lg-базовый уровень
.align-self-lg-stretch
.align-self-xl-start
.align-self-xl-end
.align-self-xl-центр
.align-self-xl-базовый уровень
. align-self-xl-stretch
Автоматические поля
Flexbox может делать довольно удивительные вещи, когда вы смешиваете гибкие выравнивания с автоматическими полями. Ниже показаны три примера управления гибкими элементами с помощью автоматических полей: по умолчанию (без автоматического поля), перемещение двух элементов вправо ( .mr-auto ) и сдвинуть два элемента влево ( .ml-auto ).
К сожалению, IE10 и IE11 не поддерживают должным образом автоматические поля для flex-элементов, родительский элемент которых имеет нестандартное значение justify-content . Дополнительные сведения см. в этом ответе StackOverflow.
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<дел>
Элемент Flex
Элемент Flex
Элемент Flex
<дел>
Элемент Flex
Элемент Flex
Элемент Flex
<дел>
Элемент Flex
Элемент Flex
Элемент Flex
дел>
С элементами выравнивания
Вертикальное перемещение одного гибкого элемента в верхнюю или нижнюю часть контейнера путем смешивания align-items , flex-direction: column и margin-top: auto или margin-bottom: auto .
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<дел>
Элемент Flex
Элемент Flex
Элемент Flex
<дел>
Элемент Flex
Элемент Flex
Элемент Flex
дел>
Обертка
Измените способ упаковки flex-элементов в flex-контейнере. Выберите полное отсутствие переноса (по умолчанию в браузере) с .flex-nowrap , перенос с .flex-wrap или обратный перенос с .flex-wrap-reverse .
Flex item
Flex item
Flex item
Flex item
Flex item
<дел>
...
Flex-элемент
Flex-элемент
Flex-элемент
Flex Item
Flex Item
Elex Item
Elect Item
Elex Item
Исключенная статья
Искусство
Элемент изгиб
Элемент
Электростанции
Искусство
Исправление
<дел>
. ..
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<дел>
...
Адаптивные варианты также существуют для flex-wrap .
.flex-nowrap
.flex-wrap
.flex-wrap-reverse
.flex-sm-nowrap
.flex-sm-wrap
.flex-sm-wrap-reverse
.flex-md-nowrap
.flex-md-wrap
.flex-md-wrap-reverse
.flex-lg-nowrap
.flex-lg-wrap
.flex-lg-wrap-reverse
. flex-xl-nowrap
.flex-XL-Wrap
.flex-xl-wrap-reverse
Заказ
Измените визуальный порядок определенных гибких элементов с помощью нескольких утилит порядка . Мы предоставляем только варианты для создания элемента первым или последним, а также сброс для использования порядка DOM. Поскольку порядок принимает любое целочисленное значение (например, 5 ), добавьте пользовательский CSS для любых необходимых дополнительных значений.
Первый гибкий элемент
Второй гибкий элемент
Третий гибкий элемент
<дел>
Первый гибкий элемент
Второй гибкий элемент
Третий гибкий элемент
дел>
Соответствующие варианты также существуют для заказа .
.заказ-0
.заказ-1
.заказ-2
. заказ-3
.заказ-4
.заказ-5
.заказ-6
.заказ-7
.заказ-8
.заказ-9
.заказ-10
.заказ-11
.заказ-12
.заказ-см-0
.заказ-см-1
.заказ-см-2
.заказ-см-3
.заказ-см-4
.заказ-см-5
.заказ-см-6
.заказ-см-7
.заказ-см-8
.заказ-см-9
.заказ-см-10
.заказ-см-11
.заказ-см-12
.order-md-0
.order-md-1
. order-md-2
.order-md-3
.order-md-4
.order-md-5
.order-md-6
.order-md-7
.order-md-8
.order-md-9
.order-md-10
.order-md-11
.order-md-12
.order-lg-0
.заказ-lg-1
.заказ-lg-2
.заказ-lg-3
.заказ-lg-4
.заказ-lg-5
.заказ-lg-6
.заказ-lg-7
.заказ-lg-8
.заказ-lg-9
.заказ-lg-10
.заказ-lg-11
.заказ-lg-12
.заказ-xl-0
. заказ-xl-1
.заказ-xl-2
.заказ-xl-3
.заказ-xl-4
.заказ-xl-5
.заказ-xl-6
.заказ-xl-7
.заказ-xl-8
.заказ-xl-9
.заказ-xl-10
.заказ-xl-11
.заказ-xl-12
Выровнять содержимое
Используйте утилиты align-content в контейнерах flexbox для выравнивания flex-элементов вместе по поперечной оси. Выберите из начало (браузер по умолчанию), конец , центр , между , вокруг или с растяжкой . Чтобы продемонстрировать эти утилиты, мы усилили flex-wrap: wrap и увеличили количество flex-элементов.
Внимание! Это свойство не влияет на отдельные строки гибких элементов.
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
0002 Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<дел>
...
Изгиб Item
Изгиб Элемент
Электростанция сгибания
Исключение
Изгиб Элемент
Исключение
Элемент изгиб
Элемент
Элемент
Элемент
. Flex item
Flex item
Flex item
Гибкий элемент
...
Изгиб Элемент
Исключенное изделия
Изгиб Элемент
Искусство
Исключение
Элемент изгиб
Элемент
Элемент
Элемент
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
. ..
Flex-элемент
Flex-элемент
Flex-элемент
Изгиб Item
Flex Item
Elex Item
Elect Item
Elex Item
Исключенная статья
Элемент сгибания
Elegle Item
Elect
Elemp
...
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
2 Flex-элемент0003
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
Flex-элемент
...
Изгиб Элемент
Исключенная статья
Исключение
Исключение
Элемент сгиба элемент
гибкий элемент
гибкий элемент
гибкий элемент
Гибкий элемент
Гибкий элемент
...
Адаптивные варианты также существуют для align-content .
.align-content-start
.align-content-end
.align-content-center
.align-content-around
.align-content-stretch
.align-content-sm-start
.align-content-sm-end
.align-content-sm-центр
.align-content-sm-around
.align-content-sm-stretch
.align-content-md-start
.align-content-md-end
.align-content-md-центр
.align-content-md-around
.align-content-md-stretch
.align-content-lg-start
.align-content-lg-end
.align-content-lg-center
.align-content-lg-around
. align-content-lg-stretch
.align-content-xl-start
.align-content-xl-end
.align-content-xl-центр
.align-content-xl- вокруг
.align-content-xl-stretch
Как выровнять элементы в CSS — Smashing Magazine
16 минут чтения
CSS,
Браузеры,
Руководства
Поделиться в Twitter, LinkedIn
Об авторе
Рэйчел Эндрю — веб-разработчик, писатель и спикер. Она является автором ряда книг, в том числе The New CSS Layout. Она одна из тех, кто стоит за…
Больше о
Рэйчел ↬
Существует несколько способов выравнивания элементов в CSS. В этой статье Рэйчел Эндрю объясняет, что они собой представляют, и дает несколько советов, которые помогут вам запомнить, какие из них использовать и почему.
Сегодня у нас есть целый набор способов выравнивания в CSS, и не всегда очевидно, какой из них использовать. Однако знание того, что доступно, означает, что вы всегда можете попробовать несколько тактик, если столкнетесь с определенной проблемой выравнивания.
В этой статье я рассмотрю различные методы выравнивания. Вместо того, чтобы давать подробное руководство по каждому из них, я объясню несколько точек преткновения, с которыми сталкиваются люди, и укажу на более полные ссылки на свойства и значения. Как и в случае с большей частью CSS, вы можете пройти долгий путь с помощью понимание фундаментальных вещей о том, как ведут себя методы, а затем вам нужно найти место, где можно найти более мелкие детали с точки зрения того, как вы достигаете точного макета, который вы хотите.
Выравнивание текста и встроенных элементов
Когда на странице есть текст и другие встроенные элементы, каждая строка содержимого рассматривается как строка. Свойство text-align будет выравнивать этот контент на странице, например, если вы хотите, чтобы ваш текст был по центру или по ширине. Однако иногда вы можете захотеть выровнять элементы внутри этой строки по отношению к другим элементам, например, если у вас есть значок, отображаемый рядом с текстом, или текст разных размеров.
Еще после прыжка! Продолжить чтение ниже ↓
В приведенном ниже примере у меня есть текст с увеличенным встроенным изображением. Я использую vertical-align: middle на изображении, чтобы выровнять текст по середине изображения.
См. пример вертикального выравнивания пера от Рэйчел Эндрю.
См. пример вертикального выравнивания пера от Рэйчел Эндрю. line-height Свойство и выравнивание
Помните, что свойство line-height изменит размер строки и, следовательно, может изменить ваше выравнивание. В следующем примере используется большое значение высоты строки 150 пикселей, и я выровнял изображение до 9. 0022 топ
. Изображение выравнивается по верхней части строки, а не по верхней части текста, удалите эту высоту строки или сделайте ее меньше размера изображения, и изображение и текст будут выровнены поверх текста.
См. Вертикальное выравнивание пера и высоту строки Рэйчел Эндрю.
См. Вертикальное выравнивание пера и высоту строки Рэйчел Эндрю.
Оказывается, line-height и вообще размер текста довольно сложны, и в этой статье я не собираюсь копаться в этой кроличьей норе. Если вы пытаетесь точно выровнять встроенные элементы и хотите действительно понять, что происходит, я рекомендую прочитать «Глубокое погружение в CSS: метрики шрифтов, высота строки И вертикальное выравнивание ».
Когда можно использовать свойство
вертикального выравнивания ?
Свойство vertical-align полезно, если вы выравниваете любой встроенный элемент. Сюда входят элементы с display: inline-block . Содержимое ячеек таблицы также можно выровнять с помощью свойства вертикального выравнивания .
Свойство vertical-align не влияет на flex-элементы или элементы сетки, и поэтому, если оно используется как часть резервной стратегии, перестанет применяться, как только родительский элемент будет преобразован в grid или flex-контейнер. Например, в следующей ручке у меня есть набор предметов, выложенных с помощью display: inline-block и это означает, что я получаю возможность выравнивать элементы, даже если в браузере нет Flexbox:
См. Pen inline-block and vertical-align Рэйчел Эндрю.
См. «Встроенный блок пера и вертикальное выравнивание» Рэйчел Эндрю.
В следующем ручке я рассматривал встроенный блок как запасной вариант для макета Flex. Свойства выравнивания больше не применяются, и я могу добавить align-items для выравнивания элементов во Flexbox. Вы можете сказать, что метод Flexbox работает, потому что разрыв между элементами, который вы получите при использовании 9Отображение 0022: встроенный блок пропал.
См. запасной вариант гибкости встроенного блока пера от Рэйчел Эндрю.
См. запасной вариант гибкости встроенного блока пера от Рэйчел Эндрю.
Тот факт, что вертикальное выравнивание работает с ячейками таблицы, является причиной того, что прием вертикального центрирования элемента с использованием display: table-cell работает.
Теперь, когда у нас есть лучшие способы выравнивания блоков в CSS (как мы рассмотрим в следующем разделе), нам не нужно использовать вертикальное выравнивание и свойства text-align в местах, отличных от встроенных и текстовых элементов, для которых они были разработаны. Тем не менее, они по-прежнему полностью допустимы для использования в этих текстовых и встроенных форматах, поэтому помните, что если вы пытаетесь выровнять что-то встроенное, вам нужно использовать именно эти свойства, а не свойства Box Alignment.
Выравнивание блоков
Спецификация выравнивания блоков касается того, как мы выравниваем все остальное. В спецификации подробно описаны следующие свойства выравнивания:
justify-content
align-content
justify-self
align-self
justify-items
align-items
You might already think этих свойств как части спецификации Flexbox или, возможно, Grid. История свойств такова, что они возникли как часть Flexbox и до сих пор существуют в спецификации уровня 1; однако они были перемещены в собственную спецификацию, когда стало очевидно, что они более полезны в целом. Теперь мы также используем их в Grid Layout, и они указаны и для других методов макета, хотя текущая поддержка браузера означает, что вы пока не сможете их использовать.
Поэтому, когда в следующий раз кто-то в Интернете скажет вам, что вертикальное выравнивание — самая сложная часть CSS, вы можете сказать ему это (что даже подходит для твита):
.container {
дисплей: гибкий;
выравнивание элементов: по центру;
выравнивание содержимого: по центру;
}
В будущем мы, возможно, даже сможем обойтись без display: flex , как только свойства Box Alignment будут реализованы для Block Layout. На данный момент, однако, сделать родительский объект, который вы хотите центрировать, гибким контейнером — это способ получить выравнивание по горизонтали и вертикали.
Два типа выравнивания
При выравнивании гибких и сеточных элементов у вас есть две возможности выравнивания:
У вас есть свободное место в сетке или гибком контейнере (после размещения элементов или дорожек).
У вас также есть сам элемент внутри области сетки, в которую вы его поместили, или на поперечной оси внутри гибкого контейнера.
Я показал вам набор свойств выше, и свойства выравнивания можно рассматривать как две группы. Те, которые связаны с распределением свободного места, и те, которые выравнивают сам элемент.
Работа с резервным пространством:
align-content And justify-content
Свойства, оканчивающиеся на -content , относятся к распределению пространства, поэтому, когда вы решите использовать align-content или justify-content вы распределяете доступное пространство между дорожками сетки или гибкими элементами. Они не меняют размер самих элементов гибкости или сетки; они перемещают их, потому что они меняют местонахождение свободного места.
Ниже у меня есть пример гибкости и пример сетки. У обоих есть контейнер, который больше, чем требуется для отображения гибких элементов или дорожек сетки, поэтому я могу использовать align-content и justify-content для распределения этого пространства.
См. раздел Pen justify-content и align-content от Рэйчел Эндрю.
См. статью Рэйчел Эндрю об выравнивании содержимого и выравнивании содержимого пером.
Перемещение элементов вокруг:
justify-self , align-self , justify-items И align-items
Затем у нас есть align-self и align-self и justify3-self элементы сетки; вы также можете использовать align-items и justify-items в контейнере, чтобы сразу установить все свойства. Эти свойства относятся к фактическому гибкому элементу или элементу сетки, то есть к перемещению содержимого внутри области сетки или гибкой линии.
Макет сетки Вы получаете оба свойства, поскольку вы можете смещать элемент на блочной и встроенной оси, поскольку у нас есть определенная область сетки, в которой он находится.
Flex Layout Выравнивание возможно только по поперечной оси, поскольку главная ось управляется только распределением пространства. Итак, если ваши элементы представляют собой строку, вы можете использовать align-self , чтобы переместить их вверх и вниз внутри линии изгиба, выравнивая их относительно друг друга.
В приведенном ниже примере у меня есть контейнер flex и grid, и я использую align-items и align-self во Flexbox для перемещения элементов вверх и вниз относительно друг друга по поперечной оси. Если вы используете Firefox и проверяете элемент с помощью Firefox Flexbox Inspector, вы можете увидеть размер гибкого контейнера и то, как элементы внутри него перемещаются по вертикали.
Выровненные flex-элементы с flex-контейнером, выделенным в Firefox (большой предварительный просмотр)
В сетке я могу использовать все четыре свойства для перемещения элементов внутри их области сетки. Еще раз, Firefox DevTools Grid Inspector будет полезен при игре с выравниванием. С наложенными линиями сетки вы можете увидеть область, внутри которой перемещается содержимое:
Выровненные элементы сетки с выделенной сеткой в Firefox (большой предварительный просмотр)
Поэкспериментируйте со значениями в демонстрации CodePen, чтобы увидеть, как вы можете перемещать содержимое вокруг в каждом методе компоновки:
См. Pen justify-self, align-self, justify-items, align-items Рэйчел Эндрю.
См. статью Рэйчел Эндрю о выравнивании пера, выравнивании, выравнивании элементов, выравнивании элементов.
Confused By
align And justify
Одна из упомянутых проблем с людьми, помнящими свойства выравнивания в Grid и Flexbox, заключается в том, что никто не может вспомнить, следует ли выравнивать или выравнивать. Какое направление какое?
Для макета сетки вам необходимо знать, выравниваете ли вы в блочном или встроенном направлении. Направление блока — это направление блоков, расположенных на вашей странице (в вашем режиме письма), то есть для английского языка вертикально. Направление Inline — это направление, в котором идут предложения (например, для английского языка слева направо по горизонтали).
Чтобы выровнять элементы в направлении блока, вы будете использовать свойства, начинающиеся с align- . Вы используете align-content для распределения пространства между дорожками сетки, если в контейнере сетки есть свободное место, и align-items или align-self для перемещения элемента внутри области сетки, в которую он был помещен.
Пример ниже имеет два макета сетки. Один имеет режим письма : horizontal-tb (по умолчанию для английского языка), а другой режим письма: вертикальный-rl . Это единственная разница между ними. Вы можете видеть, что свойства выравнивания, которые я применил, работают одинаково на оси блока в обоих режимах.
См. «Выравнивание осей блока Pen Grid», Рэйчел Эндрю.
См. Выравнивание осей блока Pen Grid, Рэйчел Эндрю.
Чтобы выровнять элементы в линейном направлении, используйте свойства, начинающиеся с , justify-. Используйте justify-content для распределения пространства между дорожками сетки и justify-items или justify-self для выравнивания элементов внутри их области сетки в линейном направлении.
Еще раз, у меня есть два примера компоновки сетки, чтобы вы могли видеть, что встроенный текст всегда является встроенным — независимо от того, какой режим письма вы используете.
См. Выравнивание по сетке пера Рэйчел Эндрю.
См. Выравнивание по сетке пера Рэйчел Эндрю.
Flexbox немного сложнее из-за того, что у нас есть главная ось, которую можно изменить на ряд или столбец . Итак, давайте сначала подумаем об этой главной оси. Он задается свойством flex-direction . Начальное значение (или значение по умолчанию) этого свойства — row , которое будет размещать flex-элементы в виде строки в используемом в настоящее время режиме записи — вот почему при работе на английском языке мы получаем элементы, расположенные горизонтально, когда мы создать гибкий контейнер. Затем вы можете изменить основную ось на flex-direction: столбец , и элементы будут расположены в виде столбца, что означает, что они расположены в направлении блока для этого режима записи.
Поскольку мы можем переключать оси, самым важным фактором во Flexbox является вопрос: «Какая ось является моей главной осью?» Как только вы это узнаете, то для выравнивания (на главной оси) вы просто используете justify-content . Неважно, является ли ваша главная ось строкой или столбцом. Вы управляете пространством между гибкими элементами с justify-content .
См. Pen justfy-content в Flexbox Рэйчел Эндрю.
См. Pen justfy-content в Flexbox Рэйчел Эндрю.
На поперечной оси вы можете использовать align-items , которые будут выравнивать элементы внутри flex-контейнера или flex-линии в многострочном flex-контейнере. Если у вас есть многострочный контейнер, использующий flex-wrap: wrap и имеют место в этом контейнере, вы можете использовать align-content для распределения пространства по поперечной оси.
В приведенном ниже примере мы делаем и с flex-контейнером, отображаемым в виде строки и столбца:
См. выравнивание оси Pen Cross во Flexbox от Рэйчел Эндрю.
См. выравнивание оси Pen Cross во Flexbox от Рэйчел Эндрю.
Когда
justify-content Или align-content Не работают
Свойства justify-content и align-content в Grid и Flexbox примерно равны распределению дополнительного пространства . Итак, нужно проверить, есть ли у вас дополнительное место.
Вот пример Flex: я установил flex-direction: row и у меня есть три элемента. Они не занимают все место во флекс-контейнере, поэтому у меня есть свободное место на главной оси, начальное значение для justify-content — это flex-start , поэтому все мои элементы выстраиваются в линию в начале, а дополнительное пространство — в конце. Я использую Firefox Flex Inspector, чтобы выделить пространство.
Свободное пространство в конце контейнера (Большой предварительный просмотр)
Если я изменю flex-direction на space-between , это дополнительное пространство теперь распределяется между элементами:
Свободное пространство теперь находится между элементами (Большой предварительный просмотр )
Если теперь я добавлю больше контента к своим элементам, чтобы они стали больше и больше не было дополнительного места, то justify-content ничего не делает — просто потому что нет места для раздачи.
Теперь нет места для распространения (Большой предварительный просмотр)
Мне часто задают вопрос, почему justify-content не работает, когда flex-direction — это столбец . Обычно это происходит потому, что нет места для распространения. Если вы возьмете приведенный выше пример и сделаете его flex-direction: column , элементы будут отображаться в виде столбца, но под элементами не будет дополнительного пространства, как если бы вы сделали flex-direction: строка . Это связано с тем, что когда вы создаете Flex-контейнер с display: flex , у вас есть гибкий контейнер блочного уровня; это займет все возможное пространство в линейном направлении. В CSS элементы не растягиваются в направлении блока, поэтому нет лишнего пространства.
Столбец имеет только ту высоту, которая необходима для отображения элементов (большой предварительный просмотр)
Добавьте высоту в контейнер и — если это больше, чем требуется для отображения элементов — у вас есть дополнительное пространство и, следовательно, justify-content будет работать с вашей колонкой.
Добавление высоты к контейнеру означает, что у нас есть свободное место (Большой предварительный просмотр)
Почему нет
justify-self Во Flexbox?
Grid Layout реализует все свойства для обеих осей, поскольку в Grid Layout мы всегда имеем дело с двумя осями. Мы создаем дорожки (которые могут оставлять дополнительное пространство в контейнере сетки в любом измерении), поэтому мы можем распределить это пространство с помощью align-content или justify-content 9.0023 . У нас также есть Grid Areas, и элемент в этой области может не занимать все пространство области, поэтому мы можем использовать align-self или justify-self для перемещения содержимого по области (или align-self ). items , justify-items для изменения выравнивания всех элементов).
Flexbox не имеет дорожек, как в макете Grid. На главной оси все, с чем нам нужно поиграть, — это распределение пространства между элементами. Не существует понятия дорожки, в которую помещается гибкий элемент. Таким образом, не создается области, в которой можно перемещать предмет. Вот почему нет свойство justify-self на главных осях во Flexbox.
Иногда, однако, вы хотите иметь возможность выровнять один элемент или часть группы элементов другим способом. Распространенным шаблоном будет разделенная панель навигации с одним элементом, отделенным от группы. В этой ситуации спецификация рекомендует использовать автоматические поля.
Автоматическое поле будет занимать все пространство в том направлении, в котором оно применяется, поэтому мы можем центрировать блок (такой как наш макет главной страницы), используя левое и правое поля авто. С автоматическим полем с обеих сторон каждое поле пытается занять все пространство и, таким образом, толкает блок в середину. С нашим рядом гибких элементов мы можем добавить margin-left: auto к элементу, на котором мы хотим, чтобы произошло разделение, и пока во гибком контейнере есть свободное место, вы получаете разделение. Это хорошо работает с Flexbox, потому что, как только нет свободного места, элементы ведут себя как обычные flex-элементы.
См. «Выравнивание пера с автоматическими полями» Рэйчел Эндрю.
См. «Выравнивание пера с автоматическими полями» Рэйчел Эндрю.
Flexbox And Micro-Components
Одна из вещей, которую, как мне кажется, часто упускают из виду, это то, насколько полезен Flexbox для выполнения крошечных заданий по макету, где вы можете подумать, что использование вертикальное выравнивание — это то, что вам нужно. Я часто использую Flexbox для аккуратного выравнивания небольших шаблонов; например, выравнивание значка рядом с текстом, выравнивание двух элементов по базовой линии с разными размерами шрифта или правильное выравнивание полей формы и кнопок. Если вы изо всех сил пытаетесь заставить что-то хорошо выровняться с vertical-align , то, возможно, попробуйте выполнить эту работу с помощью Flexbox. Помните, что вы также можете создать встроенный гибкий контейнер, если хотите, с дисплеем : inline-flex .
См. пример встроенного гибкого пера от Рэйчел Эндрю.
См. пример встроенного гибкого пера от Рэйчел Эндрю.
Нет никаких причин не использовать Flexbox или даже Grid для небольших заданий макета. Они предназначены не только для больших кусков макета. Попробуйте разные доступные вам вещи и посмотрите, что работает лучше всего.
Люди часто очень хотят знать, как правильно или неправильно поступать. В действительности часто нет правильного или неправильного; небольшая разница в вашем шаблоне может означать разницу между Flexbox, работающим лучше всего, где в противном случае вы использовали бы вертикальное выравнивание .
Подведение итогов
В завершение у меня есть краткий обзор основ выравнивания. Если вы помните эти несколько правил, вы должны быть в состоянии выровнять большинство вещей с помощью CSS:
Вы выравниваете текст или встроенный элемент? Если это так, вам нужно использовать text-align , vertical-align и line-height .
У вас есть элемент или элементы, которые вы хотите выровнять по центру страницы или контейнера? Если это так, сделайте контейнер гибким, затем установите align-items: center и justify-content: center .
Для макетов сетки свойства, начинающиеся с align- , работают в направлении блока; те, которые начинаются с , оправдывают , работают во встроенном направлении.
Для макетов Flex свойства, начинающиеся с align- , работают на поперечной оси; те которые начинаются с оправдывают- работают на главной оси.
justify-content и align-content свойства распределяют дополнительное пространство. Если у вас нет лишнего места в контейнере flex или grid, они ничего не сделают.
Если вы считаете, что вам нужно justify-self во Flexbox, то использование автоматического поля, вероятно, даст вам шаблон, который вам нужен.
Вы можете использовать Grid и Flexbox вместе со свойствами выравнивания для небольших заданий макета, а также для основных компонентов — экспериментируйте!
Дополнительные сведения о выравнивании см. в следующих ресурсах:
CSS Box Alignment (веб-документы MDN)
Все, что вам нужно знать о выравнивании во Flexbox
Box Alignment Cheatsheet
CSS justify-content
Пример <стиль> .внешний контейнер {
высота: 200 пикселей;
шрифт: 100 24px/100px без засечек;
выравнивание текста: по центру;
белый цвет;
граница: 1px сплошная #ccc;
дисплей: гибкий;
выравнивание содержимого: пространство вокруг;
}
.внешний контейнер div {
ширина: 20%;
}
.красный {
фон: оранжево-красный;
}
.зеленый {
фон: желто-зеленый;
}
.синий {
фон: стальной синий;
} стиль> <дел> <дел>1дел> <дел>2дел> <дел>3дел> дел>
Свойство CSS justify-content управляет выравниванием содержимого блока вдоль оси main/inline внутри его блока содержимого.
Свойство justify-content выравнивает flex-элементы по главной оси текущей строки flex-контейнера. Он определяет, как пространство распределяется между гибкими элементами и вокруг них.
Выравнивание выполнено после того, как были разрешены любые гибкие длины и все автоматические поля. Следовательно, flex-grow должно быть 0 , иначе свойство justify-content не будет иметь никакого эффекта.
Хотя свойство justify-content было создано для гибких контейнеров (первоначально под другим именем), его определение в настоящее время расширяется, чтобы включить блочные контейнеры и грид-контейнеры.
Синтаксис
выравнивание содержимого: flex-start | гибкий конец | центр | пространство между | космос-около
Возможные значения
гибкий старт
Элементы Flex упаковываются в начале линии.
гибкий конец
Элементы Flex упаковываются ближе к концу линии.
центр
Элементы Flex упаковываются по направлению к центру линии.
пробел между
Элементы Flex равномерно распределены в строке.
пространство вокруг
То же, что и , пробел между , но с пробелами половинного размера с обоих концов.
Кроме того, все свойства CSS также принимают следующие значения ключевых слов CSS в качестве единственного компонента значения их свойства:
начальный
Представляет значение, указанное как начальное значение свойства.
унаследовать
Представляет вычисленное значение свойства родительского элемента.
снято с охраны
Это значение действует как наследуемое или начальное , в зависимости от того, передается имущество по наследству или нет. Другими словами, он устанавливает для всех свойств их родительские значения, если они наследуемые, или их начальные значения, если они не наследуемые.
Основная информация о свойствах
Исходное значение
гибкий пуск
Применимо к
Flex-контейнеры
В настоящее время это свойство переопределяется, чтобы оно применялось к блочным контейнерам, гибким контейнерам и грид-контейнерам.
Пример <стиль> .внешний контейнер {
высота: 200 пикселей;
шрифт: 100 24px/100px без засечек;
выравнивание текста: по центру;
белый цвет;
граница: 1px сплошная #ccc;
дисплей: гибкий;
выравнивание содержимого: пространство вокруг;
}
. внешний контейнер div {
ширина: 20%;
}
.красный {
фон: оранжево-красный;
}
.зеленый {
фон: желто-зеленый;
}
.синий {
фон: стальной синий;
} стиль> <дел> <дел>1дел> <дел>2дел> <дел>3дел> дел>
Попробуйте
Спецификации CSS
Свойство justify-content определено в модуле CSS Flexible Box Layout Level 1 (рекомендация-кандидат W3C, 26 мая 2016 г.).
Он также переопределяется в модуле выравнивания блоков CSS уровня 3 (рабочий проект W3C).
О Flexbox
Flexbox относится к модулю Flexible Box Layout, представленному в CSS3. Контейнер flex — это элемент с дисплеем : flex или отображение: inline-flex .
В модели гибкого макета дочерние элементы гибкого контейнера могут располагаться в любом направлении и могут «изгибать» свои размеры, либо увеличиваясь, чтобы заполнить неиспользуемое пространство, либо уменьшаясь, чтобы избежать переполнения родительского элемента.
Дополнительные сведения о гибких элементах см. в описании свойства flex .
Поддержка браузера
В следующей таблице, предоставленной Caniuse.com, показан уровень поддержки этой функции браузерами.
Префиксы поставщиков
Для максимальной совместимости с браузерами многие веб-разработчики добавляют свойства для конкретных браузеров, используя такие расширения, как -webkit- для Safari, Google Chrome и Opera (более новые версии), -ms- для Internet Explorer, -moz- для Firefox, -o- для более старых версий Opera и т. д. Как и в случае с любым свойством CSS, если браузер не поддерживает проприетарное расширение, он просто проигнорирует его.
Эта практика не рекомендуется W3C, однако во многих случаях единственный способ протестировать свойство — включить расширение CSS, совместимое с вашим браузером.
Основные производители браузеров обычно стремятся придерживаться спецификаций W3C, и когда они поддерживают свойство без префикса, они обычно удаляют версию с префиксом. Кроме того, W3C рекомендует поставщикам удалять свои префиксы для свойств, достигших статуса кандидата в рекомендации.
Многие разработчики используют Autoprefixer, постпроцессор для CSS. Autoprefixer автоматически добавляет префиксы поставщиков в ваш CSS, поэтому вам это не нужно. Он также удаляет старые ненужные префиксы из вашего CSS.
Вы также можете использовать Autoprefixer с такими препроцессорами, как Less и Sass.
Как центрировать текст и заголовки в CSS с помощью свойства Text-Align
Центрирование текста с помощью CSS может сделать вашу страницу организованной и симметричной, привлекая внимание посетителя к определенным элементам на странице. Например, заголовки, цитаты и призывы к действию часто располагаются по центру, чтобы нарушить ход документа и привлечь внимание читателя.
Вот почему приведенный ниже текст CTA расположен по центру.
Чтобы убедиться, что вы понимаете этот распространенный тип выравнивания, мы сначала рассмотрим, как центрировать текст по горизонтали. Затем мы рассмотрим несколько способов центрирования текста по вертикали.
Как центрировать текст в CSS
Чтобы центрировать текст в CSS, используйте свойство text-align и задайте для него значение «центр». Вы можете использовать эту технику внутри блочных элементов, таких как div.
Вы также можете центрировать текст в HTML, что полезно, если вы хотите центрировать только отдельные элементы на странице в каждом конкретном случае. Но если вы заинтересованы в центрировании элемента типа, например, всех h2 в вашем блоге, лучше сделать это в CSS.
Выравнивание текста по центру в CSS
Ниже мы рассмотрим несколько руководств по центрированию текста снаружи и внутри других элементов.
Центрирование текста с помощью свойства Text-Align
Начнем с простого примера. Допустим, у вас есть текстовая веб-страница, и вы хотите центрировать весь текст. Затем вы можете использовать универсальный селектор CSS (*) или тело селектора типа для выбора каждого элемента на странице. Затем вы должны установить для свойства text-align значение center.
Вот как это выглядит:
См. статью Центрирование текста пером с использованием свойства Text-Align от HubSpot (@hubspot) на CodePen.
Вот результат:
Центрирование типа HTML-элемента с помощью свойства Text-Align другие элементы кроме текста? В этом случае вы должны использовать то же свойство text-align, но другой селектор CSS.
Например, вы хотите, чтобы заголовки располагались по центру страницы, а абзацы — по левому краю. Затем вы должны использовать селектор типа h3 и установить для свойства text-align значение center. Вам не нужно добавлять дополнительный код для выравнивания абзацев — по умолчанию они будут выровнены по левому краю.
Вот как это выглядит:
См. Pen Centering HTML Element Type with CSS by HubSpot (@hubspot) на CodePen.
Вот результат:
Центрирование отдельных элементов с помощью CSS ID
Если вы хотите центрировать только один элемент на странице, вы можете добавить атрибут ID к элементу и целевому это с селектором ID. Или вы можете использовать встроенный CSS.
Во-первых, давайте воспользуемся атрибутом ID и селектором.
Вот CSS:
См. статью Центрирование отдельных элементов с помощью CSS от HubSpot (@hubspot) на CodePen.
Вот результат:
Центрирование текста внутри кнопки с помощью встроенного CSS
Теперь давайте воспользуемся встроенным CSS. Но вместо центрирования заголовков и абзацев давайте центрируем текст внутри другого элемента.
Допустим, я создаю веб-страницу с помощью Bootstrap CSS и добавляю кнопку Bootstrap, которую хочу центрировать на странице. Выравнивание кнопки и текста внутри кнопки будет немного отличаться от приведенных выше примеров. Это связано с тем, что свойство text-align работает только с содержимым внутри блочных элементов, таких как заголовки и абзацы, а не с встроенными элементами, такими как кнопки.
Итак, во-первых, я должен обернуть кнопку в div. Затем я мог бы применить встроенный CSS к div, чтобы выровнять содержимое по центру внутри div.
Вот как это выглядит:
Посмотрите, как ручка центрирует текст внутри кнопки с помощью CSS от HubSpot (@hubspot) на CodePen.
Вот результат:
Центрирование блочного элемента с использованием свойства Margin
Если вы центрируете весь блочный элемент, например div, свойство text-align не будет работать. (Обратите внимание, что это работает при центрировании содержимого внутри div.) Вместо этого вы можете использовать свойство margin для центрирования всего элемента. Вот как это выглядит:
См. Pen, центрирующий блочный элемент с помощью свойства Margin от HubSpot (@hubspot) на CodePen.
Вот результат:
Узнайте, как центрировать div в CSS, здесь.
Центрирование текста внутри элемента Div
Допустим, вы хотите центрировать элемент div, а также текст внутри него. Как и в предыдущем примере, добавьте селектор идентификатора «центр» к выбранному вами div, затем установите для поля значение «авто». Затем добавьте объявление «text-align: center».
Вот как это выглядит:
См. центрирование текста пером внутри центрированного Div от HubSpot (@hubspot) на CodePen.
Вот результат:
Как видно из приведенных выше примеров, свойство text-align указывает только горизонтальное выравнивание текста. Задать вертикальное выравнивание текста сложнее. Давайте посмотрим ниже.
Выровнять текст по вертикали
Вы можете центрировать текст по вертикали несколькими способами. Для приведенных ниже методов текст должен содержаться в родительском элементе, таком как div. Начнем с самого простого.
Обратите внимание: если вы хотите, чтобы ваш текст также располагался по центру по горизонтали, просто добавьте свойство text-align и установите для него значение center в любом из приведенных ниже примеров.
Вертикальное центрирование текста с использованием отступов CSS
Одно из самых простых решений для вертикального центрирования текста — использование отступов сверху и снизу.
Чтобы применить заполнение CSS к элементу, я могу использовать метод длинной формы и определить свойства padding-top и padding-bottom в моем CSS. Или я могу использовать сокращение CSS для свойства padding и включить три значения: первое значение будет представлять верхнее заполнение, второе — левое и правое заполнение, а третье — нижнее заполнение.
Ниже приведен код CSS, использующий сокращенный метод:
См. текст с вертикальным центрированием пера с использованием отступов CSS от HubSpot (@hubspot) на CodePen.
Вот результат:
Вертикальное центрирование текста с использованием свойства CSS Line-Height
Чтобы вертикально центрировать текст внутри элемента, вы также можете использовать свойство CSS line-height. Вам нужно будет установить свойство со значением, равным высоте элемента контейнера.
Вот CSS:
См. текст с вертикальным центрированием пера с использованием свойства CSS Line-Height от HubSpot (@hubspot) на CodePen.
Вот результат:
Центрирование текста по вертикали с помощью свойств CSS Position и Transform
Другой метод центрирования текста по вертикали на странице требует свойства CSS position и свойства transform.
Для начала установите относительную позицию блока, содержащего текст. Затем вы хотите стилизовать абзац внутри div. Во-первых, установите для него абсолютное положение, чтобы оно не вписывалось в обычный документооборот. Затем установите свойства left и top на 50%. Это говорит браузеру выровнять левый и верхний край абзаца с центром страницы по горизонтали и вертикали (т.е. 50% вправо и вниз по странице). Проблема в том, что мы не хотим, чтобы края абзаца выровнялись по середине страницы — мы хотим, чтобы центр абзаца выровнялся посередине страницы.
Здесь на помощь приходит свойство преобразования CSS. Используя метод преобразования, известный как метод translate(), мы можем перемещать абзац по осям X и Y. Чтобы действительно центрировать абзац, мы хотим переместить его на 50% влево и вверх от его текущего положения. Это скажет браузеру поместить центр абзаца в центр страницы.
Вот CSS:
См. текст с вертикальным центрированием пера с использованием свойств CSS Position and Transform от HubSpot (@hubspot) на CodePen.
Вот результат:
Центрирование текста по вертикали с помощью Flexbox
Flexbox — один из лучших методов вертикального (и горизонтального) центрирования текста, поскольку он отзывчивый и не требует вычисления полей.
Во-первых, вам нужно определить родительский контейнер — в данном случае div — как гибкий контейнер. Вы делаете это, устанавливая для свойства display значение «flex». Затем установите для свойства align-items и justify-content значение «center». Это укажет браузеру центрировать гибкий элемент (div внутри div) по вертикали и горизонтали.
Вот CSS:
См. текст с вертикальным центрированием пера с помощью Flexbox от HubSpot (@hubspot) на CodePen.
Вот результат:
Как использовать встроенный, внутренний или внешний CSS для центрирования текста?
Рассматривая различные варианты центрирования текста с помощью CSS, вы можете задаться вопросом, лучше ли использовать встроенный, внутренний или внешний CSS.
Встроенный CSS включается в открывающий тег элемента следующим образом:
Внутренний CSS включается между тегами
голова>
Внешний CSS относится к CSS во внешней таблице стилей, на которую вы ссылаетесь в теге заголовка вашего HTML-документа.
Итак, какой из этих вариантов вам подходит?
Если вы центрируете одноразовый элемент в сообщении блога или на странице, придерживайтесь встроенного CSS. Таким образом, вам не нужно создавать класс CSS или идентификатор только для этого элемента, который затем нужно будет добавить в таблицу стилей.
Если вы центрируете тип элемента на одной конкретной странице, вы можете использовать внутренний CSS для центрирования этого элемента, не переходя по одному.