Схема двухкалонкавага макета сайта ў CSS

Давайце зробім двухкалонкавы макет наступнага выгляду:

Для пачатку створым асноўную структуру старонкі:

html<div id="wrapper">
  <div id="header">
    header
  </div>
  <div id="container">
    <div id="content">
      content
    </div>
    <div id="sidebar">
      sidebar
    </div>
  </div>
  <div id="footer">
    footer
  </div>
</div>

Цяпер назначым стылі вэраперу, выраўнаваўшы яго па цэнтры экрана:

css#wrapper {
  width: 1000px;
  margin: 30px auto;
  border: 1px solid black;
}

Зададзім цяпер стылі хэдару і футару:

css#header {
  height: 200px;
  border: 1px solid black;
}
#footer {
  height: 200px;
  border: 1px solid black;
}

Як вы бачыце, мы задаем хэдару і футару вышыню. Мы робім гэта, як як у нашай схеме ў іх няма змесціва. Пры наяўнасці змесціва вышыню блокам задаваць не варта - яна будзе фарміравацца іх змесцівам.

Звярніце таксама ўвагу на тое, што мы не задаем ім шырыню. Справа ў тым, што хэдар і футар - блачныя элементы і іх шырыня будзе аўтаматычна роўная шырыні вэрапера.

Давайце цяпер зададзім ім padding, каб тэкст не прыліпаў да межаў:

css#header {
  height: 200px;
  padding: 20px;
  border: 1px solid black;
}
#footer {
  height: 200px;
  padding: 20px;
  border: 1px solid black;
}

Наяўнасць paddingа, аднак, дрэнна паўплывае на памеры блокаў - яны стануць большымі, чым паказана. Давайце зменім паводзіны ўсіх блокаў так, каб padding і мяжы не пашыралі нашы блокі:

css* {
  box-sizing: border-box;
}

Цяпер нам трэба паставіць кантэнт і сайдар у адзін шэраг. Зробім гэта з дапамогай флексаў:

css#container {
  display: flex;
}

Пакажам кантэнту і сайбару іх шырыню. Пры гэтым сума іх шырынь павінна быць роўная шырыні вэрапера:

css#content {
  width: 800px;
}
#sidebar {
  width: 200px;
}

Хай мы хочам зрабіць водступ паміж сайбарам і кантэнтам. У гэтым выпадку сайбару трэба паставіць margin. Пры гэтым нам прыйдзецца ад каго-адціснуць шырыню для гэтага margin. Адціснем ад кантэнту, адпаведна памяншыўшы яго шырыню:

css#content {
  width: 780px;
}
#sidebar {
  width: 200px;
  margin-right: 20px;
}

Давайце цяпер дадамо вышыню, так як нашы элементы не змяшчаюць змесціва. Дастаткова дадаць вышыню толькі аднаму элементу, бо другі флекс элемент падбудовіцца па вышыні (чаму?). Давайце зададзім вышыню кантэнту:

css#content {
  width: 780px;
  height: 700px;
}
#sidebar {
  width: 200px;
  margin-right: 20px;
}

Давайце дадамо кантэнту і сайбару астатнія стылі:

css#content {
  width: 780px;
  height: 700px;
  padding: 20px;
  border: 1px solid black;
}
#sidebar {
  width: 200px;
  margin-right: 20px;
  padding: 20px;
  border: 1px solid black;
}

Усё, наш макет гатовы. Сабяром увесь код разам:

html<div id="wrapper">
  <div id="header">
    header
  </div>
  <div id="container">
    <div id="sidebar">
      sidebar
    </div>
    <div id="content">
      content
    </div>
  </div>
  <div id="footer">
    footer
  </div>
</div>
css* {
  box-sizing: border-box;
}

#wrapper {
  width: 1000px;
  margin: 30px auto;
  border: 1px solid black;
}
#header {
  height: 200px;
  padding: 20px;
  border: 1px solid black;
}
#container {
  display: flex;
}
#content {
  width: 780px;
  height: 700px;
  padding: 20px;
  border: 1px solid black;
}
#sidebar {
  width: 200px;
  margin-right: 20px;
  padding: 20px;
  border: 1px solid black;
}
#footer {
  height: 200px;
  padding: 20px;
  border: 1px solid black;
}
Задание 1
Задание 2