我有一个有两列的布局 - 左div
和右div
。
右边的div
有一个灰色的background-color
,我需要它根据用户浏览器窗口的高度垂直展开。现在, background-color
在该div
的最后一段内容结束。
我试过height:100%
, min-height:100%;
等等
有几个 CSS3 测量单位称为:
从以上链接的 W3 候选推荐标准:
视口百分比长度相对于初始包含块的大小。当初始包含块的高度或宽度改变时,它们相应地缩放。
这些单位是vh
(视口高度), vw
(视口宽度), vmin
(视口最小长度)和vmax
(视口最大长度)。
对于这个问题,我们可以使用vh
: 1vh
等于视口高度的 1%。也就是说,无论元素在 DOM 树中的位置如何, 100vh
都等于浏览器窗口的高度:
<div></div>
div {
height:100vh;
}
这几乎就是所需要的。这是一个正在使用的JSFiddle 示例 。
除了 Opera Mini 之外,目前所有最新的主流浏览器都支持此功能。 我可以使用...获取进一步的支持。
对于手头的问题,以左右分隔符为特色,这里是一个JSFiddle 示例,显示了涉及vh
和vw
的两列布局。
100vh
不同100%
如何? 以此布局为例:
<body style="height:100%">
<div style="height:200px">
<p style="height:100%; display:block;">Hello, world!</p>
</div>
</body>
该p
标签这里设置为 100%的高度,但由于其包含div
具有 200 像素高度,200 像素 100%变为 200 像素,则不是 100% body
高度。使用100vh
代替意味着无论div
高度如何, p
标签都将是body
100%高度。看看这个随附的 JSFiddle,可以轻松看到差异!
如果要设置<div>
或任何元素的高度,则应将<body>
和<html>
的高度设置为 100%。然后你可以用 100%设置元素的高度:)
这是一个例子:
body, html {
height: 100%;
}
#right {
height: 100%;
}
如果你能够绝对定位你的元素,
position: absolute;
top: 0;
bottom: 0;
会这样做的。