falbar Простой способ выровнять элементы в CSS по центру вертикально и горизонтально

Простой способ выровнять элементы в CSS по центру вертикально и горизонтально

15 июля 2018 Перевод 657 2

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

Реклама

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

Этот способ работает во всех современных браузерах - IE10 +, Chrome, Firefox и Safari (с -webkit-префиксом). Полную таблицу совместимости смотрите здесь.

HTML верстка

Идея, конечно, полностью заключается в использовании flexbox. Мы изначально создаем контейнер, в котором мы хотим, чтобы все элементы CSS были расположены по центру:

<div class="container">
    <!-- Любой контент здесь будет центрирован -->
    <img src="fireworks.jpg" alt="fireworks">
</div>

Вы можете разместить этот контейнер div в любом месте. В приведенном выше примере мы сделали это, взяв всю ширину и высоту страницы.

CSS стили

Как и говорилось ранее, мы будем использовать только три строки кода. Вот они:

.container {
    display: flex;
    justify-content: center;
    align-items: center;
}

Каждый «гибкий» контейнер имеет две оси для позиционирования элементов. Основная ось выражается свойством flex-direction (может быть row или column). Опустив это правило, мы оставили flex-direction по умолчанию - row.

Теперь все, что нам нужно сделать, - это центрировать обе оси. Сделать это очень просто:

  1. Преобразуйте тип отображения в flex, чтобы активировать режим flexbox;
  2. justify-content определяет, где элементы гибкости будут выровняться в соответствии с основной осью (горизонтально в нашем случае);
  3. align-items делает то же самое с осью, перпендикулярной основной (вертикально в нашем случае).

Теперь, когда мы указали правила вертикального и горизонтального выравнивания элементов CSS по центру, любой элемент, который мы добавляем внутри контейнера, будет располагаться идеально посередине. Нам не нужно заранее знать его размеры, браузер сам сделает всю нужную работу!

Резюмируем

Существует множество других методов для центрирования контента с помощью CSS, но flexbox делает это намного проще и красивее. Если вы хотите узнать больше об этом, ознакомьтесь с этими ресурсами:

  • Полное руководство по Flexbox – здесь;
  • MDN: Использование гибких блоков CSS – здесь.
Реклама
Alexey Zubarev
16 июля 2018
По-моему самое лучшее руководство по этому поводу - http://paratapok.ru/frontend/5148_css3-flexbox/ И наглядно, и исходный код через инструменты разработчика легко посмотреть. Самое главное примеры живые мне понравились. Вообщем, советую
Антон Кулешов
17 июля 2018
Полезная ссылочка, добавил себе в закладки.
no_avatar