Попробуйте это:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Fixed Header/Full Page Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body,
div {
margin: 0;
padding: 0;
}
body {
/* Disable scrollbars and ensure that the body fills the window */
overflow: hidden;
width: 100%;
height: 100%;
}
#header {
/* Provide scrollbars if needed and fix the header dimensions */
overflow: auto;
position: absolute;
width: 100%;
height: 200px;
}
#main {
/* Provide scrollbars if needed, position below header, and derive height from top/bottom */
overflow: auto;
position: absolute;
width: 100%;
top: 200px;
bottom: 0;
}
</style>
</head>
<body>
<div id="header">HEADER</div>
<div id="main">
<p>FIRST</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>MAIN</p>
<p>LAST</p>
</div>
<!--[if lt IE 7]>
<script type="text/javascript">
var elMain = document.getElementById('main');
setMainDims();
document.body.onresize = setMainDims;
function setMainDims() {
elMain.style.height = (document.body.clientHeight - 200) + 'px';
elMain.style.width = '99%'
setTimeout("elMain.style.width = '100%'", 0);
}
</script>
<![endif]-->
</body>
</html>
По сути, вы делаете удаление полос прокрутки из тела и применение полос прокрутки к элементам внутри документа. Это просто. Хитрость заключается в том, чтобы получить размер #main
, чтобы заполнить пространство под заголовком. Это достигается в большинстве браузеров, устанавливая позиции top
и bottom
и оставляя height
неустановленным. В результате верхняя часть div фиксируется под заголовком, а нижняя часть div всегда будет растягиваться до нижней части экрана.
Конечно, там всегда есть IE6, чтобы удостовериться, что мы зарабатываем наши зарплаты. До версии 7 IE не получал измерения из конфликтующих абсолютных позиций. Некоторые люди используют выражения CSS css для решения этой проблемы для IE6, но эти выражения буквально вычисляются при каждом перемещении мыши, поэтому я просто изменяю размер #main
div в событии resize и скрываю этот блок javascript от другие браузеры используют условный комментарий.
Линии, устанавливающие ширину на 99%, и setTimeout, чтобы установить его на 100%, исправляют небольшую странность рендеринга в IE6, из-за которой горизонтальная полоса прокрутки иногда появляется при изменении размера окна.
Примечание. Вы должны использовать тип документа и вывести IE из режима причуд.