我最近决定抛弃表并在这个新项目中使用div解决方案,但是当我将另一个div中的div设置为100%而没有导致溢出等于div的高度时,我有一个非常奇怪的问题。它上面。它的行为就像浏览器不知道它占据那个空间的div。
我有一个固定宽度和高度设置为100%的包装div,在中间列中有3列div(左,中,右)我有3个div,前2个固定高度90px和第3个设置为100%以填充内容区域的其余部分,但它正在打破包装器div并导致180px溢出。我在JSFiddle上设置了这个简单的布局:Height: 100% Div Issue
<body>
<div class="wrapper">
<div class="left">
<div style="background-color:fuchsia; height: 90px;"> </div>
</div>
<div class="mid">
<div style="background-color:purple; height: 90px; width: 998px;"> </div>
<div style="background-color:blue; height: 90px; width: 998px;"> </div>
<div style="background-color:black; height: 100%; width: 50%;"> </div>
</div>
<div class="right">
<div style="background-color:fuchsia; height: 90px;" class="right"> </div>
</div>
</div>
你会注意到黑色div正在突破黄色(中)div,这不应该发生!任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
你在黑色div上指定了100%的高度,最终相对于它的父级(.mid
),它也恰好包含你给出90px高度的其他元素。你必须考虑到这两个兄弟姐妹。
您可以使用calc()
表示法执行此操作,但移动浏览器支持较差且IE8&amp;下方。
您还可以在黑色div上使用负上边距等于其两个兄弟的总和(180px):
答案 1 :(得分:0)
你有什么理由不能将overflow:hidden添加到“.mid”div?
<div class="mid" style="overflow:hidden">
或
.mid {
float: left;
width: 998px;
height: 100%;
background-color: yellow;
overflow: hidden;
}
答案 2 :(得分:0)
这应该可以解决问题
height: 100vh;