如何使div始终填充其垂直空间的100%?我有this Fiddle,它显示了我是如何用jQuery做的,但可以用CSS完成吗?
var height = $('.content').height();
$('.sidebar').height(height);
PS我们不能在容器上放置高度,因为当内容填充.content区域时,我们显然需要侧边栏增加高度。
答案 0 :(得分:0)
嗯,基于你的小提琴,将{700}的固定高度设置为.sidebar
和.content
div是足够的,我认为这不是你想要的,所以在这里你有一个自适应的解决方案,使用你的HTML标记完全不同的CSS:
.wrapper {
height:100%;
overflow:hidden;
width:700px;
}
.sidebar {
background: grey;
float:left;
width: 200px;
padding-bottom:5000px;
margin-bottom:-5000px;
}
.content {
background: #AEAEAE;
position:relative;
float:right;
width:500px;
padding-bottom:5000px;
margin-bottom:-5000px;
}
footer {
clear:both;
float:none;
background: yellow;
display:block;
height:30px;
position:relative;
}
此解决方案将接受任何高度,.sidebar
和.content
都将采用最大div的高度来实现相等高度的列布局。但是,如果你觉得两个div都需要一些高度,你也可以这样做:
.sidebar, .content{min-height:700px;} /* or whatever */
See fiddle并四处看看它是如何运作的
答案 1 :(得分:0)
你的要点是让背景在整个高度上扩展吗?你不关心旁边元素的“实际”高度,是吗?
在这种情况下,你可以做我在fiddle update of yours中所做的事情:
将<div class="main">
包裹在一边和侧边栏中。由于div始终扩展到其最大的子高度,因此无论视口如何,它的高度都是自动的整个高度。现在添加以下css以在旁边框后面创建一个伪后跟,它具有整个展开的高度和颜色。 Voilà,你有整个高度的背景:
.main {
position: relative;
}
.main:after {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 300px;
background: gray;
content: "";
z-index: -1;
}
答案 2 :(得分:0)
我真的很晚了,但是我有几次遇到这个问题,我认为在这种情况下,display: table-cell;
真的很闪耀:http://jsfiddle.net/yw6w562e/2/
此外,使用
以较小的浏览器尺寸重新排列它们也非常容易 display: table-header-group;
和
display: table-footer-group;
(请参阅小提琴媒体查询)
答案 3 :(得分:-1)
尝试使用:
html, body, .wrapper, .sidebar { height: 100%; }
外包装也必须定义。