208

I have been using the twitter bootstrap framework for quite a while now and they recently updated to version 3!

I'm having trouble getting the sticky footer to stick to the bottom, I have used the starter template supplied by the twitter bootstrap website, but still no luck, any ideas?

Uwe
  • 41,420
  • 11
  • 90
  • 134
Brad Fletcher
  • 3,547
  • 3
  • 27
  • 42
  • 31
    official example: http://getbootstrap.com/examples/sticky-footer-navbar/ – ptim Oct 10 '13 at 04:47
  • 3
    @memeLab why does the official example not have anything about the body margin-bottom: -60px? Or did I miss it...? – ganders Feb 27 '14 at 16:05
  • Added a [CSS only solution](/questions/17966140/twitter-bootstrap-3-sticky-footer/41402667#41402667) allowing variable height for sticky footer. Linked it here as, being new answer, it's at the bottom of the page. – tao Dec 30 '16 at 23:12

26 Answers26

197

just add the class navbar-fixed-bottom to your footer.

<div class="footer navbar-fixed-bottom">
Jon
  • 6,437
  • 8
  • 43
  • 63
155

Referring to the official Boostrap3 sticky footer example, there is no need to add <div id="push"></div>, and the CSS is simpler.

The CSS used in the official example is:

/* 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;
  /* Negative indent footer by its height */
  margin: 0 auto -60px;
  /* Pad bottom by footer height */
  padding: 0 0 60px;
}

/* Set the fixed height of the footer here */
#footer {
  height: 60px;
  background-color: #f5f5f5;
}

and the essential HTML:

<body>

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

      <!-- Begin page content -->
      <div class="container">
        
      </div>
    </div>

    <div id="footer">
      <div class="container">
       
      </div>
    </div>
</body>

You can find the link for this css in the sticky-footer example's source code.

<!-- Custom styles for this template -->
<link href="sticky-footer.css" rel="stylesheet">

Full URL : https://getbootstrap.com/docs/3.4/examples/sticky-footer/sticky-footer.css

BenG
  • 17
  • 3
tkymtk
  • 2,695
  • 3
  • 21
  • 37
  • 21
    The HTML & CSS in the official sticky-footer example is now quite different from what is described here e.g. no 'wrap' div used anymore. – IanB Mar 26 '14 at 01:28
53

Here is a method that will add a sticky footer that doesn't require any additional CSS or Javascript other than what's already in Bootstrap and won't interfere with your current footer.

Example here: Easy Sticky Footer

Just copy and paste this directly into your code. No fuss no muss.

<div class="navbar navbar-default navbar-fixed-bottom">
    <div class="container">
      <p class="navbar-text pull-left">© 2014 - Site Built By Mr. M.
           <a href="http://tinyurl.com/tbvalid" target="_blank" >HTML 5 Validation</a>
      </p>

      <a href="http://youtu.be/zJahlKPCL9g" class="navbar-btn btn-danger btn pull-right">
      <span class="glyphicon glyphicon-star"></span>  Subscribe on YouTube</a>
    </div>
</div>
anataliocs
  • 10,427
  • 6
  • 56
  • 72
  • 4
    Very nice and quick. Can be responsive as well. But there's a need to add some additional space at the bottom of the page content so that it's not hidden by the footer. The space should have the height equal to the footer height. **Can you show how to best do that?** BTW *"doesn't require any CSS"* is technically wrong. It should be *"doesn't require any additional CSS other than Bootstrap classes"*. – ADTC Jun 27 '15 at 08:22
  • 1
    I love that this leverages what is existing in bootstrap. I couldn't get the other top answers to work but pasting this in my page and bam, sticky footer. Thanks! – haakon.io Jan 07 '17 at 15:38
34

In addition to the CSS you just added, remember you need to add the push div before closing the wrap div

The basic structure for the HTML is

<div id="wrap"> 
    page content here 
    <div id="push"></div>
</div> <!-- end wrap -->

<div id="footer">
    footer content here
</div> <!-- end footer -->

Live view
Edit view

mb21
  • 34,845
  • 8
  • 116
  • 142
David Taiaroa
  • 25,157
  • 7
  • 62
  • 50
  • If the page content is bigger than the available display, the footer will be pushed down. I would like the footer to really get sticked to the bottom (like navbar-fixed-bottom) – blueFast Jan 29 '16 at 19:11
  • hey @delavnog, would something like this work for you? http://codepen.io/panchroma/pen/wMXWpY . The only important bits for you are the HTML at line 647 and the CSS – David Taiaroa Jan 29 '16 at 19:39
  • @delavnog , same idea with minimal content on page http://codepen.io/panchroma/pen/JGZKqy – David Taiaroa Jan 29 '16 at 20:03
  • Thanks, that's great! Now, if I could get the main div centered vertically between nav and footer, that would be awesome! Editted your codepen: http://codepen.io/anon/pen/rxKMaW (I had to add a margin to the body, because the nav is eating up the top of the content) – blueFast Jan 29 '16 at 20:09
  • @delavnog , here's a start if the main body isn't too high. It would take more work though for longer content: http://codepen.io/panchroma/pen/vLrXMq – David Taiaroa Jan 29 '16 at 21:40
  • here's another technique using table cells which is very promising for all sizes of content and should work well cross-browser: http://codepen.io/panchroma/pen/yeEVJv – David Taiaroa Jan 29 '16 at 22:08
  • Thanks, great idea but unfortunately not working for long content: http://codepen.io/anon/pen/adKwqZ – blueFast Jan 30 '16 at 10:48
  • @delavnog, it seems my second example wasn't correctly saved, try it again now: http://codepen.io/panchroma/pen/yeEVJv – David Taiaroa Jan 30 '16 at 12:50
31

Here's the Sticky Footer simplified code as of today because they're always optimizing it and this is GOOD:

HTML

<!DOCTYPE html>
<html lang="en">
  <head></head>

  <body>

    <!-- Fixed navbar -->
    <div class="navbar navbar-default navbar-fixed-top" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Project name</a>
        </div>
        <div class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Nav header</li>
                <li><a href="#">Separated link</a></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </div>

    <!-- Begin page content -->
    <div class="container">
      <div class="page-header">
        <h1>Sticky footer with fixed navbar</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. A fixed navbar has been added with <code>padding-top: 60px;</code> on the <code>body > .container</code>.</p>
      <p>Back to <a href="../sticky-footer">the default sticky footer</a> minus the navbar.</p>
    </div>

    <footer>
      <div class="container">
        <p class="text-muted">Place sticky footer content here.</p>
      </div>
    </footer>

  </body>
</html>

CSS

/* Sticky footer styles
-------------------------------------------------- */
html {
  position: relative;
  min-height: 100%;
}
body {
  /* Margin bottom by footer height */
  margin-bottom: 60px;
}
footer {
  position: absolute;
  bottom: 0;
  width: 100%;
  /* Set the fixed height of the footer here */
  height: 60px;
  background-color: #f5f5f5;
}
Leniel Maccaferri
  • 100,159
  • 46
  • 371
  • 480
  • 1
    Perfect solution. That's what I was looking for. – Levimatt Oct 09 '15 at 13:51
  • 1
    Unfortunately this footer has size fixed. Sometimes, when footer is dynamic it can be bigger or smaller than its height in css. – 23W Nov 09 '16 at 10:38
29

I'm a bit late on the subject but I came across this post as I've just been bitten by that question and finally found a really easy way to get over it, simply use a navbar with the navbar-fixed-bottom class enabled. For example:

<div class="navbar navbar-default navbar-fixed-bottom">
  <div class="container">
    <span class="navbar-text">
      Something useful
    </span>
  </div>
</div>

HTH

iMil
  • 816
  • 9
  • 16
  • I like the simplicity and effectiveness of your answer, which by the way is an intelligent answer. Many answers to the same issue are full of jquery, and complicated stuff. Thanks man. – digitai Dec 13 '14 at 00:36
  • 1
    Its half a solution, you still need to take care of the overlaps of the content on your page if you resize it. – Baldráni Jun 10 '15 at 10:44
  • @Baldráni No its a full solution, overlaps work fine if you use Bootstrap row and col in the footer html (which is what you should do anyway) – tinmac Aug 04 '15 at 09:10
  • This is not a sticky footer. It's a fixed bottom navbar that's only suitable for navbar content, and overlaps the page content. – Carol Skelly Sep 06 '18 at 10:43
10

Here is my updated solution to this issue.

 /* Sticky footer styles
-------------------------------------------------- */
html {
  position: relative;
  min-height: 100%;
}


body {
  /* Margin bottom by footer height */
  margin-bottom: 60px;
}
.footer {
  position: absolute;
  bottom: 0;
  width: 100%;
  /* Set the fixed height of the footer here */
  height: 60px;
  background-color: #f5f5f5;

  border-top: 1px solid #eee;
  text-align: center;
}

.site-footer-links {
  font-size: 12px;
  line-height: 1.5;
  color: #777;
  padding-top: 20px;
  display: block;
  text-align: center;
  float: center;
  margin: 0;
  list-style: none;
} 

And use it like this:

<div class="footer">
 <div class="site-footer">
  <ul class="site-footer-links">
        <li>© Zee and Company<span></span></li>
  </ul>
 </div>

</div>

Or

html, body {
  height: 100%;
}
.page-wrap {
  min-height: 100%;
  /* equal to footer height */
  margin-bottom: -142px; 
}
.page-wrap:after {
  content: "";
  display: block;
}
.site-footer, .page-wrap:after {
  height: 142px; 
}
.site-footer {
  background: orange;
}
z atef
  • 7,138
  • 3
  • 55
  • 50
  • 4
    This is not a good solution because your footer is fixed which means that it overlaps page content (if any). Try adding a few `some text
    ` lines before the footer and size down the window.
    – jmarceli Nov 10 '14 at 15:28
  • @user2041318: yep thats horrible... thanks for pointing this up. – Sebastian Apr 09 '15 at 09:56
  • This has been corrected as per jmarceli comment. The footer is no longer fixed. – z atef Sep 06 '17 at 13:56
5

The sticky example doesn't work for me. My solution:

#footer {
  position: fixed;
  bottom: 0;
  width: 100%;
  height: 3em;
}
Kal
  • 2,098
  • 24
  • 23
Andi Giga
  • 3,744
  • 9
  • 38
  • 68
  • Simple, good old fashioned CSS. Job done. I find it amusing how convoluted some of the higher-rated answers are. Isn't Bootstrap supposed to make our lives easier? – Kal Apr 13 '20 at 13:26
2

The push div should go right after the wrap, NOT within.. just like this

<div id="wrap">
  *content goes here*
</div>

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

<div id="footer">
  <div class="container credit">
  </div>
  <div class="container">
    <p class="muted credit">© Your Page 2013</p>
  </div>
</div>
Igor Ivancha
  • 3,413
  • 4
  • 30
  • 39
Joseph
  • 31
  • 1
2

Simple js

if ($(document).height() <= $(window).height()) {
    $("footer").addClass("navbar-fixed-bottom");
}

Update #1

$(window).on('resize', function() {
    $('footer').toggleClass("navbar-fixed-bottom", $(document).height() <= $(window).height());
});
fdrv
  • 852
  • 1
  • 11
  • 21
2

Answered by the OP:

Add this to your CSS file.

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 -60px;
}

/* Set the fixed height of the footer here */
#push,
#footer {
  height: 60px;
}
#footer {
  background-color: #eee;
}

/* Lastly, apply responsive CSS fixes as necessary */
@media (max-width: 767px) {
  #footer {
    margin-left: -20px;
    margin-right: -20px;
    padding-left: 20px;
    padding-right: 20px;
  }
}
CodeCaster
  • 147,647
  • 23
  • 218
  • 272
2

I wanted a flexible sticky footer, which is why I came here. Top answers got me in the right direction.

The current (2 Oct 16) Bootstrap 3 css Sticky footer (Fixed size) looks like this:

html {
  position: relative;
  min-height: 100%;
}
body {
  /* Margin bottom by footer height */
  margin-bottom: 60px;
}
.footer {
  position: absolute;
  bottom: 0;
  width: 100%;
  /* Set the fixed height of the footer here */
  height: 60px;
  background-color: #f5f5f5;
}

As long as the footer has a fixed size, the body margin-bottom creates a push to allow a pocket for the footer to sit in. In this case, both are set to 60px. But if the footer is not fixed and exceeds 60px height, it will cover your page content.

Make Flexible: Delete the css body margin and footer height. Then add JavaScript to get the footer height and set the body marginBottom. That is done with the setfooter() function. Next add event listeners for when the page first loads and on resizing that run the setfooter. Note: If you footer has an accordion or anything else that triggers a size change, without a resize of window, you must call the setfooter() function again.

Run the snippet and then fullscreen to demo it.

function setfooter(){
 var ht = document.getElementById("footer").scrollHeight;
 document.body.style.marginBottom = ht + "px";
}

window.addEventListener('resize', function(){
  setfooter();
 }, true);
window.addEventListener('load', function(){
 setfooter();
}, true);
html {
  position: relative;
  min-height: 100%;
}
.footer {
  position: absolute;
  bottom: 0;
  width: 100%;
  
  /* additional style for effect only */
   text-align: center;
    background-color: #333;
    color: #fff;
}
  


body{
/* additional style for effect only not needed in bootstrap*/
  padding:0;
  margin: 0;
  }
<div>
  Page content
  <br>  <br>
  line 3
  <br>  <br>
  line 5
  <br>  <br>
  line 7
  
 </div>


<footer id="footer" class="footer">
      <div class="container">
        <p class="text-muted">Footer with a long text, so that resizing, to a smaller screen size, will cause the footer to grow taller. But the footer will not overflow onto the main page.</p>
      </div>
    </footer>
Sterner
  • 96
  • 4
2

This has been solved by flexbox, once and forever:

https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/

The HTML

<body class="Site">
  <header>…</header>
  <main class="Site-content">…</main>
  <footer>…</footer>
</body>

The CSS

.Site {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}

.Site-content {
  flex: 1;
}
Konstantin Schubert
  • 3,242
  • 1
  • 31
  • 46
1

To Summarize all of these, just keep one thing in your mind that everything except footer should have min-height: 100% or little less.

kshirish
  • 1,489
  • 3
  • 11
  • 12
1

I write my simplified sticky footer code with padding using LESS. This answer is probably off-topic because the question doesn't talk about padding, so if you're interested check this post for more details.

@footer-padding:      40px;  // Set here the footer padding
@footer-inner-height: 150px; // Set here the footer height (without padding)

/* Calculates the overall footer height */
@footer-height: @footer-inner-height + @footer-padding*2;

html {
 position: relative;
 min-height: 100%;
}
body {
 /* This avoids footer to overlap the page content */
 margin-bottom: @footer-height;
}
footer{
 /* Fix the footer on bottom and give it fixed height */
 position: absolute;
 bottom: 0;
 width: 100%;
 height: @footer-height;
 padding: @footer-padding 0;
}
Fred K
  • 13,249
  • 14
  • 78
  • 103
1

Based on Jek-fdrv's answer, I added an .on('resize', function() to make sure it works on every device and every resolution:

$(window).on('resize', function() {
    if ($(document).height() <= $(window).height()) {
        $('footer').addClass("navbar-fixed-bottom");
    } else {
        $('footer').removeClass("navbar-fixed-bottom");
    }
});
Community
  • 1
  • 1
iamchriswick
  • 380
  • 2
  • 8
  • 24
1

The current version of bootstrap doesn't seem to work for this function anymore. If you download their sticky-footer-navbar example and place a large amount of content in the main body area the footer will get pushed down past the bottom of the viewport. It isn't sticky at all.

CJ Catalano
  • 97
  • 1
  • 1
  • 10
1

Here is a CSS based solution for a fully responsive variable-height sticky footer.
Advantage: footer allows variable height, as height no longer needs to be hard-coded in CSS.

body {
  display: -webkit-box;
  display: -webkit-flex;
  display: -moz-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
     -moz-box-orient: vertical;
     -moz-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  min-height: 100vh;
}
body > * {
  -webkit-box-flex: 0;
  -webkit-flex-grow: 0;
     -moz-box-flex: 0;
      -ms-flex-positive: 0;
          flex-grow: 0;
}
body > nav + .container {
  -webkit-box-flex: 1;
  -webkit-flex-grow: 1;
     -moz-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
}



/* Reset CSS and some footer styling. Only needed on StackOverflow */
body {
  padding: 50px 0 0;
  margin: 0;
}
footer {
  background-color: #f8f8f8; 
  padding: 15px 0 5px; 
  border-top: 1px solid #e7e7e7;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<!DOCTYPE html>

     <!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Project name</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li role="separator" class="divider"></li>
                <li class="dropdown-header">Nav header</li>
                <li><a href="#">Separated link</a></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>

    <!-- Begin page content -->
    <div class="container">
      <div class="page-header">
        <h1>Responsive sticky footer of any height</h1>
      </div>
      <p class="lead">You can have a sticky footer of any height using this CSS. It's also fully responsive, no JavaScript needed.</p>
      
    </div>

    <footer class="footer">
      <div class="container">
        <p class="text-muted">Place sticky footer content here.</p>
        <p class="text-muted">And some more content.</p>
        <p class="text-muted">And more...</p>
      </div>
    </footer>

And here is the un-prefixed SCSS (for gulp/grunt):

body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  > * {
    flex-grow: 0;
  }
  > nav + .container {
    flex-grow: 1;
  }
}
tao
  • 82,996
  • 16
  • 114
  • 150
1

Just use flex! Make sure to use body and main in your HTML and it's one of the best solutions (unless you need IE9 support). It doesn't require a fixed height or similiar.

That's recommended for Materialize as well!

body {
    display: flex;
    min-height: 100vh;
    flex-direction: column;
}

main {
    flex: 1 0 auto;
}
kentor
  • 16,553
  • 20
  • 86
  • 144
1

Html

<footer class="footer navbar-fixed-bottom">
      <div class="container">
        <span class="text-muted">Place sticky footer content here.</span>
      </div>
    </footer>

CSS

.footer {
    position: fixed;
    bottom: 0;
}
vijoy
  • 21
  • 2
  • 8
  • Hello and welcome to SO! While this code may answer the question, providing additional context regarding how and/or why it solves the problem would improve the answer's long-term value. Please read the [tour](https://stackoverflow.com/tour), and [How do I write a good answer?](https://stackoverflow.com/help/how-to-answer) In addition, did you check that those solutions do not exist in the 25 other solutions to this question? – Tomer Shetah Jan 20 '21 at 11:24
0

in Haml & Sass words all that is necessary:

Haml for app/view/layouts/application.html.haml

%html
  %head
  %body
    Some  body stuff

    %footer
      footer content

Sass for app/assets/stylesheets/application.css.sass

$footer-height: 110px

html
  position: relative
  min-height: 100%

body
  margin-bottom: $footer-height

body > footer
  position: absolute
  bottom: 0
  width: 100%
  height: $footer-height

based on http://getbootstrap.com/examples/sticky-footer-navbar/

equivalent8
  • 13,754
  • 8
  • 81
  • 109
0

If yout want to use bootstrap build in classes for the footer. You should also write some javascript:

$(document).ready(function(){
  $.fn.resize_footer();

  $(window).resize(function() {
    $.fn.resize_footer();
  });
 });

(function($) {

  $.fn.resize_footer = function(){
    $('body > .container-fluid').css('padding-bottom', $('body > footer').height());
  };
 });

It will prevent content overlapping by the fixed footer, and it will adjust the padding-bottom when the user changes the window/screen size.

In the script above I assumed that footer is placed directly inside the body tag like that:

<body>
  ... content of your page ...
  <div class="navbar navbar-default navbar-fixed-bottom">
    <div class="container">
      <div class="muted pull-right">
        Something useful
      </div>
      ... some other footer content ...
    </div>
  </div>
</body>

This is definitely not the best solution (because of the JS which could be avoided), but it works without any issues with overlapping, it is easy to implement and responsive (height is not hardcoded in CSS).

jmarceli
  • 19,102
  • 6
  • 69
  • 67
0

#myfooter{
height: 3em;
  background-color: #f5f5f5;
  text-align: center;
  padding-top: 1em;
}
<footer>
    <div class="footer">
        <div class="container-fluid"  id="myfooter">
            <div class="row">
                <div class="col-md-12">
                    <p class="copy">Copyright &copy; Your words</p>
                </div>
            </div>
        </div>
    </div>
</footer>
Gpak
  • 3,342
  • 2
  • 21
  • 19
0

Here is a very simple and clean sticky footer you can use in bootstrap. Totally Responsive!

HTML

<body>
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="#">
        <img alt="Brand" src="">
      </a>
    </div>
  </div>
</nav>
    <footer></footer>
</body>
</html>

CSS

html {
    position: relative;
    min-height: 100%;
}
body {
    margin: 0 0 100px;
}
footer {
    position: absolute;
    left: 0;
    bottom: 0;
    height: 100px;
    width: 100%;
    background-color: red;
}

Example: CodePen Demo

Peter Girnus
  • 2,673
  • 1
  • 19
  • 24
  • This solution will shift the footer bar to right when opening bootstrap modal due to absolute positioning ! – thethakuri May 15 '16 at 14:58
0

You can simply try adding a class on your footer navbar:

navbar-fixed-bottom

Then create a CSS named custom.css and body padding like this..

body { padding-bottom: 70px; }
Ikram Ud Daula
  • 1,213
  • 14
  • 21
0

Using flexbox is the easiest way I have found, from the guys of CSS-tricks. This is true sticky-footer, it works when the content is < 100% of the page and > 100% of the page:

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

And CSS:

html {
  height: 100%;
}
body {
  min-height: 100%;
  display: flex;
  flex-direction: column;
}
.content {
  flex: 1;
}

Note that this is bootstrap-agnostic, so it works with bootstrap and without it.

bustawin
  • 684
  • 7
  • 11