Верстка 3 колоночного, резинового макета.+прижимаем футер
Категории:HTML-верстка, Для начинающих
Теги: 3 колонки, css, html
31-05-2010
Ну вот, наконец-то я вернулся к теме моего блога HTML-верстке. Что-то понесло меня на блоггинг =). Хотя вышло даже не плохо…Получил первый раз для своего блога больше 130 посетителей за сутки. Потом меня надоумило написать про болезни людей, которые за компьютером много сидят… Но вот, наконец-то, я образумился и вернулся к родной тематике. Эта статья повествует о следующем:
Как сделать 3 колонки с помощью CSS
Как сделать резиновый 3-х колоночный макет
Как прижать footer к низу окна браузера, даже если на странице очень мало контента.
Знаю, тема уже раскрыта =) но, повторение – мать учение!Начнем со структуры HTML:
1 2 3 4 5 6 | <div id="container"> <div id="left">Левый сайдбар</div> <div id="right">Правый сайдбар</div> <div id="center">Контент</div> </div> <div id="footer">футтер</div> |
Далее перейдем к css. Здесь не все так просто как в html:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | html, body{ margin:0px; padding:0px; height:100%; width:100%; } #container{ position:relative; margin:auto 0 -50px; \*ставим блок по середине и отсчитываем -50px высоты футтера*\ height:100%; min-height:100%; height:auto !important; } #left{ position:relative; width:200px; height:100%; min-height:100%; height:auto !important; background-color:#999999; float:left; } #right{ position:relative; width:200px; height:100%; min-height:100%; height:auto !important; background-color:#999999; float:right; } #center{ background-color:#CCC; height:100%; min-height:100%; height:auto !important; width:auto; } #footer{ position:relative; clear:both;\*очистка от float с обеих сторон*\ width:100%; height:50px; background-color:#9999CC; border-top:1px solid #333333; } |
Вот и вся магия =). Этот пример очень хорош в использовании. Теперь Вас не затруднит создать 3 колонки в Вашей верстке и при это сделать кроссбраузерный резиновый макет с прибитым к низу окна браузера футтером. Пример можно посмотреть здесь!
Если Вам понравилась статья и Вы хотите следить за обновлениями в блоге, то подписывайтесь через RSS, становитесь моим фолоувером в twitter. Так же, возможно, Вы хотите разместить постовые или любые другие виды рекламы. В таком случае пишите мне на ICQ:451240340
Если Вы хотите чтобы Ваше строительство проходило на должном уровне, обратитесь в МГБТЭ! Они проведут надзор за строительством Вашего проекта наилучше.
Вы знаете где будет проходить Евро-2012 в Донецке? Все новости об этом и многом другом на сатей города Донецк по адресу – http://donetsk.prostogorod.com/. Узнай свой город лучше вместе с сайтом!
Похожие статьи:


все просто и понятно)
когда будет верстка макета из конкурса?
А как себя ведут блоки при большом количестве текста и большой разнице в высоте блока. Допустим высота #left стала занимать более одного экрана. При этом footer идет вниз, или остается, накрывая часть sidebar-а?
>когда будет верстка макета из конкурса?
Да вот никак не собирусь с мыслами =)) Дизайн уже есть, а вот текст урока, что бы не запинаться, я все никак не могу надумать, все времени нету…
>А как себя ведут блоки при большом количестве текста и большой разнице в высоте блока. Допустим высота #left стала занимать более одного экрана. При этом footer идет вниз, или остается, накрывая часть sidebar-а?
Футер будет идти вниз на высоту сайдбара.
Почему?
Отвечаю: контентная часть и сайдбар заключены в блок container, и высота этого блока генерируется исходя из САМОГО длинного блока, а остальные блоки(к примеру правый сайдбар и контент) просто тянутся до футера. Это очень отличное решение. убивает сразу не одноги не двух зайцев =)
Спасибо за статью. Только у меня не совсем получилось. Резина получилась нормально. Вот только колонки располагаются одна под другой по мере порядка в html.
Вот код центрально части:
#content {
position:relative;
height:100%;
min-height:100%;
height:auto !important;
float: left;
margin: 0px 400px 0px 400px;
}
width: 100%; пришлось убрать, так как для меня не понятно почему, слеваа область контента сместилась на 400 пикселей, а справа все равно прилипла к правому краю экрана.
Вот код правого сайдбара:
#sidebar {
width: 220px;
padding: 0 10px 0 40px;
float: right;
margin-right: 80px;
position:relative;
height:100%;
min-height:100%;
height:auto !important;
}
Вот код левого сайдбара:
#left {
float: left;
width: 230px;
margin-left: 120px;
padding-right: 30px;
position:relative;
height:100%;
min-height:100%;
height:auto !important;
}
РАсположение блоков:
Контент
Левый сайдбар,
Правый сайдбар.
Блоки пробовал располагать в разной последовательности. Не помогает. Все равно блоки располагаются один под другим, а не паралельно.
Подскажите, в чем моя ошибка?
Для начала уберите идентификатор у блока content.
Затем переставьте блок content после блока sidebar, т.е. в самый конец.
Спасибо. Все получилось. С блока content убрал флоаты, и все стало на место.
[...] своем блоге я уже писал про верстку трех колоночного сайта, но здесь немного другой принцып. Эти колонки больше [...]
Это конечно все здорово, вот только IE6 шлет такое нафиг, так что незачет.
Может что-то неправильно делаете?
Куда надо поцеловать, чтобы Вас отблагодарить?
Да не надо никуда) На здоровье =)))
Проверь свой пример – у тебя в html а в css #center, поэтому и РАБОТАЕТ!!!! В #center стоит width: 100%; из-за этого и не работает у многих людей – блок съезжает вниз. То есть для блока #center не нужны стили совсем. Из – за этой ошибки 2 часа потерял!!!
див съелся и з пердидущего поста – должно быть : у тебя [div id=”cener”>в html а в css #center
Знал это давно. Забыл исправить. Спасибо, что напомнил. Уже исправлено. Там для блока просто не надо ставить какой-либо параметр width. Или же поставить просто значение auto и убрать позиционирование relative.
PS: И не надо нервничать. Надо было внимательно свой код писать. Если разбираешься – понял бы сразу!
IE 7 не раотает
Спасибо.
Но нельзя ли сделать так, чтобы содержимое боковых колонок (например, левой) выравнивалось по низу содержимого центральной и наоборот? Т.е., чтобы была возможность привязать боковые элементы оформления не к футеру, а к низу центральной части.
Таких статей в инете 95% и все одно и тоже, нормальных уроков толком нет, как и эта статья, вы браузер уменьшите и увеличьте и посмотрите как блоки друг на друга полезут, короче гавно а не урок
Возможно, ты просто что-то не так делал. У меня все работает нормально, а если ты говноисполнитель, то здесь уже ничего не поделаешь!
Первый раз ощетинился написать сайт слоями,
очень здорово помог этот пост разобраться с высотой колонок. Огромное спасибо. Ссылочку обязательно размещу, тока руки дойдут.