【问题标题】:Flexbox not filling height in IE11Flexbox 在 IE11 中没有填充高度
【发布时间】:2015-04-22 01:36:31
【问题描述】:

我有这种情况:

http://codepen.io/anon/pen/radoPd?editors=110

这是 CSS 代码:

.wrapper{
  background-color: red;
  min-height: 100vh;
  display: flex;
}

.sidebar{
  background: orange;
  flex: 0 0 300px;
}
.main{
  background-color: green;
  overflow-y: scroll;
}

由于某种原因,在 IE11 上,.sidebar 和 .main 区域都不会填满包装器的整个高度。

这是浏览器之间的不一致。这是一个错误吗?我错过了什么吗?

【问题讨论】:

  • 我目前无法访问IE11,所以我只能猜测。您是否尝试过在.wrapper 上明确设置align-items: stretch?它是否对其他值做出反应,例如centerflex-end
  • 我试过了,但没有用 :( 它适用于其他人。我怀疑拉伸与100vh 发生冲突
  • 我认为这不太可能,因为 min-height 适用于 .wrapper,而 align-items 属性对 flex-children 有影响,而不是对 flex-container 本身有影响。
  • 嗯……那么我的扶手椅分析就这么多了:)

标签: css flexbox internet-explorer-11


【解决方案1】:

这是一个已知的IE bug,不幸的是,IE 团队已将其关闭为Won't Fix,并描述如下:

在所有其他支持 flexbox 的浏览器中,基于 flex-direction:column 的 flex 容器将使用容器 min-height 来计算 flex-grow 长度。在 IE10 和 11 预览版中,它似乎只适用于明确的 height 值。

AFAIK 尽管有这个描述,但当flex-directionrow 时,该错误也适用。正如 cmets 中提到的,Philip Walton 提出了一个解决方案here,其中包括将高度设置为固定值,但这不是 OP 的选项。

作为一种解决方法,我建议也将min-height: 100vh 设置为main 元素:

.wrapper{
  background-color: red;
  min-height: 100vh;
  display: flex;
}

.sidebar{
  background: orange;
  flex: 0 0 300px;
}
.main{
  background-color: green;
  min-height: 100vh;
}

here

【讨论】:

  • 包装器不是100vh时有通用的解决方案吗?我有一个由 div 组成的“表格”,并且只希望一行中的每个列单元格具有相同的高度。所以我在row div 上有display:flex,这会在 Chrome 中创建所需的行为,但在 IE 中,如果一个单元格有很多内容,而相邻的单元格内容很少,则内容很少的单元格不会垂直拉伸到与包含大量内容的单元格高度相同。
  • 显示:表格?
猜你喜欢
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 2017-11-21
  • 2022-07-05
相关资源
最近更新 更多