Dominic M. Liddell

When your content doesn't fill the page, the footer won't stay at the bottom of the page by default. 

There are a lot of solutions available to solve this with javascript, CSS tables, and using .fixed.  I don't like these hacky solutions that provide inconsistent results.  Using CSS flex, you can achieve the desired results consistently using only CSS.

First, add a class to your body. I prefer to use the site name for easier file searching. In this case, let's name it sample.


<body class="sample-body">
...
</div>

Next, wrap your content like so:


<body class="sample-body">
<div class="sample-content">
...
</div>
  <footer>
  ...
</footer>
</body>

In your CSS, add styles to display the body as a flex column using vertical-height:


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

then make sure that the content takes up the full column:


.sample-content {
flex: 1;
}