Центрирование элементов различными способами

Тренажер по CSS для пользователей с начальным уровнем подготовки.

Тренажер CSS

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

Список тем

Горизонтальное центрирование блочного элемента

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

CSS
.container {
  background-color: #f0f0f0;
  height: 200px;
  border: 1px solid #ccc;
}

.box {
  background-color: #4a90e2;
  width: 100px;
  height: 100px;
  margin-left: input1;
  margin-right: input2;
}
HTML
<div class="container">
  <div class="box"></div>
</div>
Чтобы отцентрировать блочный элемент с явно заданной шириной по горизонтали, можно использовать свойство `margin`. Установите верхний и нижний отступы в 0 (или любое другое значение), а левый и правый — в `auto`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Горизонтальное центрирование текста

Внутри контейнера есть текст. Необходимо отцентрировать этот текст по горизонтали, используя свойство родительского элемента.

CSS
.container {
  background-color: #f9f9f9;
  padding: 20px;
  border: 1px solid #ddd;
  input1: input2;
}
HTML
<div class="container">
  Центрируй меня!
</div>
Для центрирования инлайновых элементов (включая текст) внутри их блочного родителя используется свойство `text-align` со значением `center`, примененное к родительскому элементу.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Центрирование инлайн-блоков

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

CSS
.container {
  background-color: #e0f7fa;
  padding: 15px;
  border: 1px solid #b2ebf2;
  input1: input2;
}

.item {
  display: inline-block;
  background-color: #00796b;
  color: white;
  width: 60px;
  height: 60px;
  margin: 5px;
  line-height: 60px; /* для верт. центрирования текста внутри */
  text-align: center; /* для гор. центрирования текста внутри */
}
HTML
<div class="container">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
</div>
Инлайн-блоки ведут себя подобно тексту относительно горизонтального выравнивания. Примените свойство `text-align` со значением `center` к родительскому контейнеру.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Вертикальное центрирование однострочного текста

Дан блок с фиксированной высотой, содержащий одну строку текста. Отцентрируйте текст по вертикали внутри этого блока.

CSS
.text-box {
  background-color: #fff8e1;
  border: 1px solid #ffecb3;
  height: 80px;
  input1: 80px; /* Значение должно быть равно высоте */
  text-align: center; /* Добавим и горизонтальное центрирование для наглядности */
}
HTML
<div class="text-box">
  Вертикальный центр
</div>
Если блоку задана фиксированная высота и в нем содержится только одна строка текста (или инлайн-элементов), можно использовать свойство `line-height`, установив его равным высоте блока.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Центрирование с помощью Flexbox (основные свойства)

Используйте Flexbox для одновременного центрирования дочернего элемента по горизонтали и вертикали внутри родительского контейнера.

CSS
.container {
  background-color: #f3e5f5;
  height: 250px;
  border: 1px solid #e1bee7;
  input1: input2;
  input3: input4;
  input5: input6;
}

.item {
  background-color: #8e24aa;
  width: 80px;
  height: 80px;
}
HTML
<div class="container">
  <div class="item"></div>
</div>
Превратите родительский элемент во flex-контейнер с помощью `display: flex;`. Затем используйте `justify-content: center;` для горизонтального центрирования и `align-items: center;` для вертикального.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Центрирование с помощью Grid (place-items)

Используйте CSS Grid и его сокращенное свойство для одновременного центрирования элемента по обеим осям.

CSS
.container {
  background-color: #e8f5e9;
  height: 250px;
  border: 1px solid #c8e6c9;
  input1: input2;
  input3: input4;
}

.item {
  background-color: #388e3c;
  width: 90px;
  height: 90px;
}
HTML
<div class="container">
  <div class="item"></div>
</div>
Сделайте родительский элемент grid-контейнером (`display: grid;`). Затем используйте универсальное свойство `place-items: center;`, которое является сокращением для `align-items` и `justify-items`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Центрирование с помощью Grid (justify-content, align-items)

Используйте CSS Grid и отдельные свойства `justify-content` и `align-items` для центрирования элемента.

CSS
.container {
  background-color: #e3f2fd;
  height: 250px;
  border: 1px solid #bbdefb;
  input1: input2;
  input3: input4;
  input5: input6;
}

.item {
  background-color: #1976d2;
  width: 70px;
  height: 70px;
}
HTML
<div class="container">
  <div class="item"></div>
</div>
Сделайте родительский элемент grid-контейнером (`display: grid;`). Для центрирования самого grid-элемента (если он меньше grid-контейнера) используются свойства `justify-content: center;` и `align-items: center;`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Центрирование с помощью абсолютного позиционирования и transform

Отцентрируйте элемент внутри родителя, используя абсолютное позиционирование и CSS-трансформации.

CSS
.container {
  background-color: #fce4ec;
  height: 280px;
  border: 1px solid #f8bbd0;
  position: relative; /* Обязательно для позиционирования дочернего элемента */
}

.item {
  background-color: #c2185b;
  width: 100px;
  height: 100px;
  input1: input2;
  top: 50%;
  left: 50%;
  input3: input4;
}
HTML
<div class="container">
  <div class="item"></div>
</div>
Задайте родительскому элементу `position: relative;` (или `absolute`, `fixed`). Дочернему элементу задайте `position: absolute;`, `top: 50%;`, `left: 50%;`. Затем используйте `transform: translate(-50%, -50%);`, чтобы скорректировать положение, так как `top` и `left` смещают верхний левый угол элемента в центр.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Центрирование изображения как инлайн-элемента

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

CSS
.image-container {
  background-color: #fafafa;
  padding: 20px;
  border: 1px solid #eee;
  height: 150px;
  input1: input2;
}

.image-container img {
  /* Дополнительные стили для изображения, если нужны */
  /* max-width: 100%; */
  /* height: auto; */
}
HTML
<div class="image-container">
  <img src="https://naytikurs.ru/img/7.png" alt="Example Image" width="100">
</div>
Изображения по умолчанию являются инлайн-элементами (или инлайн-блоками в зависимости от контекста). Чтобы отцентрировать их по горизонтали внутри родительского блока, примените к родителю свойство `text-align` со значением `center`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Центрирование изображения как блока

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

CSS
.image-container {
  background-color: #f5f5f5;
  padding: 20px;
  border: 1px solid #e0e0e0;
}

.image-container img {
  input1: input2;
  input3: auto;
  input4: auto;
  /* Зададим ширину явно, чтобы margin: auto сработал */
  width: 120px;
}
HTML
<div class="image-container">
  <img src="https://naytikurs.ru/img/8.png" alt="Example Image">
</div>
Чтобы центрировать изображение с помощью `margin: auto`, сначала нужно сделать его блочным элементом (`display: block;`). После этого можно применить `margin-left: auto;` и `margin-right: auto;` (или сокращенно `margin: 0 auto;`).
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Flexbox: Центрирование по горизонтали

Используя Flexbox, расположите дочерний элемент по центру родительского контейнера только по горизонтальной оси.

CSS
.container {
  background-color: #fff3e0;
  height: 150px;
  border: 1px solid #ffe0b2;
  input1: flex;
  input2: input3;
  /* align-items по умолчанию stretch или flex-start, нам не нужно его менять для этой задачи */
}

.item {
  background-color: #ef6c00;
  width: 100px;
  height: 50px;
}
HTML
<div class="container">
  <div class="item"></div>
</div>
Сделайте родительский элемент flex-контейнером (`display: flex;`). Для горизонтального центрирования используйте свойство `justify-content` со значением `center`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Flexbox: Центрирование по вертикали

Используя Flexbox, расположите дочерний элемент по центру родительского контейнера только по вертикальной оси.

CSS
.container {
  background-color: #ede7f6;
  height: 200px;
  border: 1px solid #d1c4e9;
  input1: flex;
  input2: input3;
  /* justify-content по умолчанию flex-start, нам не нужно его менять */
}

.item {
  background-color: #5e35b1;
  width: 100px;
  height: 50px;
}
HTML
<div class="container">
  <div class="item"></div>
</div>
Сделайте родительский элемент flex-контейнером (`display: flex;`). Для вертикального центрирования используйте свойство `align-items` со значением `center`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Grid: Центрирование элемента с помощью margin auto

Используйте CSS Grid на контейнере и автоматические отступы на дочернем элементе, чтобы отцентрировать его.

CSS
.container {
  background-color: #f1f8e9;
  height: 220px;
  border: 1px solid #dcedc8;
  input1: input2;
  /* Свойства justify-items/align-items не нужны, если используем margin: auto на дочернем элементе */
}

.item {
  background-color: #689f38;
  width: 80px;
  height: 80px;
  input3: input4;
}
HTML
<div class="container">
  <div class="item"></div>
</div>
Сделайте родительский элемент grid-контейнером (`display: grid;`). Если grid-элемент должен быть отцентрирован внутри своей grid-ячейки (в данном случае контейнер - это одна большая ячейка), можно применить к самому элементу `margin: auto;`.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Grid: Центрирование элемента с помощью align-self и justify-self

Используйте CSS Grid на контейнере и свойства `align-self` и `justify-self` на дочернем элементе, чтобы отцентрировать его.

CSS
.container {
  background-color: #fffde7;
  height: 240px;
  border: 1px solid #fff9c4;
  input1: input2;
}

.item {
  background-color: #fbc02d;
  width: 90px;
  height: 90px;
  input3: input4;
  input5: input6;
}
HTML
<div class="container">
  <div class="item"></div>
</div>
Сделайте родительский элемент grid-контейнером (`display: grid;`). Чтобы управлять выравниванием конкретного grid-элемента внутри его ячейки, используйте `justify-self: center;` для горизонтального центрирования и `align-self: center;` для вертикального.
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку

Комбинация: Flexbox для центрирования текста внутри блока

Отцентрируйте текст одновременно по горизонтали и вертикали внутри блока, используя Flexbox.

CSS
.text-container {
  background-color: #ffebee;
  height: 150px;
  width: 250px;
  border: 1px solid #ffcdd2;
  input1: input2;
  input3: input4;
  input5: input6;
}
HTML
<div class="text-container">
  Центрированный текст
</div>
Примените `display: flex;` к блоку, содержащему текст. Затем используйте `justify-content: center;` и `align-items: center;` для центрирования текста (который будет flex-элементом).
Заполнить ответами все поля
Результат
Сообщения
Выполнить
Отметить решенным
Показать подсказку
НайтиКурс.Ру