5 способов создать прилипающий футер

5 способов создать прилипающий футер

От автора: главная задача прилипающего футера «прилипать» к нижней части окна браузера. Если на странице много контента, то футер должен прилипать строго к нижней границе экрана. Если же контента слишком мало, чтобы пододвинуть футер вниз, опять же требуется его туда опустить.

Отрицательный нижний margin у блока-обертки

Есть блок-обертка, в котором находятся все блоки кроме футера. Данному блоку назначен отрицательный нижний margin, равный высоте футера.

В данном методе требуется дополнительный элемент в контенте (с классом .push), чтобы отрицательный margin не притянул футер и не перекрыл область текста. Добавить блок push было довольно умным решением, так как у него нет никаких нижних отступов. Если бы и у этого блока был бы свой отступ, его бы пришлось учесть в отрицательном margin’е.

Отрицательный верхний margin на футере

В этой технике не нужен блок push, но тут требуется добавить дополнительный блок-обертку вокруг контента, у которого задан нижний padding. Это сделано для того, чтобы из-за отрицательного margin’а футер не поднимался вверх.

Обе техники похожи, так как в них требуется добавить дополнительный HTML элемент.

Функция calc() уменьшающая высоту обертки

Один из способов отказаться от дополнительной разметки это настроить высоту блока-обертки с помощью функции calc(). В таком случае не будет перекрытия, два элемента стыкуются и образуют высоту в 100%.

Обратите внимание на 70px в функции calc() и 50px фиксированной высоты футера. Тут мы учитываем, что у футера есть нижний margin в 20px. Из общей высоты необходимо вычесть высоту футера и его нижний внешний отступ. Также мы используем единицы измерения vw, чтобы не задавать 100% высоты body, пока не задано 100% высоты блока обертки.

Flexbox

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

Можно даже добавить хедер сверху или что-то еще. Flexbox можно использовать двумя способами:

flex: 1 на дочернем элементе для заполнения пространства (контента в нашем случае).

Или margin-top: auto для сдвига дочерних элементов как можно дальше друг от друга (или любом другом направлении margin’а).

Сетка

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

Демо должно работать в Chrome Canary и Firefox Developer Edition. По идее, его можно портировать под старую версию сетки для Edge:

Автор: Chris Coyier

Источник: //css-tricks.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии (1)