动态div高度始终为100%

时间:2014-09-18 20:56:23

标签: jquery css height

如何使div始终填充其垂直空间的100%?我有this Fiddle,它显示了我是如何用jQuery做的,但可以用CSS完成吗?

var height = $('.content').height();
$('.sidebar').height(height);

PS我们不能在容器上放置高度,因为当内容填充.content区域时,我们显然需要侧边栏增加高度。

4 个答案:

答案 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%; }

外包装也必须定义。