/
Вопросы и ответы
/
CSS
/

Как разместить блоки в ряд css

Как разместить блоки в ряд css

5 лет назад

Человек-Молекула

Ответы

0

Для того, что бы расположить несколько блочных элементов в линию обычно применяется flexbox. Особенно это актуально когда блоки должны располагаться вдоль одной из осей - только горизонтально или только вертикально. Если требуется сетка, где блоки должны размещаться как на шахматной доске, то правильнее применять grid-модель для распределения контента. Рассмотрим пример.

Исходный HTML файл

1
2
3
4
5
6
7
<div class="container">
  <div>123</div>
  <div>456</div>
  <div>789</div>
  <div>1011</div>
  <div>1213</div>
</div>

Для начала надо определить (или создать) родительский элемент для всех блочных элементов которые необходимо позиционировать в ряд. В нашем случае это div-элемент с классом container. Затем описать правила, изменить display, и выбрать способ распределения блоков внутри flex-контейнера с помощью justify-content и align-items.

1
2
3
4
5
6
.container {
  display: flex;
  /* крайние блоки прижмуться к краям родительского элемента, 
     остальные равномерно займут пространство между ними. */
  justify-content: space-between;
}

4 года назад

Вячеслав Межуревский

0

Блоки в ряд ставят через flexbox: задайте родителю display: flex.

1
2
3
4
5
<div class="row">
  <div class="card">1</div>
  <div class="card">2</div>
  <div class="card">3</div>
</div>

gap задаёт расстояние между блоками.

Одинаковая ширина

1
2
3
.card {
  flex: 1;
}

Каждый блок займёт равную долю ширины родителя.

Перенос на новую строку

Чтобы блоки переносились на новую строку, когда не помещаются:

1
2
3
4
5
6
7
8
9
.row {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

.card {
  flex: 1 1 200px; /* не уже 200px */
}

Через grid

Ровная сетка, например по три блока в ряд:

1
2
3
4
5
.row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

Адаптивно, без медиазапросов — блоков в ряду столько, сколько помещается:

1
2
3
4
5
.row {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 16px;
}

Выравнивание

1
2
3
4
5
.row {
  display: flex;
  justify-content: space-between; /* по горизонтали */
  align-items: center;            /* по вертикали */
}

Без flex

display: inline-block тоже ставит блоки в ряд, но между ними появляются промежутки от пробелов в HTML. Для новых макетов используйте flexbox или grid.

Если блоки всё равно в столбик

  • display: flex задали самим блокам вместо родителя.
  • У родителя flex-direction: column.
  • У блоков width: 100% — при flex-wrap: wrap каждый займёт целую строку.

Flexbox и grid разбирают в курсе «Профессиональная вёрстка».

месяц назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845