css, html, php, javascript, jQuery, ajax … – решения, примеры, рецепты
15 Янв
Следующий шаг – создание «резинового» макета страницы из трех колонок. Как и в случае макета с двумя колонками сначала создадим HTML-разметку, которую будем в дальнейшем форматировать. По-моему это даже проще, чем одноколоночный макет…
Итак, зададим HTML-разметку:
<div id="header"> ... шапка страницы ... </div> <div id="sidebar"> ... колонка меню ... </div> <div id="content"> ... основное содержимое страницы ... </div> <div id="otherbar"> ... колонка меню ... </div> <div id="footer"> ... подвал ... </div>
и отформатируем ее с помощью следующей таблицы стилей:
#content {
float:left;
width:50%;
background-color:#CCC;
}
#sidebar {
float:left;
width:30%;
background-color:#FFC;
}
#otherbar {
float:left;
width:20%;
background-color:#FFC;
}
#header {
background-color:#FCF;
text-align:center;
}
#footer {
clear:both;
text-align:center;
background-color:#CFF;
}
В этом решении все три колонки включены в плавающую модель, выравниваются по левому краю и суммарная их ширина не превышает 100%.
Однако следует очень внимательно относиться к полям, рамкам и отступам этих элементов, поскольку, если суммарная ширина колонок превысит 100%, то одна или две колонки будут расположены друг под другом.
Вот так легко и просто. Этот метод работает во всех популярных браузерах.
Отзывов (17) на «CSS: верстка “резинового” макета из трех колонок»
Спасибо, замечательная статья, и простым языком написана.
отлично! Спасибо
ты меня спас:)
А как лучше сделать чтобы блок sidebar был после content?
Тогда без внесения изменения в разметку не обойтись. Надо заключить content и sidebar в еще один div, которому задать float:left. Внутри него – для content прописать float:left, а для sidebar – float:right например.
З.Ы. Статья – это всего лишь простенький пример, демонстрирующий общие принципы, не более…
Такой вариант, казалось бы, правильный, но попробуйте его посмотреть в IE6 – там при изменении ширины колонки начнут скакать друг под друга… Соглашусь с Gennady – как общие принципы можно рассматривать, но не более того…
Я всё-таки попробую, так как если не ошибаюсь, то поисковики больше любят странички, где контент выше находится, особенно если меню большое.
Данные колонки можно реализовать и через таблицу. Но вот вопрос: какой из этих методов в браузере загружается быстрее – через CSS или через таблицы?
Забыл сказать, что данный блог действительно хорош.
Обращаюсь к автору: мне как новичку, очень это важно. Gennady, пожалуйста, в ближайшей новой статье приведите пример использования ajax без использования и с использованием jquery для следующей задачи:
- имеется страница. на страницу ajax-ом выводится таблица. данные в таблицу берутся из базы данных mysql. есть кнопка, при нажатии на которую удаляется какая либо запись в базе данных и таблица автоматически обновляется без перезагрузки страницы.
Собственного ума разобраться и вынуть нужное из различных примеров не хватает.
Руслан, через таблицу можно реализовать все что угодно и гораздо легче, чем использовать css для того, для чего они и задуманы… А быстрее будет верстка без таблиц, особенно если смотреть в любимом IE6.
на очередную статью – постараюсь учесть пожелания.
Что касается заказа
Gennady, спасибо за ответ.
ибо ему при создании web-страниц уделяется очень много времени.
Вы знаете, IE6 действительно любимый браузер
Сколько же времени упущено из-за этой войны браузеров. Хотя, может быть, благодаря именно этой войне и развиваются технологии…
Если внутри одной из колонок будет использоваться clear: left, то вся верстка поплывет
Здравствуйте, Геннадий!
У меня возник такой вопрос:
Как сделать так, чтобы блок «footer» находился всегда внизу страницы, т.е блоки content, sidebar и otherbar были всегда растянуты по высоте на (100%-(высота header) – (высота footer))) , даже если в них находится мало информации.
Заранее спасибо!
Здравствуйте!
У Вас тут в вопросе сразу два вопроса
Как «прибить» футер к нижней части – вопрос номер один. Ответ Вы легко найдете в ПС – решение не такое уж сложное и примеров есть масса.
Со второй частью сложнее – я не видел пока ни одного на 100% простого и рабочего (кроссбраузерного) варианта.
Для себя обычно решаю вопрос (к сожалению только при фикс.ширине) созданием картинки высотой в 1-2 пиксела и шириной по ширине макета и растягиваю ее вниз.
P.S. Кстати на основании примера из этой статьи такая штука не пройдет – статейка только для того, чтобы продемонстрировать принципы, не более того…
3 резиновых колонки это не сложно, а возможно ли сделать 2 колонки резиновые, а третия фиксированная? Если да, то как?
а мне наоборот нужно сверстать 2 колонки фиксированные, а центральная резиновая. кто знает подскажите…
Спасибо огромное, статья очень пригодилась для выполнения домашнего задания для курса верстки!
Оставьте отзыв