There are three solutions to this problem:
In all the examples below, I have an exclusively basic HTML template using only three divs: title, content, and footer. All options are minimized, but should work fine on more advanced websites.
- Using Background Background
Set the body and footer to the same background color.
body { margin: 0px; font-family: Arial; line-height: 20px; background-color: red; } #header { height: 20px; background: #222; color: white; } #content { background: gray; height: 200px; } #footer { height: 20px; background: red; color: white; }
<div id="header"> Header </div> <div id="content"> Content </div> <div id="footer"> Footer </div>
- Using a sticky footer
Use the sticky footer that snaps to the bottom of the browser window. (I would not recommend this option because many users don't like sticky footers. However, you can use a sticky header)
body { margin: 0px; font-family: Arial; line-height: 20px; } #header { height: 20px; background: #222; color: white; } #content { height: 2000px; } #footer { position: fixed; width: 100%; bottom: 0; left: 0; height: 20px; background: #222; color: white; }
<div id="header"> Header </div> <div id="content"> Content </div> <div id="footer"> Footer </div>
- Using minimum height for content
Set the minimum height for div content equal to the height of the browser windows minus the height of the header and footer. (This is my personal favorite because it runs a cross browser and responds to all screens)
body { margin: 0px; font-family: Arial; line-height: 20px; } #header { height: 20px; background: #222; color: white; } #content { min-height: calc(100vh - 40px); } #footer { height: 20px; background: #222; color: white; }
<div id="header"> Header </div> <div id="content"> Content </div> <div id="footer"> Footer </div>
source share