БлогNot. CSS: четыре способа сделать макет из двух колонок одинаковой ширины

CSS: четыре способа сделать макет из двух колонок одинаковой ширины

Если в макете нужны просто две колонки без таблиц и тегов col, самый простой вариант - поставить свойство float: left; одному из разделов.

Добавив минимум стилевых указаний для того, чтобы ширина колонок была одинаковой, контролировалась общая ширина контента и всё центрировалось, получим такой макет:

<style>
 #wrap {
  width: 90%;
  margin: 0 auto;
 }
 #left_col {
  float: left;
  width: 50%;
 }
 #right_col {
  float: right;
  width: 50%;
 }
</style>

<div id="wrap">
 <div id="left_col">
  Содержимое левой колонки
 </div>
 <div id="right_col">
  Содержимое правой колонки
 </div>
</div>

Правда, колонки могут при таком подходе накладываться, если внутри одной из них есть контент с фиксированной шириной.

Другой вариант - использовать "табличные" возможности свойства display:

<style>
 #wrap{
  display: table;
  width: 90%;
  margin: 0 auto;
 }
 #content{
  display: table-row;
 }
 #content > div {
  display: table-cell;
 }
 #left_col {
  width: 50%;
 }
 #right_col {
  width: 50%;
 }
</style>

<div id="wrap">
 <div id="content">
  <div id="left_col">
   Содержимое левой колонки
  </div>
  <div id="right_col">
   Содержимое правой колонки
  </div>
 </div>
</div>

Ещё проще в применении будет новое свойство column-count:

<style>
 .columns {
  width: 90%;
  margin: 0 auto;
  column-count: 2;
  column-width: 50%;
  column-rule: 1px dotted #ccc;
  column-fill: balance;
  column-gap: normal;
 }
</style>
<div class="columns">
 Содержимое, которое будет выведено в 2 колонки
</div>

Плюс подхода - нужен единственный раздел для колоночного содержимого! Правда, без дополнительных стилевых указаний, решать, где разорвать колонку, будет сам браузер. Между колонками добавлена "линейка" column-rule, её, конечно, можно убрать.

Наконец, у display теперь есть значение flex, позволяющее управлять, в том числе, и размещением контента в колонки:

<style>
.wrap {
 display: flex;
 width: 90%;
 margin: 0 auto;
}
.child {
 display: flex;
 width: 100%;
}
</style>

<div class="wrap">
 <div class="child">
  Содержимое левой колонки
 </div>
 <div class="child">
  Содержимое правой колонки
 </div>
</div>

Это не будет подерживаться в Internet Explorer 8-9 версий и других устаревших браузерах.

Можно придумать миллион вариантов конкретного "колоночного" стиля, но, наверное, все они так или иначе сведутся к этим четырём базовым подходам.

Проверить примеры можно, наполнив текстовые разделы содержимым и выполнив файлы .html с разметкой на своём компьютере.

18.06.2021, 14:21 [2176 просмотров]


теги: список html css вебдезигн

К этой статье пока нет комментариев, Ваш будет первым