Делаем «подвал»
Задача: сделать блок, всегда расположенный в нижней части страницы (именно такой блок называется подвалом или, говоря по-научному, нижним колонтитулом). При этом обойтись без таблиц.
Задача: сделать блок, всегда расположенный в нижней части страницы (именно такой блок называется подвалом или, говоря по-научному, нижним колонтитулом). При этом обойтись без таблиц.
Казалось бы, прижать подвал к низу окна проще простого: #footer {position:absolute; bottom:0;}. Но этот способ всё испортит в случае длинного текста на странице. Подвал прижимается к нижнему краю окна, а вовсе не его содержимого. И поэтому окажется где-то в середине длинной страницы. Учесть высоту всей страницы можно (и это довольно популярное решение), но я вместо этого предлагаю вообще отказаться от абсолютного позиционирования. Такой способ немного сложнее, зато гораздо надёжней в плане совместимости с браузерами.
Делаем на странице два блока: основной и подвал. А в стилях сразу же задаём высоту страницы и убираем отступы. Получается такой код:
Нам нужно растянуть первый блок на всю высоту окна. Причём использовать свойство height:100%; для этого мы не можем. Дело в том, что длинный текст, превышающий по высоте эти 100%, в соответствии со стандартами вылезает за пределы блока. К счастью, есть другое свойство, которое позволит блоку растянуться при длинном тексте и сохранить нужную нам высоту при коротком.
Есть одна проблема — IE6 свойство min-height не понимает. Но зато он неправильно использует height: растягивает блоки с длинным текстом, то есть ведёт себя именно так, как нам нужно. Напрашивается выход: подсунуть ему значение height, которое проигнорируют другие браузеры. Воспользуемся для этого хаком.
Пора переходить к подвалу. Обратите внимание на то, что его высота должна быть фиксированной. К счастью, практически всегда в подвале находится что-то постоянное (например, копирайт), и фиксированная высота неудобств не доставляет.
Высота всего содержимого страницы теперь на 30 пикселей больше высоты окна (100% основного блока + 30px подвала). Чтобы вместить всё в окно и убрать полосу прокрутки, нужно сдвинуть подвал вверх на эти самые 30px, то есть на расстояние, равное его высоте. Используем для этого отрицательный отступ у первого блока (если задать верхний отступ у самого подвала, могут возникнуть проблемы в IE).
Почти готово. Но не будем забывать, что подвал теперь расположен поверх основного блока и может закрыть то, что расположено в его нижней части. Поместим там пустой блок.
Высоту этого блока нужно сделать равной высоте подвала или чуть больше (в этом случае между содержимым страницы и подвалом останется промежуток). И последний штрих — на будущее. На странице могут встретиться плавающие блоки. Чтобы пустой блок располагался под ними, зададим ему свойство clear. Эта мера предосторожности позволит использовать подвал на всех страницах без изменений кода.