我正在构建一个具有动态高度的布局(像大多数人一样)。我已经搜索了一段时间,但没有找到与我类似的情况。所以这是我的简化代码:
HTML:
<div id="body"><div id="content">
content
</div>
</div>
<div id="footer">
abc
</div>
css:
#footer{
position: absolute;
bottom: 0;
width: 100%;
background: #ddd;
}
#body{
padding: 60px 50px 70px 50px;
position: relative;
min-height: calc(100% - 130px);
}
#content{
font-family: verdana;
margin-left: 200px;
border-left: 5px solid #ddd;
padding: 0 0 0 10px;
min-height: 100%;
min-width: 500px;
}
body{
margin:0;
overflow-y:scroll;
height:100%;
position:relative;
}
html{
height:100%;
}
问题在于当我使用那段代码时,内容高度没有正确计算,结果看起来像是this fiddle,而我的目的是当内容较短时,它应该看起来像this,当内容较长时,它应该看起来像this。
如果我将
min-height
更改为height
,当内容较短时,我得到了我想要的结果,但当内容较长时,我得到了this annoying layout
似乎calc
无法读取未指定高度属性(使用min-height
)的高度属性,但如果指定了height
,则无法获得动态高度,是否有其他解决方案可以实现这一点?
PS: 我想做的是使#content
的边框根据其内容自动延伸,最小高度为页面高度
注意:
另一个奇怪的事实是,实际上我的当前代码在最新的Chrome和IE上运行良好,但在最新的Firefox和Opera上出现了问题。我试图使用JSFiddle复制问题,但令人惊讶的是,所有浏览器都有同样的问题。我已经将所有相关的HTML和CSS(复制生成的HTML和CSS)包含在JSFiddle中,只发现我的代码根本不起作用,我很困惑。