简体   繁体   中英

Set height to 100% of browser viewport when container is bigger than viewport?

I'm working on a website and I need to set a div's height and width to cover the entire area of the browser viewport like many modern websites. However, I can't simply set its height to 100% because its parent element is another div whose height must be set to bigger than the browser window. Is there another way of doing this?

Here's a code sample set up similar to my website.

HTML

<div class="entireThing">
  <div class="contentBox">
  </div>
  <div class="contentBox">
  </div>
</div>

CSS

.entireThing {
    height: 8000px;
    width: 100%;
}
.contentBox {
    height: 100%; /*This works only if parent is same size as window*/
}

5.1.2. Viewport-percentage lengths: the 'vw', 'vh', 'vmin', 'vmax' units

The viewport-percentage lengths are relative to the size of the initial containing block. When the height or width of the initial containing block is changed, they are scaled accordingly.

Use viewport-percentage lengths. In this case, 100vh .

.contentBox {
    height: 100vh;
}

Updated Example


You can also use calc() to subtract the 10px top/bottom margins:

.contentBox {
    height: calc(100vh - 20px); /* Subtract the 10px top/bottom margins */
    margin: 10px;
    color: white;
    background-color: #222;
}

Updated Example

..it's just worth pointing out that you need to establish a new block formatting context on the parent element in order to prevent the collapsing margins .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM