Отрицательное поле (margin) и верстка в три колонки
Наша задача сверстать сайт. То есть назначить стили и составить разметку, которая будет интерпретироваться браузером как 3-х колончатый сайт плюс шапка. Правый столбец сайта расположим при помощи отрицательного поля. Для начала давайте рассмотрим порядок элементов в HTML.
Чтобы центрировать сайт в браузере, создам первый охватывающий блок с фиксированной шириной. Под шапку создадим свой блок, ширина которого будет равна ширине охватывающего блока. Затем под шапкой создадим три блока – первый под контент, второй под правый столбец, третий под левый столбец. Эти три блока будут плавающими.
Первый плавающий блок (блок с контентом) переместим вправо и назначим ему правое поле, ширина которого должна быть равна ширине правой колонки. Ширина левой колонки = ширина охватывающего блока – ширина блока с контентом. Блок под правый столбец сместим вправо. Блок под левый столбец сместим влево. Таким образом, наша разметка будет выглядеть следующим образом.
В дело вступает отрицательное поле. Так как правый блок размещен за блоком с контентом, то он появляется не справа, а слева. Чтобы вернуть правый столбец на место, назначьте ему отрицательное поле, ширину которого легко рассчитать (расстояние от левой стороны блока с контентом до правой стороны охватывающего блока), глядя на схему ниже. Таким образом, правый блок встанет на свое законное место. Сайт в три колонки размечен, стили назначены.
Сайт сверстан:
Не забывайте, что все блоки имеют фиксированную ширину. Также не забывайте, что ширина элемента складывается из ширины элемента (width
), границ элемента (border
), отступов элемента (padding
), полей элемента (margin
).
HTML
<div class="wraper">
<div class="header"></div> <!--шапка-->
<div class="content"></div> <!--блок под контент-->
<div class="right_sidebar"></div> <!--правый блок-->
<div class="left_sidebar"></div> <!--левый блок-->
</div>
CSS
.wraper {
width:960px;
background:#7d97c8;
margin:0 auto;
}
.content {
float:right;
width:700px;
margin-right:100px;
background:#3399cc;
}
.left_sidebar {
float:left;
width:160px;
background:#336699;
}
.right_sidebar {
float:right;
width:100px;
background:#669999;
margin-right:-800px;
word-wrap:break-word;
}
Комментарии к статье