У многих начинающих html-верстальщиков во все времена вылезал неприятный «баг», связанный с футером. Суть его в том что этот самый «футер» (aka «подвал» или «нижний колонтитул») не был прижат к нижней части области просмотра браузера.
Решали эту проблему разными костылями с position:fixed, отрицательными значниеми margin-top или применением JS-кода.
В 2021 году с этим стало гораздо проще.
Простой пример, базовой структуры страницы:
<!doctype html> <html> <head> <style> header { background-color: lightgrey; } footer { background-color: darkgrey; } </style> </head> <body> <header> <h1>Header.</h1> </header> <article> <h1>Main content.</h1> </article> <footer> <h1>This is Footer.</h1> </footer> </body> <html>
Выглядеть это будет вот так (скриншот сделан в форм-факторе «mobile-first» для удобства, от полноразмерной страницы тут никаких отличий).
С появлением полноценной поддержки браузерами flexbox-верстки, решить проблему прижатия футера к низу страницы при малом количестве контента, стало намного проще.
В CSS-стили добавляем селектор body, задающий минимальную высоту и определяющий body как flex-контейнер с порядком следования дочерних блоков в виде колонки.
body { min-height: 100vh; display: flex; flex-direction: column; }
У селектора footer задаем свойство margin-top со значением auto.
Все очень просто, если не считать того что о нормальном отображении в древних браузерах (типа IE 10, Opera 12) можно забыть. Частично спасут vendor-префиксы -ms-, -o-, -webkit-, но доля этих верси браузеров настолько мала (если вобще есть), что ей можно пренебречь.