В инете | В интернете

Сен/09

27

Резиновая вёрстка Div, две колонки (2 столбца)

Верстая очередной раз довольно простую страницу DIV-ами неожиданно столкнулся с проблемой, на решение которой потратил довольно много времени.

Заданием было сверстать 2 колонки, причём, правая (#sidebar) имела фиксированную ширину (270px), а левая (#content) занимала всё остальное пространство, т.е. 100% – 270px.

two-div-verstka1

Казалось бы всё просто. 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, внутри которого делаем отступ слева, чтобы наполнение сайта было в видимой части экрана. Вот, примерно, что получается:

two-div-verstka2

В итоге имеем: валидную резиновую верстку DIV-ами в две колонки одинаковой высоты. Одна из которой имеет динамическую ширину, а другая фиксированная, причём, контент в коде находится перед сайдбаром.

RSS Feed

Комментарии (11) for Резиновая вёрстка Div, две колонки (2 столбца)

Олег | 29.09.2009 at 18:15

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

Но и на этом спасибо, теперь буду знать, где искать.

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

Ой.. от радости комментариев тут надобавлял! :) Все – пошел применять на практике )

Leave a comment!

«

»