height: 100%;
- сложная вещь для веб-страниц, о которой вы, несомненно, прекрасно понимаете. Глядя на ваш код в Firefox 3.5.7, столбцы #sidebar
и #rightcontent
имеют только высоту около em
- этого достаточно, чтобы вместить текст, который вы в них вставили, а не всю длину страницы. надеясь на. Столбцы пытаются вычислить процентную высоту от явной высоты их родителя, но #wrap
также имеет высоту на основе%, что приводит к сбою (по крайней мере, в моем Firefox).
Теперь, как вы описали (правильная высота столбцов, за исключением дополнительной прокрутки в 40px), похоже, что происходит то, что любой используемый вами браузер передает полную высоту #wrap
как 100 % от это родитель, то есть <body>
. Поэтому, естественно, когда ваши столбцы имеют размер <body>
, который также включает высоту верхнего и нижнего колонтитулов, столбцы слишком высокие.
Уловка, которую я использовал пару раз, чтобы добиться полной длины страницы для отображения столбцов, которые масштабируются соответствующим образом для любого измерения страницы, чтобы прикрепить тег position: fixed; bottom: 0px;
<div>
внизу моей страницы с достаточной разметкой внутри него, чтобы имитировать структуру и соответствующие CSS столбцов.
Вот что я сделал с вашей страницей, чтобы получить этот эффект:
<!--Add this to your HTML-->
<div id='columnfooter'>
<div id='sidecont'></div>
<div id='rightcont'></div>
</div>
/* And modify your CSS like this */
#sidebar, div#sidecont {
width: 30%;
background: #ebebeb;
float: left;
}
#rightcontent, div#rightcont {
width: 70%;
background: #fff;
float: right;
}
div#rightcont, div#sidecont {
height:100%;
}
#footer {
width: 100%;
background: #414141;
height: 40px;
position: relative;
bottom: 0px;
}
div#columnfooter {
position: fixed;
z-index: -25;
bottom: 40px;
height: 100%;
background: #ebebeb;
width: 100%;
}
Да, использование HTML-кода для формирования пустых фоновых столбцов таким способом создает определенную смесь семантической и стилистической разметки - с технической точки зрения нет. Но CSS явно абстрагирован от HTML, и с этим кодом у меня есть полностраничные столбцы, #footer
внизу (даже если в любой столбец над ним добавлено больше страницы контента), и он ведет себя одинаково в последние версии Firefox, Safari, Opera, Chrome и IE8 в любом разрешении (протестировано до 800x600).
Надеюсь, это поможет!