“Резиновая” ширина колонок + эмуляция высоты
Крайне редко мне доводится верстать полностью резиновые макеты, т.е. когда требуется “резиновая” ширина не только для самой страницы, но и для всех колонок (как правило, боковые колонки на моей практике бывают фиксированной ширины).
И вот недавно такой случай попался. И это меня немножко поднапрягло =) Пытался искать в Интернете решение похожей задачи, но совсем ничего не нашел.
Задача
- Полная “резина”: и ширины страницы, и ширины 2-х колонок (контент + сайдбар).
- Необходимость эмулировать одинаковую высоту колонок. У сайдбара фон в виде серого цвета. Нужно было сделать так, чтобы серый фон всегда тянулся до футера, независимо от количества содержимого в той или другой колонке.
В моем случае было исключено применение метода padding-bottom: 32767px; margin-bottom: -32767px по той простой причине, что я верстал под WordPress, а там используются ссылки-якори, и, в результате применения данной методики, при переходе по таким ссылкам в ряде браузеров с экрана прячется все, что находится до якоря.
Решение
Единственное, что я смог придумать - создать дополнительный пустой блок, который позиционировать абсолютно, придать ему 100% высоты и поместить под сайдбаром, задав соответствующий фон.
Разметка выглядит следующим образом:
1 2 3 4 5 6 7 8 9 | <div id="wrapper"> <div id="column"></div> <div id="header"></div> <div id="middle"> <div id="content"></div> <div id="sidebar"></div> </div><!-- #middle--> </div><!-- #wrapper --> <div id="footer"></div> |
Для дополнительного блока #column я написал следующие стили:
1 2 3 4 5 6 7 8 | #column { position: absolute; top: 0; right: 0; width: 39%; height: 100%; background: #E9E9E9; } |
В результате получилось то, что мне было нужно, за исключением одного момента. IE6 не умеет растягивать блок на 100% высоты родительского блока, если задано свойство position: absolute. Т.е., как обычно, потребовался костыль. И он был вставлен следующим образом:
1 2 | body {height: 100%} * html #column {height: 999%} |
Я указал высоту блоку #column не 100%, а значительно больше предполагаемой высоты всей страницы. А для того, чтобы в IE6 этот блок растягивался в принципе, потребовалось указать 100% высоту тегу body.
Пример
Результат, того, что у меня вышло.
В итоге остался единственный недочет - в IE6 мне не удалось “спрятать” ту часть блока #column, которая уходит под футер. Единственное решение, которая я вижу в такой ситуации - прижать “подвал” к нижнему краю окна браузера, однако это не всегда бывает необходимо.
P.S. Буду рад услышать от вас более элегантные варианты решения выше описанной задачи, если таковые имеются.
Обновление от 15.02.09
Благодаря помощи Сергея (за что выражаю ему благодарность), удалось довести макет до кроссбраузерного состояния. В вышеуказанном примере потребовалось сделать всего 3 изменения:
- Высоту блока в IE6 #column необходимо указать НЕ в процентах:
1* html #column {height: 9999em}
- Сам блок #column нужно перенести в конец контейнера #middle.
- Сайдбару #sidebar указать параметр z-index, чтобы он был выше слоя #column.
Тему можно считать закрытой. Все свободны =)
Люди, человеки!
Я конечно все понимаю, но за конструкцию
* {
margin: 0;
padding: 0;
}
руки отбивают
А в чем проблема?
А как насчет 2-х сайдбаров по бокам фиксированной ширины, а центральную сделать резиновой?
Сходите на http://csstool.ru/, там найдется такой.
Dimox! читаю вас с удовольствием и помощи между делом получить хочу, ткните ссылкой, примером на 3-x колонучную резину где центр фикс а сайдбары в процентах
с уважением Сергей.
Спасибо, Сергей.
Вот здесь есть несколько вариантов, может быть подойдут - http://www.cssplay.co.uk/layouts/three-column-layouts
Привет. Прочитал статью, комментарии. Но так и не нашел способа с прижатым подвалом к низу экрана. За основу я брал метод с position:absolute.
У меня с position:absolute тянется блок “column” в зависимости от контента. Больше никак. Так у всех?
Вам сюда.
Привет Dimox.
Подскажи как сделать резиновым шаблон. Я хочу сделать на wordpress блог картинок. В кратком описании (до кнопки подробнее ) я вставляю картинку маленького разрешения, а в подробном картинку в полном разрешении. Так при обычном шаблоне картинка вылезает из шаблона и смотрится очень тупо. Я хочу чтобы шаблон растягивался под картинку. Почему я хочу это сделать?
потому что я пробовал так делать на ucoz и гугл это очень хорошо оценил, но на ucoz это делать очень долго( я про заполнение alt и описаний к картинке).
Заранее спасибо.
А вот у меня на фоне сайта стоит картинка http://nlt-povolje.ucoz.org/ она не умещается в некоторые экраны как мне сделать чтобы он регулировался сам
Где-то на хабре однажды была статья об этом.
а где точнее