【问题标题】:flex doesn't support calc in IE11flex 不支持 IE11 中的计算
【发布时间】:2019-03-11 03:45:30
【问题描述】:

我正在尝试使用 Flexbox 创建布局。在其中一种布局中,我想要 3 个等宽的列。为此,我使用calc 设置列宽。这在现代浏览器中运行良好,但在 IE 中它当然不想工作。这是我的代码:

.container {
  width:50vw;
  margin:0 auto;
  display:flex;
}
  .container > div {
    flex:1 0 calc(100% / 3);
  }
<div class="container">
  <div>Test</div>
  <div>Test</div>
  <div>Test</div>
</div>

正如我所提到的,这在现代浏览器中运行良好,但在 IE 中,列只会相互折叠,除非我使用特定百分比代替 calc

【问题讨论】:

    标签: css internet-explorer flexbox calc


    【解决方案1】:

    这是一个已知的错误。

    IE 10-11 忽略在flex 速记声明中使用的calc() 函数。

    由于此错误仅影响 IE 11 中的 flex 简写声明,一个简单的解决方法(如果您只需要支持 IE 11)是始终单独指定每个灵活性属性。

    来源:https://github.com/philipwalton/flexbugs#flexbug-8

    所以,换句话说,而不是:

    flex: 1 0 calc(100% / 3)
    

    试试:

    flex-grow: 1;
    flex-shrink: 0;
    flex-basis: calc(100% / 3);
    

    另外,考虑一下:你甚至不需要calc() 函数。

    如果你想要三个等宽的列,可以这样做:

    flex: 1
    

    flex: 1 0 30%
    

    甚至:

    flex: 1 0 26%;
    

    flex 简写中定义flex-grow: 1 后,flex-basis 无需为 33.33%。

    由于flex-grow 将消耗在线上的可用空间,flex-basis 只需大到足以强制执行换行(如果有必要)。

    在这种情况下,flex-basis: 26% 有足够的空间用于边距、边框、填充等,但没有足够的空间用于第四个项目。

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      • 2021-10-09
      • 2011-06-09
      • 2019-07-02
      • 1970-01-01
      相关资源
      最近更新 更多