Ques/Help/Req Как центрировать в CSS через Flexbox, Grid, Position и Margin

XakeR

Member
Регистрация
13.05.2006
Сообщения
1 912
Реакции
0
Баллы
16
Местоположение
Ukraine
Сегодня мы покажем, как можно центрировать и выравнивать содержимое с помощью CSS. Ещё мы рассмотрим разные техники выравнивания.

Это — перевод оригинальной статьи на freeCodeCamp от автора Joy Shaheb.

Ещё у нас есть видеоверсия урока от автора (осторожно, английский язык):

Frontend-разработчик отдела облачной платформы Ренессанс Банк, , можно удалённо, По итогам собеседования tproger.ru Вакансии на tproger.ru

Как центрировать в CSS через Flexbox, Grid, Position и Margin0


Что такое главная и поперечная оси в CSS​


Прежде всего, давайте разберемся, что такое:

  1. Главная ось.
  2. Поперечная ось.

Линия, проходящая по экрану слева направо — это и есть главная ось. Вы также можете называть её осью Х или горизонтальной линией.

Как центрировать в CSS через Flexbox, Grid, Position и Margin1


Линия, которая проходит сверху вниз — это поперечная ось. Также её можно назвать осью Y или вертикальной линией.

Как центрировать в CSS через Flexbox, Grid, Position и Margin2


Настройка проекта​


Чтобы поэкспериментировать со всеми свойствами и значениями, напишем следующий код в редакторе.

HTML

Запишите этот код внутри тега body:

<div class=»container»> <div class=»box-1″> </div> </div> CSS

Очистите стили браузера по умолчанию, чтобы мы получали точные результаты.

*{ margin: 0px; padding: 0px; box-sizing: border-box; }

Выберите класс .container и установите его значение 100vh. В противном случае мы не сможем увидеть наш результат на вертикальной оси:

.container{ height: 100vh; }

Стилизуйте класс .box-1 следующим образом:

.box-1{ width: 120px; height: 120px; background-color: skyblue; border: 2px solid black; }

Все готово, теперь начнем кодить!

Как использовать Flexbox для центрирования чего-либо​


Мы можем использовать Flexbox для выравнивания div по осям X и Y.

Для этого нам нужно записать свойство display: flex; внутри класса .container:

.container{ display: flex; height: 100vh; }

Мы поэкспериментируем с этими двумя свойствами:

  • justify-content;
  • align-items.

Как отцентрировать что-либо по горизонтали с помощью Flexbox

Мы используем свойство justify-content, используя следующие значения.

Как центрировать в CSS через Flexbox, Grid, Position и Margin3


Напишите следующий код.

.container{ display: flex; height: 100vh; /* Change values to experiment*/ justify-content: center; }

Результат будет выглядеть следующим образом.

Как центрировать в CSS через Flexbox, Grid, Position и Margin4

Как выровнять что-либо по вертикали с помощью Flexbox

Мы используем свойство align-items, используя следующие значения.

Как центрировать в CSS через Flexbox, Grid, Position и Margin5


Чтобы поэкспериментировать со значениями, напишите следующий код.

.container{ height: 100vh; display: flex; /* Change values to experiment*/ align-items: center; }

Результат выглядит так:

Как центрировать в CSS через Flexbox, Grid, Position и Margin6

Как центрировать div по горизонтали и вертикали с помощью Flexbox

Мы объединим свойства justify-content и align-items, чтобы выровнять div как по горизонтали, так и по вертикали.

Напишите следующий код.

.container{ height: 100vh; display: flex; /* Change values to experiment*/ align-items: center; justify-content: center; }

Результат выглядит следующим образом.

Как центрировать в CSS через Flexbox, Grid, Position и Margin7


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

Как использовать CSS Grid для центрирования чего-либо​


Используем grid для выравнивания содержимого div по осям X и Y.

Для этого нужно записать свойство display: grid; внутри класса .container:

.container{ display: grid; height: 100vh; }

Поэкспериментируем с этими двумя свойствами:

  1. justify-content;
  2. align-content.

В качестве альтернативы можно использовать эти свойства:

  1. justify-items;
  2. align-items.

Как выровнять что-либо по горизонтали с помощью CSS Grid

Используем свойство justify-content.

Как центрировать в CSS через Flexbox, Grid, Position и Margin8


Напишите такой код:

.container{ height: 100vh; display: grid; /* Change values to experiment*/ justify-content: center; }

Вот результат:

Как центрировать в CSS через Flexbox, Grid, Position и Margin9

Как выровнять что-либо по вертикали с помощью CSS Grid

Мы используем свойство align-content, используя следующие значения.

Как центрировать в CSS через Flexbox, Grid, Position и Margin10


Напишите этот код:

.container{ height: 100vh; display: grid; /* Change values to experiment*/ align-content: center; }

Вот, каким будет результат:

Как центрировать в CSS через Flexbox, Grid, Position и Margin11

Как выровнять div по горизонтали и вертикали с помощью CSS Grid

Объединим свойства justify-content и align-content, чтобы выровнять div как по горизонтали, так и по вертикали.

Напишите следующий код:

.container{ height: 100vh; display: grid; /* Change values to experiment*/ align-content: center; justify-content: center; }

Результат, который должен получиться:

Как центрировать в CSS через Flexbox, Grid, Position и Margin12

Альтернативный способ

Вы можете использовать свойства justify-items и align-items и получить те же результаты:

.container{ height: 100vh; display: grid; /* Change values to experiment*/ align-items: center; justify-items: center; } Свойство place-content в CSS Grid

Это сокращение двух свойств CSS Grid:

  1. justify-content;
  2. align-content.

.container{ height: 100vh; display: grid; place-content: center; }

Получаем тот же результат:

Как центрировать в CSS через Flexbox, Grid, Position и Margin13


Как использовать свойство CSS Position для центрирования чего-либо​


Это комбинация этих свойств:

  1. position;
  2. top, left;
  3. transform, translate.

Напишите следующий код:

.container{ height: 100vh; position: relative; }

Вместе с этим кодом в CSS:

.box-1{ position: absolute; width: 120px; height: 120px; background-color: skyblue; border: 2px solid black; } Что такое центральная точка div

По умолчанию это — центральная точка div.

Как центрировать в CSS через Flexbox, Grid, Position и Margin14


Вот почему мы видим такое странное поведение блока при попытке выровнять его.

Как центрировать в CSS через Flexbox, Grid, Position и Margin15


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

Написав эту строку:

transform: translate(-50%,-50%);

Мы решим проблему и получим следующий результат.

Как центрировать в CSS через Flexbox, Grid, Position и Margin16

Что такое свойство Translate в CSS

Translate — это сокращение 3 свойств:

  1. translateX;
  2. translateY;
  3. translateZ.

Как выровнять div по горизонтали с помощью свойства CSS Position

Используем свойство left внутри класса .box-1.

.box-1{ /* other codes are here*/ left: 50%; transform: translate(-50%); }

Вот результат:

Как центрировать в CSS через Flexbox, Grid, Position и Margin17

Как выровнять div по вертикали с помощью свойства CSS Position

Используем свойство top внутри класса .box-1.

.box-1{ /* Other codes are here*/ top: 50%; transform: translate(0,-50%); }

Результат:

Как центрировать в CSS через Flexbox, Grid, Position и Margin18

Как центрировать div по горизонтали и вертикали с помощью свойства CSS position

Чтобы достичь этого результата, мы объединим вместе свойства:

  1. top, left;
  2. transform, translate.

.box-1{ /*Other codes are here */ top: 50%; left: 50%; transform: translate(-50%,-50%); }

Результат:

Как центрировать в CSS через Flexbox, Grid, Position и Margin19


Как использовать свойство margin для центрирования чего-либо​


Свойство margin является сокращением 4 свойств:

  1. margin-top, margin-bottom;
  2. margin-left, margin-right.

Напишите этот код:

.container{ height: 100vh; display: flex; } .box-1{ width: 120px; height: 120px; background-color: skyblue; border: 2px solid black; } Как выровнять div по горизонтали с помощью свойства CSS margin

Используем свойство margin внутри класса .box-1. Напишите этот код:

.box-1{ //Other codes are here margin: 0px auto; }

Вот, как будет выглядеть результат:

Как центрировать в CSS через Flexbox, Grid, Position и Margin20

Как выровнять div по вертикали с помощью свойства CSS margin

Снова используем margin внутри класса .box-1. Напишите следующий код:

.box-1{ //Other codes are here margin: auto 0px; }

Результат:

Как центрировать в CSS через Flexbox, Grid, Position и Margin21

Как выровнять div по горизонтали и вертикали с помощью свойства CSS margin

И ещё разок используем margin внутри класса .box-1. Напишите такой код:

.box-1{ //Other codes are here margin: auto auto; }

Результат будет выглядеть так:

Как центрировать в CSS через Flexbox, Grid, Position и Margin22


Заключение​


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

Возьмите вашу медаль за то, что дочитали статью до конца!
 
198 114Темы
635 085Сообщения
3 618 401Пользователи
EeOneНовый пользователь
Верх