Flexbox:我的 div 没有全高
Flexbox: my div has not a full height
我刚刚使用 Flexbox 创建了一个设计非常简单的网站。使用 Firefox 和 Chrome,一切正常,但使用 IE,我有一个小问题,但很明显。这是页面:http://www.csharpnet.net/article/introduction。如果你用 Firefox 检查它,你会看到左边有一个 100% 的高度,但用 IE,情况并非如此。我一遍又一遍地检查我的 CSS,但我不知道要更改什么。
我检查了所有父元素,它们都有 100% 的高度,那么为什么这边也没有这个高度?
感谢您的帮助。
编辑:代码示例和fiddle with the code
<html style="height:100%;margin:0;">
<body style="height:100%;margin:0;">
<div style="display:flex;flex-flow:column;height:100%;">
<div style="background-color:green;flex-grow:1;flew-shrink:1;flex-basis:200px;display:flex;flex-flow:row;">
<div style="background-color:yellow;flex-basis:700px;flex-grow:1;flew-shrink:1;"></div>
<div style="background-color:white;flex-basis:100%;flex-grow:1;flew-shrink:1;"></div>
</div>
<div style="background-color:red;flex-grow:1;flew-shrink:1;flex-basis:100%;display:flex;flex-flow:row;">
<div style="background-color:blue;flex-basis:500px;flex-grow:1;flew-shrink:1;"></div>
<div style="background-color:gray;flex-basis:100%;flex-grow:1;flew-shrink:1;">
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
</div>
</div>
</div>
</body>
我最近 运行 遇到了同样的行为,并在此线程中找到了解决方案:How to make flexbox children 100% height of their parent?
这是 "Brett Postin" 使用 "position:absolute; bottom:0" 技巧创建全高容器的答案,因为 "height:100%" 由于 flex box child 不使用显式高度而无法工作确定它的高度。
我已经采用了您的代码并将样式拆分为单独的样式表,以便于进行故障排除。我还清理了它,修复了拼写错误 (flex-flew
) 并删除了不必要的代码。
除此之外,我使用了正确的术语并删除了不需要的 flexbox 功能(例如 flex: 1 1 200px;
基本上与在弹性元素上说 flex: 1; width: 200px;
相同,但是这取决于个人)。
但真正起作用的是删除 height: 100%
并完全依赖 flexbox。
这是更新后的 fiddle:http://jsfiddle.net/uako2dsj/2/
记得加前缀,更好的适应IE。
HTML
<body>
<div class="container">
<div class="header">
<div class="yellow"></div>
<div class="white"></div>
</div>
<div class="content">
<div class="blue"></div>
<div class="gray">
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
</div>
</div>
</div>
</body>
CSS
html, body {
margin: 0;
}
.container {
display: flex;
flex-direction: column;
}
.header {
display:flex;
height: 200px;
background-color:green;
}
.yellow {
width: 700px;
background-color: yellow;
}
.white {
width: 200px;
flex: 1;
background-color: white;
}
.content {
display: flex;
background-color: red;
}
.blue {
width: 500px;
background-color: blue;
}
.gray {
width: 200px;
flex:1;
background-color: gray;
}
我刚刚使用 Flexbox 创建了一个设计非常简单的网站。使用 Firefox 和 Chrome,一切正常,但使用 IE,我有一个小问题,但很明显。这是页面:http://www.csharpnet.net/article/introduction。如果你用 Firefox 检查它,你会看到左边有一个 100% 的高度,但用 IE,情况并非如此。我一遍又一遍地检查我的 CSS,但我不知道要更改什么。
我检查了所有父元素,它们都有 100% 的高度,那么为什么这边也没有这个高度?
感谢您的帮助。
编辑:代码示例和fiddle with the code
<html style="height:100%;margin:0;">
<body style="height:100%;margin:0;">
<div style="display:flex;flex-flow:column;height:100%;">
<div style="background-color:green;flex-grow:1;flew-shrink:1;flex-basis:200px;display:flex;flex-flow:row;">
<div style="background-color:yellow;flex-basis:700px;flex-grow:1;flew-shrink:1;"></div>
<div style="background-color:white;flex-basis:100%;flex-grow:1;flew-shrink:1;"></div>
</div>
<div style="background-color:red;flex-grow:1;flew-shrink:1;flex-basis:100%;display:flex;flex-flow:row;">
<div style="background-color:blue;flex-basis:500px;flex-grow:1;flew-shrink:1;"></div>
<div style="background-color:gray;flex-basis:100%;flex-grow:1;flew-shrink:1;">
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
</div>
</div>
</div>
</body>
我最近 运行 遇到了同样的行为,并在此线程中找到了解决方案:How to make flexbox children 100% height of their parent?
这是 "Brett Postin" 使用 "position:absolute; bottom:0" 技巧创建全高容器的答案,因为 "height:100%" 由于 flex box child 不使用显式高度而无法工作确定它的高度。
我已经采用了您的代码并将样式拆分为单独的样式表,以便于进行故障排除。我还清理了它,修复了拼写错误 (flex-flew
) 并删除了不必要的代码。
除此之外,我使用了正确的术语并删除了不需要的 flexbox 功能(例如 flex: 1 1 200px;
基本上与在弹性元素上说 flex: 1; width: 200px;
相同,但是这取决于个人)。
但真正起作用的是删除 height: 100%
并完全依赖 flexbox。
这是更新后的 fiddle:http://jsfiddle.net/uako2dsj/2/
记得加前缀,更好的适应IE。
HTML
<body>
<div class="container">
<div class="header">
<div class="yellow"></div>
<div class="white"></div>
</div>
<div class="content">
<div class="blue"></div>
<div class="gray">
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
<p>aaaa</p>
</div>
</div>
</div>
</body>
CSS
html, body {
margin: 0;
}
.container {
display: flex;
flex-direction: column;
}
.header {
display:flex;
height: 200px;
background-color:green;
}
.yellow {
width: 700px;
background-color: yellow;
}
.white {
width: 200px;
flex: 1;
background-color: white;
}
.content {
display: flex;
background-color: red;
}
.blue {
width: 500px;
background-color: blue;
}
.gray {
width: 200px;
flex:1;
background-color: gray;
}