如何使用CSS设置最后一个内部div以填充其余的包装器高度?

时间:2013-07-20 14:30:11

标签: javascript css html height


我想创建一个包含2个内部div的包装div,以便包装器和第一个内部div具有固定高度,第二个内部div将填充包装器高度的其余部分。
我做过这样的事情:

<div class="frameArea">
   <div class="header"></div>
   <div class="frame"></div>
</div>

我的CSS文件如下所示:

.frameArea {
   width: 200px;
   height: 300px;
   border: 2px solid black;
}
.frameArea .header {
   background-color: green;
   width: 100%;
   height: 25px;
   font-size: 18px;
   line-height: 25px;
}
.frameArea .frame {
   background-color: white;
   width: 100%;
   height: 100%;
}

问题是,使用这个CSS使.frame div成为包装器高度的100%,这意味着他将是300px而不是我正在寻找的 - 275px(in这种情况当包装器是300px而.header是25px时) 我可以通过使用JS代码设置.frame的height属性来实现此目的,该代码将在文档准备就绪时动态计算和设置它,但是我想问一下是否有任何CSS属性以更优雅的方式执行相同的操作?

谢谢!

2 个答案:

答案 0 :(得分:0)

这是解决方案的jsFiddle。答案是一个简单的CSS解决方案。只需将.frame height: 100%;更改为height: auto;即可。

编辑:抱歉,错误的小提琴。在这里:http://jsfiddle.net/shaansingh/UX6XQ/1/embedded/result/

答案 1 :(得分:0)

使用CSS calc()

.frameArea .frame {
    ...
    height: calc(100% - 25px);
}

DEMO

calc()与旧浏览器不兼容,因此可能会给您带来兼容性问题,为了解决此问题,我建议您使用JavaScript解决方案。

jQuery解决方案

var h = $('div.frameArea').height() - 25;
$('div.frame').height(h);

DEMO