Как закрепить футер на дне страницы: CSS решения

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для того чтобы фиксировать подвал на странице, рекомендуется использовать CSS Flexbox. Для контейнера .container следует установить свойства display: flex;, flex-direction: column; и min-height: 100vh;. Затем, для .footer примените margin-top: auto;, что позволит подвалу аккуратно расположиться в нижней части страницы.

CSS
Скопировать код
body {
  margin: 0; /* Обнуляем отступы */
}

.container {
  display: flex; /* Создаем гибкую структуру */
  flex-direction: column; /* Располагаем элементы вертикально */
  min-height: 100vh; /* Минимальная высота равна высоте вьюпорта */
}

.footer {
  margin-top: auto; /* Здесь вступает в действие магия Flexbox */
}

Структура HTML:

HTML
Скопировать код
<div class="container">
  <!-- Здесь подразумевается место для содержимого -->
  <footer class="footer">Представитель нижнего уровня</footer>
</div>

Таким образом, подвал сохранит свою позицию внизу страницы, независимо от количества контента и размеров экрана.

Создание гибкой и предсказуемой структуры

Использование фиксированного позиционирования для "липких" подвалов

Как быстрая альтернатива, вы можете использовать position: fixed;, и подвал надежно закрепится в нижней части экрана.

CSS
Скопировать код
.footer {
  position: fixed; /* Подвал как приклеенный */
  bottom: 0; /* Фиксация снизу */
  left: 0; /* К началу слева */
  right: 0; /* Без отступов справа */
  height: 50px; /* Задаем высоту */
}

Не забудьте задать элементу <body> достаточный отступ, чтобы содержимое страницы не перекрывало подвал.

Использование адаптивного дизайна

Flexbox способствует упорядоченности, когда размеры экранов варьируются. Примените свойство flex-grow для класса .content, чтобы подвал оставался на своем месте даже при небольшом количестве содержимого.

CSS
Скопировать код
.content {
  flex: 1 0 auto; /* Позволяем контенту растягиваться */
}

Подготовка ко всем сценариям

Абсолютное позиционирование требует детального планирования. При задании position: relative; для контейнера можно контролировать движение подвала по оси z-index.

Невидимый союзник, .footer-ghost, имитирует пространство подвала и предотвращает его нежелательное наложение на содержимое:

CSS
Скопировать код
.footer-ghost {
  display: block;
  height: 50px; /* Высота соответствует высоте подвала */
}

Определенный «призрачный» элемент обеспечивает стабильность верстки и не вредит пользовательскому опыту.

Визуализация

Подвал на веб-странице — это как незаменимая записка Пост-Ит, которую всегда нужно держать в поле зрения:

Markdown
Скопировать код
Рабочее пространство (🖥): [Клавиатура (⌨), Монитор (💻), Записка (📝)]

Сценарий 1: Организованный стол (🖥📂)
⌨💻👇 Открытое пространство стола
📝⬛⬛⬛⬛⬛⬛ Край стола (ваш 'пост-ит' крепко прикреплен)

Сценарий 2: Загроможденный стол (🖥🗑)
⌨💻👇...... Бумаги разбросаны везде
⬛⬛⬛⬛⬛📝⬛ Край стола (записка все равно присутствует)

В разработке сайтов мы применяем CSS для фиксации подвала следующим образом:

CSS
Скопировать код
footer {
  position: absolute; /* Фиксируем подвал */
  bottom: 0;  /* Всегда внизу, на виду */
  width: 100%; /* Занимает всю ширину экрана */
}

Проверьте, что содержимое страницы (body) не мешает подвалу оставаться видимым:

CSS
Скопировать код
body {
  min-height: 100vh; /* Страница всегда имеет необходимый размер */
  position: relative; /* Определяет позиционирование элементов внутри */
}

Так, независимо от объема содержимого (нашего рабочего стола), подвал (записка) всегда останется видимым.

Доступность и окончательная отстройка

Обеспечение адаптивности к контенту

Веб-страница — она как живое существо, она постоянно эволюционирует и меняется. Применяя min-height: 100vh; для контейнера и Flexbox, вы повышаете пользовательский комфорт.

Кросс-браузерная совместимость

Все пользователи заслуживают идеального отображения, и Flexbox помогает преодолеть возникающие различия между браузерами. Проверьте поддержку свойств и, при необходимости, добавьте вендорные префиксы.

Тестирование макета

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

Визуальные примеры

Для демонстрации и наглядного представления вашего решения используйте платформы типа jsFiddle или CodePen .

Полезные материалы

  1. Sticky Footer, Five Ways | CSS-Tricks
  2. position – CSS: Cascading Style Sheets | MDN
  3. A Complete Guide to Flexbox | CSS-Tricks
  4. Understanding Flexbox: Everything you need to know
  5. CodePen: Fixed Footer Examples