如何将两个浮动 div 设置为页面的 100% 高度

Posted

技术标签:

【中文标题】如何将两个浮动 div 设置为页面的 100% 高度【英文标题】:How to set two floated divs to be the 100% height of the page 【发布时间】:2013-12-21 15:09:49 【问题描述】:

包装 div 中有两个不同高度的浮动 div。我需要它们都达到身体高度的 100%,即高度相同。还使用了clearfix。但是height:100% 似乎不起作用。如何做到这一点?

Demo

html

        <div class="wrapper">
            <div class="primary">
                <img src="http://demo1.opentaps.org/images/products/small/gis_computer_glen_rolla.png" />
            </div>
            <div class="secondary">
                <img src="http://demo1.opentaps.org/images/products/small/gis_computer_glen_rolla.png" />
            </div>
            <div class="clearfix">

            </div>
        </div>

CSS:

body 
    min-height: 100vh;
    background-color: green;
    margin: 0;


.wrapper
    background-color: blue;
  height: 100%;


.primary
    float: left;
    width: 80%;
    height: 100%;
    background-color: yellow;


.primary img
    height: 100px;
    width: 100px;


.secondary
    float: right;
    width: 20%;
    background-color: red;
  height: 100%;


.secondary img
    height: 500px;
    width: 100px;


.clearfix
    clear: both;

【问题讨论】:

检查jsbin.com/UzOjUPiL/2这个 【参考方案1】:

您需要做的就是将 100% 的高度添加到 html 和 body 标签,如下所示:

html, body 
   height: 100%;

演示:

http://jsbin.com/EsOfABAL/1/

【讨论】:

如果页面有滚动条,红色和黄色背景被破坏:) 我试过了,但是当其中一列的高度大于视口时,此方法会失败。【参考方案2】:

如果您想使用 vh 单位(在您的代码中看到),它确实更容易,无需担心“遗产”并且看到您的列停止在窗口的 100% 高度。

如果混合使用 faux-column 和 clear fix 的方法,只需要设置一次 min-height:100vh;在浮动元素上。

必须在包装器中绘制黄色背景,在非浮动元素中绘制红色背景,使用 clearfix 方法拉伸。

body 
  margin: 0;

.wrapper
  background-color: yellow;
  overflow:hidden;

.primary
  float: left;
  width: 80%;  
  min-height:100vh;

.wrapper .primary img
  height: 100px;
  /* width:1000px; */
  width: 100px;


.secondary .overflow
  margin-left:80%;
  background-color: red;

.overflow:after 
  content:'';
  height:0;
  display:block;
  clear:both;

.secondary img
  height: 500px;
  /*height:100px;*/
  width: 100px;

取消注释图像的高度值,以检查页面的行为和绘图,滚动与否。 http://codepen.io/anon/pen/chHtK

希望这有助于您了解 vh(或 vw)单位的使用,对于 faux-column 和 clearfix 方法,这只是对旧方法的提醒:)

享受

【讨论】:

很遗憾,它现在工作正常。我认为这是 codepen 本身的一个小问题。我需要调整输出窗口的大小才能看到它的实际效果。 我想实现这样的布局(dl.dropboxusercontent.com/u/77212526/layout.jpg)。我可以使用假列来做到这一点吗? 我相信你可以,使用背景图像作为图像或线性渐变,(无需遗憾,很好:))【参考方案3】:

html 元素也需要 100% - 试试这个:

html  height: 100%; 
body 
    height: 100%;
    background-color: green;
    margin: 0;

【讨论】:

以上是关于如何将两个浮动 div 设置为页面的 100% 高度的主要内容,如果未能解决你的问题,请参考以下文章

如何设置div铺满

将 Fixed div 设置为父容器的 100% 宽度

我如何将p标签放在两个div下?

如何并排放置div

css 如何实现两个div占满全屏

如何让两个div并列显示在页面首次加载后宽度正好100%