Problem
When building a website I often want to make sure the footer sticks to the bottom of the page. Even when there isn't enough content to fill the entire page.
Solution
The following example shows how to setup your HTML and CSS so that the footer sticks to the bottom of the page if the page content is short.
HTML
<div class="wrapper-root">
<div class="wrapper-content">...</div>
<footer class="footer">...</footer>
</div>
CSS
.wrapper-root {
display: flex;
min-height: 100vh;
flex-direction: column;
}
.wrapper-content {
flex: 1;
}
There are a few things going on:
- Set the
min-height
of the page to the view-height (browser window height) - Split the page into 2 sections:
- Content
- Footer
- Set the content section to auto-expand (
flex: 1
)
Details
I love Bulma CSS. However, the main issue I come across when using it is the footer showing half-way up the page when the page is mostly empty. The solution above fixes that issue.
This approach ensures the footer is always show either a) at the bottom of the content (if the content extends beyond the screen), or b) at the bottom of the screen (if the content is smaller than the screen).
The footer will not always be fixed at the bottom of the browser window.This code should work for any HTML and CSS code you write, however, I have only used it with Bulma.
Note
When I first implemented this, the page was not rendering correctly. I found the problem was how I was defining the .container
class. My code looked like:
<div class="wrapper-root">
<div class="wrapper-content container">
...
</div>
<footer class="footer"></footer>
</div>
But it should have been:
<div class="wrapper-root">
<div class="wrapper-content">
<div class="container">...</div>
</div>
<footer class="footer"></footer>
</div>
Make sure you don't apply the custom .wrapper-content
style and Bulma's .container
style to the same div
element.