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

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

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

5 лет назад

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

Ответы

0

Для того чтобы расположить рядом для элемента, например , которые по умолчанию блочные элементы, а значит занимают всю доступную ширину экрана, достаточно изменить тип отображения (display) на значение inline-block, и элементы встанут в ряд. Рассмотрим пример. Исходный HTML имеет вид:

1
2
3
4
<body>
  <div class="block">Первый</div>
  <div class="block">Второй</div>
</body>

Стили:

1
2
3
4
5
.block {
  display: inline-block;
  border: 1px solid blue;
  margin: 2px;
}

С таким вариантом есть одна особенность. Если, к примеру, текст в во втором блоке будет сильно длинный, то браузер перенесет этот блок на новую строку чтобы уместить содержимое, и отобразить контент полностью.

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

1
2
3
4
5
6
<body>
  <div class="wrapper">
    <div class="block">Первый</div>
    <div class="block">Второй</div>
  </div>
</body>

Стили:

1
2
3
4
5
6
7
8
.wrapper {
  display: flex;
}
.block {
  display: inline-block;
  border: 1px solid blue;
  margin: 2px;
}

4 года назад

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

0

Оберните блоки в общий контейнер и сделайте его флексом:

1
2
3
4
<div class="row">
  <div class="col">Левый блок</div>
  <div class="col">Правый блок</div>
</div>

div по умолчанию занимает всю ширину строки, поэтому блоки встают друг под другом. display: flex у родителя ставит их в ряд.

Разная ширина

1
2
.sidebar { flex: 0 0 280px; }   /* фиксированные 280px */
.content { flex: 1; }           /* всё остальное место */

Или в пропорции 2 к 1:

1
2
.main { flex: 2; }
.aside { flex: 1; }

На телефоне — друг под другом

1
2
3
4
5
6
7
8
9
10
.row {
  display: flex;
  gap: 24px;
}

@media (max-width: 768px) {
  .row {
    flex-direction: column;
  }
}

Или без медиазапроса: flex-wrap: wrap и минимальная ширина блоков. Когда места не хватит, второй блок сам перенесётся вниз:

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

.col {
  flex: 1 1 300px;
}

Через grid

1
2
3
4
5
.row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}

1fr 1fr — две равные колонки. 280px 1fr — фиксированная слева и резиновая справа.

Выровнять блоки по высоте и по вертикали

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

1
2
3
4
.row {
  display: flex;
  align-items: center;
}

Старые способы

Раньше блоки ставили рядом через float: left или display: inline-block. Оба способа требуют обходных приёмов: очистки потока или борьбы с пробелами между блоками. Во всех современных браузерах работают flex и grid.

Флексбокс, грид и адаптивную вёрстку разбирают на курсе «Профессиональная верстка».

11 дней назад

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

+7 800 100 22 47

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

+7 495 085 21 62

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

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