Промывка нижнего колонтитула внизу страницы, начальная загрузка Twitter


306

Я в целом знаком с техникой очистки нижнего колонтитула с помощью CSS.

Но у меня возникли некоторые проблемы с получением такого подхода к загрузке Twitter, скорее всего, из-за того, что загрузчик Twitter по своей природе отзывчив. Используя загрузчик Twitter, я не могу заставить нижний колонтитул переместиться вниз страницы, используя подход, описанный в посте блога выше.


Прежде чем тестировать все ответы ниже, имейте в виду, что OP хочет, чтобы он работал с загрузчиком Twitter. Поскольку это не обязательно, загрузчик Twitter работает с Jquery, что означает, что он включен Javascript. По этой причине просто протестируйте мой ответ: stackoverflow.com / questions / 10099422 /…
— HenryW


1
Ссылка не работает! Может кто-нибудь исправить официальную ссылку на пример?
— PassionInfinite

1
@PassionInfinite getbootstrap.com/docs/4.0/examples/sticky-footer-navbar это может стать более старой версией в будущем из-за 4.0, я думаю.
— Аммад Халид

Ответы:


324

Найденные фрагменты здесь работают очень хорошо для начальной загрузки

Html:

<div id="wrap">
  <div id="main" class="container clear-top">
    <p>Your content here</p>
  </div>
</div>
<footer class="footer"></footer>

CSS:

html, body {
  height: 100%;
}

#wrap {
  min-height: 100%;
}

#main {
  overflow:auto;
  padding-bottom:150px; /* this needs to be bigger than footer height*/
}

.footer {
  position: relative;
  margin-top: -150px; /* negative value of footer height */
  height: 150px;
  clear:both;
  padding-top:20px;
} 

Это лучшее решение, которое я пробовал до сих пор. Принято это как ответ.
— Кэлвин Ченг

Привет, я реализовал этот метод, он отлично работает, но теперь у меня есть некоторые проблемы с отображением страницы на iphone (страница увеличена). Есть идеи, в чем проблема? Вот некоторые подробности: stackoverflow.com/questions/18621090/…
— pupadupa

94
На всякий случай, если вы прочитали этот ответ и не прокручивали его, стоит посмотреть другие ответы
— MattyW

4
особенно этот: stackoverflow.com/questions/10099422/…
— HenryW

1
Это лучший метод, который я нашел для Bootstrap. Для отзывчивости устройства не забывайте использовать медиазапросы для обновления высоты #main и .footer для экрана разных размеров
— SyntaxGoonoo

467

Теперь это включено в Bootstrap 2.2.1.

Bootstrap 3.x

Используйте компонент navbar и добавьте .navbar-fixed-bottomкласс:

<div class="navbar navbar-fixed-bottom"></div>

Bootstrap 4.x

<div class="navbar fixed-bottom"></div>

Не забудьте добавить body { padding-bottom: 70px; }или иначе содержание страницы может быть покрыто.

Документы: http://getbootstrap.com/components/#navbar-fixed-bottom


35
@ChuanYeong К сожалению нет navbar-static-bottom.
— Лоуренс Вудман

25
@MikeCurry он спросил не о фиксированном нижнем колонтитуле, а о том, который «заполняет» пустое пространство, если на вашей странице недостаточно содержимого, чтобы нижний колонтитул оставался внизу. Если ваш нижний колонтитул носит исключительно информационный характер, фиксированный занимает только ценное пространство.
— 13

22
Это не липкий нижний колонтитул, потому что он используется position: fixed; что не правильно
— Фуркат У.

9
Да, это решение только сбрасывает на нижнюю часть окна просмотра, а не внизу страницы. т.е. нижний колонтитул всегда виден.
— RISM

3
Пришлось преуменьшить ответ, потому что это дает путаницу. ОП не хочет липкий нижний колонтитул.
— HenryW

77

Рабочий пример для Twitter-бутстрапа NOT STICKY FOOTER

<script>
$(document).ready(function() {

    var docHeight = $(window).height();
    var footerHeight = $('#footer').height();
    var footerTop = $('#footer').position().top + footerHeight;

    if (footerTop < docHeight)
        $('#footer').css('margin-top', 10+ (docHeight - footerTop) + 'px');
});
</script>

Версия, которая всегда обновляется, если пользователь открывает окно devtools или изменяет размеры.

<script>
    $(document).ready(function() {
        setInterval(function() {
            var docHeight = $(window).height();
            var footerHeight = $('#footer').height();
            var footerTop = $('#footer').position().top + footerHeight;
            var marginTop = (docHeight - footerTop + 10);

            if (footerTop < docHeight)
                $('#footer').css('margin-top', marginTop + 'px'); // padding of 30 on footer
            else
                $('#footer').css('margin-top', '0px');
            // console.log("docheight: " + docHeight + "\n" + "footerheight: " + footerHeight + "\n" + "footertop: " + footerTop + "\n" + "new docheight: " + $(window).height() + "\n" + "margintop: " + marginTop);
        }, 250);
    });
</script>

Вам нужен хотя бы элемент с #footer

Если вам не нужна полоса прокрутки, если контент помещается на экран, просто измените значение с 10 на 0.
Полоса прокрутки появится, если контент не помещается на экран.


9
Да, я тоже пошел с этим. CSS может быть иногда настолько глупым. Не то чтобы это невозможно, но решения общего назначения могут быть сложными, и исправление таких надоедливых вещей в наших макетах не должно включать в себя операции по обмену стека, многократные пересмотры сущности, тестирование между браузерами и возможную сдачу простому JS обмануть. Да, я чувствую себя немного грязно, но, по крайней мере, это работает.
— meecect

3
каждое решение, на которое я смотрел, неверно. Это ЕДИНСТВЕННЫЙ, который на самом деле делает то, что должен делать - прикрепляет нижний колонтитул к нижней части страницы, не закрывая контент, если размер браузера изменен.
— Дейв

13
это не сработало так, как ожидалось для меня, тем не менее, один из лучших ответов, я исправил свою проблему, заменив $('#footer').height();на$('#footer').outerHeight();
— DarkMukke

3
Отличный ответ! У меня была пара адаптаций, которые, я думаю, улучшают это здесь: stackoverflow.com/a/36385654/8207
— Кори

6
Лучший ответ, который я нашел. Если вы хотите, чтобы он работал после изменения размера окна, просто поместите основной код из ответа внутрь $(window).resize(function() {//main code goes here});и вызовите его, $(window).resize();чтобы установить его при загрузке страницы.
— Шимон Садло

36

Вот как это сделать на официальной странице:

http://getbootstrap.com/2.3.2/examples/sticky-footer.html

Я только что проверил это прямо сейчас, и это работает здорово! :)

HTML

<body>

    <!-- Part 1: Wrap all page content here -->
    <div id="wrap">

      <!-- Begin page content -->
      <div class="container">
        <div class="page-header">
          <h1>Sticky footer</h1>
        </div>
        <p class="lead">Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.</p>
      </div>

      <div id="push"></div>
    </div>

    <div id="footer">
      <div class="container">
        <p class="muted credit">Example courtesy <a href="http://martinbean.co.uk">Martin Bean</a> and <a href="http://ryanfait.com/sticky-footer/">Ryan Fait</a>.</p>
      </div>
    </div>
</body>

Соответствующий код CSS это:

/* Sticky footer styles
-------------------------------------------------- */
html,
body {
    height: 100%;
    /* The html and body elements cannot have any padding or margin. */
}

/* Wrapper for page content to push down footer */
#wrap {
    min-height: 100%;
    height: auto !important;
    height: 100%;
    /* Negative indent footer by it's height */
    margin: 0 auto -30px;
}

/* Set the fixed height of the footer here */
#push,
#footer {
    height: 30px;
}

#footer {
    background-color: #f5f5f5;
}

/* Lastly, apply responsive CSS fixes as necessary */
@media (max-width: 767px) {
    #footer {
        margin-left: -20px;
        margin-right: -20px;
        padding-left: 20px;
        padding-right: 20px;
    }
}

7
Спасибо за публикацию, это было определенно лучшее решение (не говоря уже о единственном, который работал) для моего конкретного проекта, и, конечно, приятно, что оно прямо из самого проекта.
— Кори В.

1
Я не знаю, в чем заключалась сделка, но я не мог заставить ее работать, не добавив прокрутку к страницам. Я закончил тем, что изменил CSS .wrapper так, чтобы минимальная высота была «calc (100% - 120px)», где 120px - высота моего нижнего колонтитула, и удалил <div id = "push"> </ div> из html так как он, кажется, ничего не делает, кроме добавления высоты к странице, которая мне не нужна.
— jammyman34

36

Для Sticky Footer мы используем два DIV'sв HTML для базового эффекта липкого нижнего колонтитула . Напишите так:

HTML

<div class="container"></div>

<div class="footer"></div>

CSS

body,html {
    height:100%;
}
.container {
    min-height:100%;
}
.footer {
    height:40px;
    margin-top:-40px;
}

7
Он сказал, что использует Twitter Bootstrap. Что было бы самым простым способом интегрировать это в Bootstrap без полного переписывания HTML?
— Коди Грей

1
Если ОП хочет добиться эффекта липкого
— нижнего

Спасибо! Это был единственный метод, который на самом деле работал для меня на сайте ASP.NET MVC5, который использует Bootstrap. +1
— Янн Дюран


19

Ну, я нашел смесь navbar-innerи navbar-fixed-bottom

<div id="footer">
 <div class="navbar navbar-inner  navbar-fixed-bottom">
    <p class="muted credit"><center>ver 1.0.1</center></p>
 </div>
</div>

Вроде хорошо и у меня работает

введите описание изображения здесь

Смотрите пример в Fiddle


2
самое простое и элегантное решение. Остерегайтесь домашнего создания своего собственного кода CSS, поскольку он не будет обратно совместим с начальной
— загрузкой

Я использовал это, и у меня была проблема на старом андроиде (может быть, Фрой?) Со страницами, которые были короче экрана. В остальном это хорошо работало на FF, Chrome, IE11, iPhone,
— Nexus

Идеально и очень просто!
— ramires.cabral

18

В последней версии bootstrap 4.3 это можно сделать с помощью .fixed-bottomкласса.

<div class="fixed-bottom"></div>

Вот как я использую его с нижним колонтитулом:

<footer class="footer fixed-bottom container">
        <hr>
        <p>&copy; 2017 Company, Inc.</p>
</footer>

Вы можете найти больше информации в документации о положении здесь .


1
Это все еще работает с выпущенной официальной версией 4.
— Klewis

Обратите внимание, что пример по адресу getbootstrap.com/docs/4.1/examples/sticky-footer имеет стиль line-height = 60px для элемента нижнего колонтитула. Это не только не нужно, но и препятствует правильной работе нижнего колонтитула, если он является родителем одного или нескольких элементов div, что обычно имеет место.
— ScottyB

13

Ответ от HenryW хороший, хотя мне нужно было несколько настроек, чтобы все заработало так, как я хотел. В частности, следующее также обрабатывает:

  • Чтобы избежать «скачка» при загрузке страницы, сначала отметьте невидимое и настройку, видимую в javascript
  • Работа с браузером изменяет размер изящно
  • Кроме того, настройка нижнего колонтитула создает резервную копию страницы, если браузер становится меньше, а нижний колонтитул становится больше страницы
  • Настройки высоты функции

Вот что сработало для меня с этими настройками:

HTML:

<div id="footer" class="invisible">My sweet footer</div>

CSS:

#footer {
    padding-bottom: 30px;
}

JavaScript:

function setFooterStyle() {
    var docHeight = $(window).height();
    var footerHeight = $('#footer').outerHeight();
    var footerTop = $('#footer').position().top + footerHeight;
    if (footerTop < docHeight) {
        $('#footer').css('margin-top', (docHeight - footerTop) + 'px');
    } else {
        $('#footer').css('margin-top', '');
    }
    $('#footer').removeClass('invisible');
}
$(document).ready(function() {
    setFooterStyle();
    window.onresize = setFooterStyle;
});

11

Это сработало для меня отлично.

Добавьте этот класс navbar-fixed-bottom в нижний колонтитул.

<div class="footer navbar-fixed-bottom">

Я использовал это так:

<div class="container-fluid footer navbar-fixed-bottom">
<!-- start footer -->
</div>

И он устанавливает снизу по всей ширине.

Изменить: Это сделает нижний колонтитул всегда видимым, это то, что вы должны принять во внимание.


10

Вам нужно обернуть ваш .container-fluiddiv, чтобы ваш липкий нижний колонтитул работал, вам также не хватает некоторых свойств в вашем .wrapperклассе. Попробуй это:

Удалите padding-top:70pxиз вашего bodyтега и включите его в свой .container-fluid, например, так

.wrapper > .container-fluid {
    padding-top: 70px;
}

Мы должны сделать это, потому что нажатие bodyвниз, чтобы разместить навигационную панель, в конечном итоге толкает нижний колонтитул немного дальше (на 70 пикселей дальше) за область просмотра, поэтому мы получаем полосу прокрутки. Мы получаем лучшие результаты, .container-fluidвместо этого нажимая div.

Затем мы должны удалить .wrapperкласс за пределами вашего .container-fluiddiv и обернуть #mainего этим следующим образом:

<div class="wrapper">
    <div id="main" class="container-fluid">
        <div class="row-fluid">...</div>
        <div class="push"></div>
    </div>
</div>  

Ваш нижний колонтитул, конечно, должен быть вне .wrapperdiv, поэтому удалите его из div .wrapper и поместите его снаружи, вот так:

<div class="wrapper">
    ....
</div>
<footer class="container-fluid">
    ....
</footer><!--END .row-fluid-->

После того, как все это сделано, правильно подвиньте нижний колонтитул ближе к вашему .wrapperклассу, используя отрицательное поле, например:

.wrapper {
    min-height: 100%;
    height: auto !important; /* ie7 fix */
    height: 100%;
    margin: 0 auto -43px;
}

И это должно работать, хотя вам, вероятно, придется изменить несколько других вещей, чтобы заставить его работать при изменении размера экрана, например сбросить высоту в .wrapperклассе, например:

@media (max-width:480px) {
   .wrapper {
      height:auto;
   }
}

9

Это правильный способ сделать это с помощью Twitter Bootstrap и нового класса navbar-fixed-bottom: (вы не представляете, сколько времени я потратил на это)

CSS:

html {
  position: relative;
  min-height: 100%;
}
#content {
  padding-bottom: 50px;
}
#footer .navbar{
  position: absolute;
}

HTML:

<html>
  <body>
    <div id="content">...</div>
    <div id="footer">
      <div class="navbar navbar-fixed-bottom">
        <div class="navbar-inner">
          <div class="container">
            <ul class="nav">
              <li><a href="#">Menu 1</a></li>
              <li><a href="#">Menu 2</a></li>
            </ul>
          </div>
        </div>
      </div>
    </div>
  </div>
</body>
</html>

9

Используйте утилиты flex, встроенные в Bootstrap 4! Вот что я придумал, используя в основном утилиты Bootstrap 4.

<div class="d-flex flex-column" style="min-height: 100vh;">
  <header></header>
  <div class="container flex-grow-1">
    <div>Some Content</div>
  </div>
  <footer></footer>
</div>
  • .d-flex сделать основной div гибким контейнером
  • .flex-column на главном div, чтобы расположить ваши flex-элементы в столбце
  • min-height: 100vh в основной div, либо с атрибутом style, либо в вашем CSS, чтобы заполнить область просмотра по вертикали
  • .flex-grow-1 в контейнере элемент, чтобы основной контейнер содержимого занимал все пространство, оставшееся в высоте области просмотра.

Вместо того , чтобы min-height: 100vhв min-vh-100классе с Bootstrap можно использовать.
— икону

Это решение прекрасно работало в том числе мин-ОГО-100 предложения от @ikonuk
— TGR

4

Используйте компонент navbar и добавьте класс .navbar-fixed-bottom:

<div class="navbar navbar-fixed-bottom"></div>

добавить тело

  { padding-bottom: 70px; }

3

для обработки макетов с ограничением ширины используйте следующее, чтобы вы не получили закругленные углы, и чтобы ваша панель навигации была заподлицо с краями приложения

<div class="navbar navbar-fixed-bottom">
    <div class="navbar-inner">
        <div class="width-constraint clearfix">
            <p class="pull-left muted credit">YourApp v1.0.0</p>

            <p class="pull-right muted credit">©2013 • CONFIDENTIAL ALL RIGHTS RESERVED</p>
        </div>
    </div>
</div>

затем вы можете использовать css для переопределения классов начальной загрузки для настройки высоты, шрифта и цвета

    .navbar-fixed-bottom {
      font-size: 12px;
      line-height: 18px;
    }
    .navbar-fixed-bottom .navbar-inner {
        min-height: 22px;
    }
    .navbar-fixed-bottom .p {
        margin: 2px 0 2px;
    }

3

Вы можете использовать jQuery для обработки этого:

$(function() {
    /**
     * Read the size of the window and reposition the footer at the bottom.
     */
    var stickyFooter = function(){
        var pageHeight = $('html').height();
        var windowHeight = $(window).height();
        var footerHeight = $('footer').outerHeight();

        // A footer with 'fixed-bottom' has the CSS attribute "position: absolute",
        // and thus is outside of its container and counted in $('html').height().
        var totalHeight = $('footer').hasClass('fixed-bottom') ?
            pageHeight + footerHeight : pageHeight;

        // If the window is larger than the content, fix the footer at the bottom.
        if (windowHeight >= totalHeight) {
            return $('footer').addClass('fixed-bottom');
        } else {
            // If the page content is larger than the window, the footer must move.
            return $('footer').removeClass('fixed-bottom');
        }
    };

    // Call when this script is first loaded.
    window.onload = stickyFooter;

    // Call again when the window is resized.
    $(window).resize(function() {
        stickyFooter();
    });
});

2

Единственный, который работал на меня!

html {
  position: relative;
  min-height: 100%;
  padding-bottom:90px;
}
body {
  margin-bottom: 90px;
}
footer {
  position: absolute;
  bottom: 0;
  width: 100%;
  height: 90px;
}

2

Самым простым методом, вероятно, является использование Bootstrap navbar-static-bottomв сочетании с установкой основного контейнера div с помощью height: 100vh(новый процент просмотра порта CSS3 ). Это приведет к сноске нижнего колонтитула.

<main class="container" style="height: 100vh;">
  some content
</main>      
<footer class="navbar navbar-default navbar-static-bottom">
  <div class="container">
  <p class="navbar-text navbar-left">&copy; Footer4U</p>
  </div>
</footer>

2

Проверено с Bootstrap 3.6.6.

HTML

<div class="container footer navbar-fixed-bottom">
  <footer>
    <!-- your footer content here -->
  </footer>
</div>

CSS

.footer {
  bottom: 0;
  position: absolute;
}

1
#wrap {
min-height: 100%;
height: auto !important;
height: 100%;
width: 100%;
/*Negative indent footer by its height*/
margin: 0 auto -60px;
position: fixed;
left: 0;
top: 0;
}

Высота нижнего колонтитула соответствует размеру нижнего отступа элемента переноса.

.footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 60px;
}

1

Вот решение для новейшей версии Bootstrap (4.3 на момент написания) с использованием Flexbox.

HTML:

<div class="wrapper">
  <div class="content">
    <p>Content goes here</p>
  </div>
</div>
<footer class="footer"></footer>

CSS:

html, body {
  height: 100%;
}

body {
  display: flex;
  flex-direction: column;
}

.wrapper {
  flex-grow: 1;
}

И пример codepen: https://codepen.io/tillytoby/pen/QPdomR


1

В соответствии с примером Bootstrap 4.3 , в случае, если вы теряете здравомыслие, как я, это действительно работает:

  • Все родители нижнего колонтитула должны иметь height: 100%( h-100класс)
  • Прямой родитель нижнего колонтитула должен иметь display: flex( d-flexкласс)
  • Нижний колонтитул должен иметь margin-top: auto( mt-autoкласс)

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

Например, в моем случае с Angular я создал представление из отдельного корня приложения, основного компонента приложения и компонента нижнего колонтитула - все они добавили свой собственный элемент в DOM.

Итак, чтобы это работало, мне нужно было добавить классы к этим элементам-оберткам: дополнительные h-100, переместить d-flexодин уровень вниз и переместить mt-autoодин уровень вверх от нижнего колонтитула (так что на самом деле это уже не класс нижнего колонтитула, а мой <app-footer>пользовательский). элемент).


Я должен был поставить class="h-100"на <html>тег тоже.
— Кел

1

Используйте этот кусок кода в начальной загрузке, это работает

<div class="navbar fixed-bottom">
<div class="container">
 <p class="muted credit">Footer <a href="http://google.com">Link</a> and <a 
href="http://google.com/">link</a>.</p>
 </div>
 </div>

1

Bootstrap v4 + решение

Вот решение, которое не требует переосмысления структуры HTML или каких-либо дополнительных хитростей CSS, связанных с отступами:

<html style="height:100%;">
  ...
  <body class="d-flex flex-column h-100">
    ...
    <main class="flex-grow-1">...</main>
    <footer>...</footer>
  </body>
  ...
</html>

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

Почему это работает

  • style="height:100%;"заставляет <html>тег занимать все пространство документа.
  • класс d-flexустанавливает display:flexдля нашего <body>тега.
  • класс flex-columnустанавливает flex-direction:columnдля нашего <body>тега. Его дети ( <header>, <main>,<footer> и любой другой прямой ребенок) теперь выровнены по вертикали.
  • класс h-100устанавливает height:100%наш <body>тег, то есть он будет покрывать весь экран по вертикали.
  • класс flex-grow-1устанавливает flex-grow:1наш <main>, эффективно инструктируя его заполнить все оставшееся вертикальное пространство, таким образом, достигая 100% вертикальной высоты, которую мы установили ранее для нашего <body>тега.

Рабочая демонстрация здесь: https://codepen.io/maxencemaire/pen/VwvyRQB

См. Https://css-tricks.com/snippets/css/a-guide-to-flexbox/ для получения дополнительной информации о flexbox.


h-100класс не работает должным образом, лучше использовать min-vh-100.
— икону

@ikonuk Что именно вы подразумеваете под "не работает должным образом"? Пожалуйста, дополните.
— Катандракс

Потому что h-100класс всегда зависит от высоты родительских элементов и в некоторых случаях может не работать должным образом. Поскольку мы хотим, чтобы нижний колонтитул находился внизу области просмотра, было бы полезно использовать высоту области просмотра.
— икону

Опять же, определите «некоторые случаи». Ваш аргумент о родительской зависимости относится точно так же к min-width. Вот почему HTMLтег имеет height100% в коде. Этот пример работает, и я не понимаю, почему он не дал кросс-браузерную поддержку для heightсвойства CSS , что в конечном итоге и переводит фрагмент Bootstrap.
— Катандракс

Я не говорил, что твой пример не работает. Не все используют стиль в HTMLтеге. В моем случае ваше решение не сработало, так как я не предпочитаю использовать стиль в HTMLтеге. И я не хочу, чтобы bodyтег зависел от другого родителя, а от области просмотра. Не нужно ставить style="height:100%;"и h-100одновременно. Помещение min-vh-100в тело просто делает работу и меньше кода.
— икону

0

Похоже, что height:100%«цепь» разрывается на div#main. Попробуйте добавить height:100%к нему, и это может приблизить вас к вашей цели.


0

Здесь вы найдете подход в HAML ( http://haml.info ) с навигационной панелью вверху и нижним колонтитулом внизу страницы:

%body
  #main{:role => "main"}
    %header.navbar.navbar-fixed-top
      %nav.navbar-inner
        .container
          /HEADER
      .container
        /BODY
    %footer.navbar.navbar-fixed-bottom
      .container
        .row
          /FOOTER

Не могли бы вы подробнее рассказать о своем ответе? Ответы только на код, как правило, не рекомендуется.
— Qix - МОНИКА Плохо обращалась с

1
Хорошо, что ты хочешь знать?
— Ханнес

Мне не нужно это знать, но кто-то позже заходит на этот сайт, возможно, не знает точно, почему код вашего ответа делает то, что делает.
— Qix - МОНИКА Плохо обращалась с

Вероятно, я должен удалить это. Я написал новое вступление. :)
— Ханнес

0

Будь проще.

footer {
  bottom: 0;
  position: absolute;
}

Вам также может понадобиться сместить высоту нижнего колонтитула, добавив margin-bottomэквивалент высоты нижнего колонтитула в body.


0

Вот пример использования css3:

CSS:

html, body {
    height: 100%;
    margin: 0;
}
#wrap {
    padding: 10px;
    min-height: -webkit-calc(100% - 100px);     /* Chrome */
    min-height: -moz-calc(100% - 100px);     /* Firefox */
    min-height: calc(100% - 100px);     /* native */
}
.footer {
    position: relative;
    clear:both;
}

HTML:

<div id="wrap">
    <div class="container clear-top">
       body content....
    </div>
</div>
<footer class="footer">
    footer content....
</footer>

играть на скрипке



0

другое возможное решение, просто используя медиа-запросы

@media screen and (min-width:1px) and (max-width:767px) {
    .footer {
    }
}
/* no style for smaller or else it goes weird.*/
@media screen and (min-width:768px) and (max-width:991px) {
    .footer{
        bottom: 0;
        width: 100%;
        position: absolute;
    }
}
@media screen and (min-width:992px) and (max-width:1199px) {
    .footer{
        bottom: 0;
        width: 100%;
        position: absolute;
    }
}
@media screen and (min-width:1120px){
    .footer{
        bottom: 0;
        width: 100%;
        position: absolute;
    }
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.