Вопрос действительно популярен, но как-то я и не думал о нем писать. Информации много на эту тему и писать еще что-то, я не видел смысла. Но меня попросили, поэтому не могу отказать, возможно еще кто-то воспользуется теми способами, которые помогают мне.
Способ №1
В принципе, данный способ простенький, да как и все остальные 🙂 Его суть в том, что все блоки независимы. Шапка, контент и подвал все являются родительскими блоками и никто не вложен друг в друга.
<html>
<body>
<head></head>
<div id="header">Содержимое шапки</div>
<div id="content">Содержимое контента</div>
<div id="footer">Содержимое подвала</div>
</body>
</html>
Далее задаем стили. Обязательно html,body задать высоту в 100% и определить подвалу абсолютное позиционирование. В то же время, контенту задать отступ padding равный высоте подвала, ну или немного больше. Кому-то это может показаться минусом, потому как Высота подвала должна быть определена заранее. Многих такой вариант не устроит. Для остальных, нужно добавить стили:
html,body{height: 100%}
body{
min-height: 100%;
height: auto !important;
height: 100%;
position: relative;
margin:0;
padding:0;
font:15px Tahoma;
color:#555;}
#header{
height:150px;
background:#ccc;}
#content{
padding-bottom:200px;
height:100%;}
#footer{
height:200px;
width:100%;
position:absolute;
bottom:0;
background:#333;}
Способ №2
По своей сути, способ такой же как и первый, но тут все блоки заключены в родительский контейнер.
<html>
<body>
<div class="wrapper">
<div class="header">Содержимое шапки</div>
<div class="content">Содержимое контента</div>
<div class="footer">Содержимое подвала</div>
</div>
Стили будут следующими:
* {
margin: 0;
padding: 0;
}
html,
body {
height: 100%;
}
.wrapper {
position: relative;
min-height: 100%;
}
.header {
height: 150px;
background:#ccc;
}
.content {
padding-bottom: 90px;
}
.footer {
position: absolute;
background:#333;
left: 0;
bottom: 0;
width: 100%;
height: 80px;
}
Есть еще много способов, но именно эти два меня всегда выручают. Все зависит от того какая структура, используется ли контейнер или нет.
На этом все, спасибо за внимание. 🙂