To make a <div> take up 100% of the browser window height, use one of these CSS methods:
1. Using Viewport Units (Modern & Recommended)
Set the height to 100vh (100% of the viewport height):
div {
height: 100vh;
}
Advantages:
- Works regardless of parent elements.
- No need to set heights on parent containers like
<html>or<body>.
2. Traditional Percentage Height
Set the <html> and <body> heights to 100%, then target the <div>:
html, body {
height: 100%;
margin: 0; /* Remove default margins */
}
div {
height: 100%;
}
3. Flexbox Method (For Full-Page Layouts)
Make the <body> a flex container:
body {
margin: 0;
min-height: 100vh;
display: flex;
}
div {
flex: 1; /* Fills remaining space */
}
Key Notes
- Reset Default Margins: Browsers add margins to
<body>, so setmargin: 0. - Viewport Units (
vh): 100vh= 100% of the viewport height.- Avoid
height: 100%unless parent heights are explicitly set. - Content Overflow: Use
min-height: 100vhif the content might exceed the viewport.
Full Example
<!DOCTYPE html>
<html>
<head>
<style>
body {
margin: 0; /* Remove default margins */
}
.full-height {
height: 100vh;
background: lightblue;
}
</style>
</head>
<body>
<div class="full-height"></div>
</body>
</html>
Common Issues & Fixes
| Issue | Solution |
|---|---|
| Scrollbars appear | Add overflow: hidden to <body> (use cautiously). |
| Parent containers not full height | Use 100vh instead of 100%. |
| Mobile browser quirks | Add height: -webkit-fill-available for Safari. |
Use 100vh for simplicity or Flexbox for complex layouts!