Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как прижать футер к низу страницы CSS?

Создание сайтовПродвижение сайтовCss
Анонимный вопрос
  · 40,9 K
Seo-оптимизатор  · 23 сент 2018  · rotgar.ru

Прижать footer бывает не такой легкой задачей, с которой сталкиваются веб-разработчики в процессе создания сайта. Чаще всего они приходят к различным костылям, которые в самый неподходящий момент имеют свойство падать. Парадокс в том, что есть готовое решение, которое подойдет любому проекту, о котором мало кто знает.
На самом деле, каждый верстальщик встречался с проблемой, которая чаще всего встаёт уже ближе к завершению создания первой страницы сайта. Когда всё казалось бы идеально и никаких проблем не предвещает — футер всегда испортит картину. При чём, в зависимости от разных задач, возлагаемых на footer, он всё равно будет работать не так, как хотелось бы. Если проблемы внутри него можно решить, не потратив много времени, но вот с позиционированием его часто встречаются проблемы, которые требуют не понятно чего.
Проблемы, которые возникают у футера сайта, имеют такие неприятные особенности, как:

  • footer не прижимается к низу страницы;
  • footer «отлипает» от низа страницы, при наличие небольшого наличия контента;
  • footer «прилипает» к странице контента, в следствие чего образуется «пустырь» в самом низу страницы.


Все эти проблемы встречались верстальщикам и находили свои решения, но общего, увы, мало кто мог предоставить. Давайте разберемся, как правильно прижать footer к низу страницы с помощью CSS и сформулировать общие правила при его создании.
Для начала создадим типичную структуру самого простого сайта:
<div class="page">
<div class="header">
<!-- Содержимое шапки -->
</div>
<div class="content">
<!-- Содержимое области контента -->
</div>
<div class="footer">
<!-- Содержимое футера -->
</div>
</div>

Классическая структура:

  • page — весь документ я объединил в один блок, на деле можете использовать любой другой, если это может нарушать какие-либо правило или структуру документа;
  • header — шапка сайта, в которой часто содержится меню, логотип и прочее;
  • content — область контента (информация, которая содержится на странице);
  • footer — наш подвал сайта, в котором часто содержится копирайт, логотип, контакты, меню.

После того, как документ готов — можно переходить, непосредственно, к заданию правил для наших элементов с помощью CSS3:
html,
body {
height: 100%;
}
.page {
min-height: 100%;
position: relative;
}
/* Правила для шапки */
.header {
background: #AB1857;
height: 70px;
}
/* Правила для контента */
.content {
padding-top: 30px;
padding-bottom: 50px;
}
/* Правила для подвала сайта */
.footer {
position: absolute;
bottom: 0;
width: 100%;
height: 120px; /* Высота блока footer */
background: rgba(14,14,14,0.95);
}

Таким образом, мы получаем универсальное правило для того чтобы прижать footer к низу страницы, при любых случаях. Как видно из примера, для его создания не требуется большое количество правил и не составляет большого труда. Давайте выделим ключевые моменты в правилах, которые необходимо применить вам:

  • height: 100% для html, body. С помощью этого мы даём указания браузеру, что страница должна располагаться на всю высоту;
  • padding-bottom для контента. Таким образом мы задаём отступ от футера;
  • position: absolute. С помощью него мы задаем абсолютную позицию футеру, не зависящую от других блоков;
  • bottom: 0. Обнуляем отступ снизу;
  • width: 100%. Задаём ширину футера по всей ширине страницы;
  • height: 120px. Задаём высотку блока подвала;

Остальные правила я написал для наглядности, так как большая часть из них у вас скорей всего уже должна быть.

Как только высота подвала становится "плавающей" то подвал становится поверх контента. Вариант плохой

Егор, можно добавить padding-bottom равный высоте подвала для .page, чтобы это место не занимал контент

хрень какую то написал.... Мог бы сразу сказать, что это не работает, и не тратить время людей.....

сколько воды, боже...

Автор ответа не захлебнулся там в своей же воде?

< Frontend-разработчик /> "Это не похоже на настоящее описание" - сказал мне валидатор...  · 23 нояб 2018
Как только Вы задаете элементу свойство position : absolute, Вы выдергиваете его отрисовку из общей последовательности. То есть если у Вас будет большая страница, Вам придется ручками регулировать ее высоту, чтобы не возникло "залезания футера на контент". В наше время вполне уже можно сделать так: <body style="display: flex; flex-direction: column; height: 100%... Читать далее
Илья, да, работает, но дело в том, что стандартная структура страницы body header main footer А у вас получается... Читать дальше
Вопрос старый как мир и решений много, среди них: 1. Выбить из потока подвал с помощью абсолютного или фиксированного позиционирования. 2. Задать общему контейнеру min-height: 100vh и контейнеру, который находится между подвалом и шапкой сайта задать flex-grow больше, чем у соседей. Родительский контейнер при этом должен быть флексовым, да. 3. Или рассчитывать на calc()... Читать далее
Первый
Музыка, компьютеры, кино, хендмейд, программирование  · 15 нояб 2019
Решил проблему вот таким костылем) Можно конечно поиграться и с помощью @media задать разные параметры высоты под разные экраны. Но меня в целом этот вариант устроил. Можно конечно задать высоту подвала в %, но тогда в моем случае придется переделывать весь подвал. Так он чуть скрывается за пределами экрана. <div class="wrapper"> <header> <!--ШАПКА--> </header> <main> <... Читать далее
Полный комплекс онлайн-решений для бизнеса  · 9 авг 2019
Просто нужно задать минимальную высоту контентной части, вот и все. Например: Схематически у Вас сайт разделен на 3 основных блока .header, .content и .footer. Прописываете на .content {min-height:800px;}, 800px – подменяйте на свое значение и вуаля. > И еще один вариант, к родителю прописать: > display: flex; > justify-content: space-between; > flex-direction: column; Читать далее
это тоже не самый лучший вариант, так как на странице не всегда будет много контента, даи мониторы у всех разные... Читать дальше
it-специалист, инженер человеческих душ, мечтаю о basic income.   · 25 февр 2019

Футер или "подвал" сайта прижимают к низу страницы с помощью правил каскадных стилей CSS. Но сейчас вся верстка идет в стандарте HTML5, а там предусмотрен функциональный тег <footer>. Так что задачу можно решить, обернув "подвал" в специальный тег и встроив его в верстку.

ах если бы всё так просто было

Я пользуюсь flex. Этот инструмент позволяет создать разметку страницы без каких либо костылей. <!DOCTYPE HTML> <html lang="ru"> <head> <meta charset="utf-8"> <title>Строим сайт на flex-box'е</title> <style type="text/css"> html, body { height: 100%; display: flex; flex-direction: column; margin: 0; } #pagewrap { height: 100%; display: flex; flex-direction: column; justi... Читать далее
Первый
Я сыграл с футером так: сделал ему абсолютное позиционирование, bottom:0; фиксированную высоту 350px. У обертки (в моем случае body) задал min-height: calc(100vh - 350px) и position: relative; padding-bottom: 350px; Если высота футера динамичная, можно сделать через переменную, типа :root { --footer-height: 350px; } body{ position: relative; min-height: calc(100vh - var... Читать далее
Первый

Лепим футер к низу на 0px, а перед ним подставляем нужной высоты блок, чтобы прокручивался до конца контент...

<div class="otstup"></div>

<div class="lepim"></div>

.otstup{padding-bottom: 50px;float:center;width:100%;height:50px;background:none;}

.lepim{position: fixed; bottom: 0; float:center;width:100%;height:50px;}

Первый
Можно воспользоваться простым вариантом: CSS: .people { position: relative; } .footer { position: absolute; bottom: 0; } HTML: <div class="people" > <div class="footer" > Фуфутерррр </div > </div > Читать далее

Футер же залазить на контент будет :/