Chrome显示问题与flexbox和溢出

Bri*_*per 3 css google-chrome flexbox

我正在使用flexbox做一个简单的标题/正文/页脚布局.但是,当我的"body"有很多内容(足以强制滚动条)时,我在Chrome中看到了一个问题:它会强制页眉和页脚元素在它们不应该缩小时缩小.这只发生在Chrome中(IE11和Firefox按预期工作).我应该以不同的方式使用我的CSS,还是这是Chrome的问题?

我已经简化了我的HTML/CSS以显示问题,并创建了我在不同浏览器中看到的截图(http://i.stack.imgur.com/Qn5Ln.png):

body { height:100%; position:absolute; left:0; top:0; right:0; bottom:0; background:red; display:flex; flex-direction:column; }

div { padding:10px; background:green; }

div#stretch { overflow:auto; flex:0 1 auto; min-height:200px; background:blue; }

#space { height:80000px; display:block; }
Run Code Online (Sandbox Code Playgroud)
<div>Header</div>
<div id="stretch">
    <span id="space"></span>
</div>
<div>Footer</div>
Run Code Online (Sandbox Code Playgroud)

Ori*_*iol 7

在Firefox上,它可以工作,因为从版本34开始,它实现了一个auto初始值min-height.请参阅如何在FF 34.x中获得FF 33.x Flexbox行为?了解更多信息.

事实上,你可以检查一下,如果设置min-height: 0了CSS 2.1上的初始值,Firefox会像Chrome一样运行.

* { min-height: 0; }
Run Code Online (Sandbox Code Playgroud)

* {
  min-height: 0;
}
body {
  height: 100%;
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: red;
  display: flex;
  flex-direction: column;
}
div {
  padding: 10px;
  background: green;
}
div#stretch {
  overflow: auto;
  flex: 0 1 auto;
  min-height: 200px;
  background: blue;
}
#space {
  height: 80000px;
  display: block;
}
Run Code Online (Sandbox Code Playgroud)
<div>Header</div>
<div id="stretch">
  <span id="space"></span>
</div>
<div>Footer</div>
Run Code Online (Sandbox Code Playgroud)

但是,你想要相反.目前Chrome不支持min-height: auto,但还有另一种方法:您可以禁用缩小功能

* { flex-shrink: 0; }
Run Code Online (Sandbox Code Playgroud)

* {
  flex-shrink: 0;
}
body {
  height: 100%;
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: red;
  display: flex;
  flex-direction: column;
}
div {
  padding: 10px;
  background: green;
}
div#stretch {
  overflow: auto;
  flex: 0 1 auto;
  min-height: 200px;
  background: blue;
}
#space {
  height: 80000px;
  display: block;
}
Run Code Online (Sandbox Code Playgroud)
<div>Header</div>
<div id="stretch">
  <span id="space"></span>
</div>
<div>Footer</div>
Run Code Online (Sandbox Code Playgroud)