27
Резиновая вёрстка Div, две колонки (2 столбца)
11 Comments | Posted by admin in Веб-разработка
Верстая очередной раз довольно простую страницу DIV-ами неожиданно столкнулся с проблемой, на решение которой потратил довольно много времени.
Заданием было сверстать 2 колонки, причём, правая (#sidebar) имела фиксированную ширину (270px), а левая (#content) занимала всё остальное пространство, т.е. 100% – 270px.

Казалось бы всё просто. HTML:
<div id="main">
<div id="sidebar"></div>
<div id="content"></div>
</div>
CSS-код:
#main {
overflow:hidden;
}
#sidebar {
width:270px;
float:right;
}
#content{
margin-right:270px;
}
Но было ещё одно условие: в HTML-коде правый фиксированный DIV должен находиться после левого. То есть DIV с контентом должен находится раньше сайдбара в коде – для лучшей поисковой индексации непосредственно самого контента:
<div id="main">
<div id="content"></div>
<div id="sidebar"></div>
</div>
Решить проблему старым путём не удаётся. Интернет предлагает только предыдущий вариант верстки дивами в две колонки. Пришлось напрячься:
<div id="main">
<div id="content">
<div id="cont"></div>
</div>
<div id="sidebar"></div>
</div>
Как видно, появился новый элемент – div#cont. Теперь посмотрим на CSS и поймём, зачем он нужен:
#content {
float:left;
margin-left:-270px;
width:100%;
}
#sidebar {
float:right;
width:270px;
}
#cont {
margin-left:270px;
}
Что мы делаем? DIV#content отодвигаем влево ровно на 270px, чтобы влез сайдбар справа от него и вставляем в него же DIV#cont, внутри которого делаем отступ слева, чтобы наполнение сайта было в видимой части экрана. Вот, примерно, что получается:

В итоге имеем: валидную резиновую верстку DIV-ами в две колонки одинаковой высоты. Одна из которой имеет динамическую ширину, а другая фиксированная, причём, контент в коде находится перед сайдбаром.
Комментарии (11) for Резиновая вёрстка Div, две колонки (2 столбца)
Олег | 29.09.2009 at 18:15
atriplex | 22.10.2009 at 20:54
Полезная статья: я тоже чуть было не перешёл на таблицы.
Jane | 29.10.2009 at 11:30
Спасибо, очень помогло
admin | 29.10.2009 at 14:39
Очень рад, что помог
Profdesigner | 02.11.2009 at 13:02
Хорошая вещь!
Алексей | 15.08.2010 at 21:27
Как раз то, что искал. Спасибо.
Новости | 08.02.2011 at 16:37
Давно искал решение с резиновыми дивами!
Несколько дней ломал голову, а тут, вот оно – решение, валидное, да еще и без таблиц!
FRiX | 10.02.2011 at 23:38
Огромное спасибо! 2 часа мчался, уже хотел писать на таблице.
Виталий | 18.02.2011 at 20:16
Спасибо за решение!
AVAV | 28.03.2011 at 22:49
О спасибо тебе Велики!
Долго же я изобретал велосипед – пока не наткнулся на твою статью… огромное спасибо! ))))
AVAV | 28.03.2011 at 22:52
Ой.. от радости комментариев тут надобавлял!
Все – пошел применять на практике )

Недавно верстал под wordpress или joomla, уже не помню, и стояла точно такая же задача, решил таблицами. Без таблиц не выходило.
Попалась бы эта статья раньше, было бы супер!
Но и на этом спасибо, теперь буду знать, где искать.