Как разместить вложенный div у div по центру

При вёрстке страницы изначально всё расчитано на выравнивание по левому краю. Очень много сайтов, документов именно так и работают. Но с появлением мобильных устройств левое выравнивание выглядит нелепо. Это когда экран и так маленький, а картинки и текст все сбоку. Не смотря на наличие этой проблеммы, такие фреймворки как bootstrap не сделали ничего в пользу автоматического размещения по центру.

Для исполнения протокола “Mobile First” поисковой компании Google, нужно знать, как размещать элементы по центру. Устаревший метод размещения элементов по центру – это использование таблиц. Таблицы позволяют центровать элемент как по горизонтали, так и по вертикали. Анализ исходного кода показал, что даже совремённая програма для создания HTML5 анимации Hippani Animator использует таблицы для элементов анимации, там почти все элементы сидят в своей таблицы.

Таблицы не так плохи, за исключением громоздкого кода. Вот так выглядит таблица с текстом

<table>
  <tr>
    <th>Firstname</th>
  </tr>
</table>

А вот так выглядит современный блочный элемент DIV, который выполняет ту же функцию.

<div>
Firstname
</div>

Как видите, использование таблицы не целесообразно. К тому же там есть еще ряд причин, которых мы рассматривать не будем.

Горизонтальное центрирование по-старому

Вы можете применить правило text-align: center к элементу-оболочке. Внутренний родительский элемент, UL в этом примере, должен быть установлен на display: inline-block.

.is_div {
    text-align:center;
    width: 100%;
}
.is_div div {
    display:inline-block;
    width: 300px;
}

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

Сегодня у нас есть лучший способ, CSS Flexbox.

CSS Flexbox

Несколько лет назад Flexbox был добавлен в стандарты CSS для управления распределением пространства и выравниванием элементов. По сути, это синтаксис одномерного макета.

В сочетании с более новыми CSS Grid веб-разработчики имеют мощные синтаксисы, упрощающие управление сложными макетами.

Мы говорим об одномерном элементе управления макетом, но на самом деле это означает и оси x, и y. Как вы увидите, выравнивание вдоль каждой оси управляется различными свойствами.

Flexbox поддерживается всеми современными браузерами, включая неудачливый Internet Explorer. Таким образом, вы можете уверенно использовать flexbox для правил макета CSS.

    <div class="example">
        <div>How to Center</div>
    </div>

    .example {
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        width: 100%;
        text-align: center;
        margin: 10% 0;
        min-height: 200px;
        background-color: grey;
    }

Этот пример показывает вот такой отличный вариант выполнения:

центрирование блока div

Проверить вы сможете на https://jsfiddle.net/

Если данная статья помогла вам, оставьте комментарий и поделитесь в социальной сети.