【发布时间】:2019-02-27 07:00:36
【问题描述】:
考虑以下 sn-p:
.container {
display: flex;
align-items: center;
flex-direction: column;
border: 3px solid red;
}
.action {
flex-basis: 100%;
flex-shrink: 1;
width: 100%;
}
.button {
font-size: 12px;
line-height: 3rem;
width: 100%;
}
<div class="container">
<div class="action">
<button class="button" type="button">
Button label 1
</button>
</div>
<div class="action">
<button class="button" type="button">
Button label 2
</button>
</div>
</div>
在 Chrome 中,按钮是垂直显示的,并且容器会增长以适应它们:
但是,在 IE11 中,按钮重叠并且容器仍然小于 1 个按钮:
这是 IE 中的已知错误吗? (如果是,将不胜感激)
有已知的解决方法吗?
【问题讨论】:
-
旧版本的 IE 有奇怪的默认值。我总是指定 flex-grow、flex-shrink 和 flex-basis,因为我不相信浏览器会认为什么是默认值。尝试一个显式的
flex-grow: 1;也知道如果你使用小于 3 个值的flex选项,你会遇到旧 IE 的问题,因为 IE 与其他所有东西都不一样。你应该可以用flex: 1 1 100%;替换你的两条flex-行我也会从.action 中删除宽度规则,因为它可能与flexbox 冲突(尤其是在使用填充或边距的情况下)。 -
添加 flex-grow 没有帮助 - 在 codepen 上尝试过:codepen.io/jakubsadura/pen/gdyzJq?editors=1100
-
尝试将
flex-wrap: wrap;放在 .container 上。它可能没有换行,因为一个盒子想要 100% 宽,另一个被强制为 0%。 -
刚刚尝试过 - 也无济于事 - 感谢您的帮助
-
我刚刚意识到您将它作为 flex 方向列,所以这无济于事。射击。我没有带 IE 的电脑来帮你调试(这就是我没有写“答案”的原因)。我会比较 IE 和 Chrome 之间计算的 CSS 规则。它必须是不同的默认值之一。
标签: html css flexbox internet-explorer-11