Добрый вечер. Помогите, пожалуйста, разобраться со следующей проблемой.
Нужно сверстать трехколоночный макет (два сайдбара по бокам основного контента 168px-464px-168px). Почему-то левая колонка и основной контент располагаются на одном уровне, тогда как правая колонка располагается над футером, поэтому создается впечатление, что она съехала вниз. Проблема решается добавлением свойства position (значения relative для обертки и absolute для внутренних дивов), но в этом случае футер всплывает наверх почему-то.
Вот div-разметка страницы:
<header id="header" > <!-- шапка сайта -->
</header>
<div id="basic">
<div id="left_column"> <!-- левая колонка -->
</div>
<div id="article_wrapper"> <!-- средняя колонка -->
</div>
<div id="right_column"> <!-- правая колонка -->
</div>
</div>
<footer> <!-- подвал сайта -->
</footer>
</div>
Так выглядит css:
margin: 0 auto;
width: 800px;
overflow: hidden;
}
header{
width: 800px;
}
#basic{
position: relative;
margin: auto;
width: 100%;
}
#left_column{
width: 168px;
position: absolute;
}
#article_wrapper{
margin-left: 168px;
width: 464px;
position: absolute;
}
#right_column{
margin-left: 632px;
width: 168px;
position: absolute;
}
footer{
font-size: 10px;
color: #aaa;
background: #fff;
}
UPD Задача решена. Вот решение: в див-разметке можно убрать обертку basic, а css оформляется следующим образом:
margin: 0 auto;
width: 800px;
font-family: Arial;
}
header{
width: 100%;
}
#left_column{
width: 168px;
float: left;
}
#article_wrapper{
margin-left: 168px;
margin-right: 168px;
}
#right_column{
width: 168px;
float: right;
}
footer{
font-size: 10px;
color: #aaa;
background: #fff;
}
И вот еще другой вариант решения, с оберткой basic (она потребуется для дальнейшего растягивания сайдбаров до футеров по этому уроку http://matthewjamestaylor.com/blog/equal-height-columns-cross-browser-cs...):
margin: 0 auto;
width: 800px;
font-family: Arial;
}
header{
width: 100%;
}
#basic{
float: left;
width: 100%;
}
#left_column{
width: 21%;
float: left;
}
#article_wrapper{
width: 58%;
float: left;
}
#right_column{
width: 21%;
float: left;
}
footer{
clear: both;
font-size: 10px;
color: #aaa;
background: #fff;
}
Комментарии
для фикс ширины верстки можно так:
margin: 0 auto;
width: 800px;
}
#left_column{
margin: 0;
width: 168px;
float: left;
}
#article_wrapper{
margin: 0;
width: 464px;
float: left;
}
#right_column{
margin: 0;
width: 168px;
}
#footer{
font-size: 10px;
color: #aaa;
background: #fff;
}
div basic нафиг не нужен
sg85, так не получается. Футер висит на одном уровне с основным контентом, а правая колонка под левой.
Почему-то правая колонка воспринимается как отдельный блок типа футера и располагается над футером соответственно. Левая колонка и основной контент располагаются на одном уровне.
ну так их можно запихнуть в один див
т.е. див с футером выводить внутри дива article_wrapper последним, т.е. перед закрытием родительского тега.
З.Ы. Футеру имеет смысл задать высоту, если он, конечно, не является динамическим
<div id="header" > <!-- шапка сайта -->
</div>
<div id="left_column"> <!-- левая колонка -->
</div>
<div id="article_wrapper"> <!-- средняя колонка -->
<div id="footer"> <!-- подвал сайта -->
</div>
</div>
<div id="right_column"> <!-- правая колонка -->
</div>
</div>