【发布时间】:2016-01-01 22:30:17
【问题描述】:
我正在尝试按照here 和 here 的描述制作 100% 高度 flex 的孩子。在 Firefox 和 IE 中,它按预期显示,但在 chrome 中却是一团糟。 divs 正在脱离身体。这是 chrome 遵循规范的另一个副作用还是一个错误?
代码:
<!DOCTYPE html>
<html>
<head>
<style>
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
div {
border: 1px solid black;
box-sizing: border-box;
margin: 0;
padding: 0;
}
.red-border {
border: 2px solid red;
}
.blue-border {
border: 2px solid blue;
}
.green-border {
border: 2px solid green;
}
</style>
</head>
<body class="red-border" >
<div clsas="blue-border" style="display: flex; flex-direction: column; width: 100%; height: 100%;">
<div style="flex: 0 1 auto; ">top</content></div>
<div class="green-border" style="flex: 1 1 auto; display: flex; flex-direction: row; width: 100%; height: 100%;" >
<div style="flex: 0 1 auto; ">left</div>
<div style="flex: 1 1 auto; width: 100%; height: 100%;">
<div style="background-color: #ff6500; width: 100%; height: 100%;">center</div>
</div>
<div style="flex: 0 1 auto; ">right</div>
</div>
<div style="flex: 0 1 auto; ">bottom</content></div>
</div>
</body>
</html>
plnkr:http://run.plnkr.co/plunks/wi5MQYK5yEdzdgQBaUWh/
更新:“中心”div 应该是非弹性 div,并且仍然必须有 100% 的高度。有非 flex div 的原因是我的真实网站结构非常复杂——它使用了很多 web 组件,其中一些不能使用 flex。所以在某些时候我必须停止使用 flex 并让“正常”div 的高度为 100%。
【问题讨论】: