在调整视口大小后,Firefox与Chrome的div宽度变化不同

Rob*_*ith 8 html css firefox google-chrome flexbox

在使用基于flexbox容器的布局减少视口后,我注意到了一个小差异.以下代码段包含两个容器(.container.subcontainer)内的一些链接.在Chrome(45 beta)中,element无论视口尺寸如何,具有类的div 都具有相同的宽度.但是,在Firefox(40)中,每个div的宽度根据其内容而变化.

   html,
   body {
     margin: 0;
     padding: 0;
   }
   .container {
     position: relative;
     display: flex;
     flex-direction: column;
     width: 50%;
   }
   .element {
     flex: 1 0 0;
     padding: 0.5em;
     text-align: center;
     position: relative;
     background-color: red;
     margin-right: 1em;
   }
   .subcontainer {
     flex: 0 1 auto;
     display: flex;
   }
   .element a {
     color: black;
   }
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>

<body>
  <div class="container">
    <div class="subcontainer">
      <div class="element"><a>abc</a>
      </div>
      <div class="element"><a>abcdef</a>
      </div>
      <div class="element"><a>abcdef</a>
      </div>
    </div>
  </div>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

我认为"运行代码片段"功能不允许看到此更改,因此我提供了几个显示差异的GIF:

铬:

在此输入图像描述

火狐:

在此输入图像描述

正如您所看到的,这些框在Chrome中共享相同的宽度,但是Firefox非常明显地限制了第一个框,而其他框保持了它们的比例.这种差异的原因是什么?我该如何解决?我希望每个盒子都有相同的宽度.这是flex: 1 0 0首先使用的目的.

谢谢

Kri*_* Ku 6

尝试设置min-width您需要的任何值,或者只是0px:

.element
{
   ...
   min-width: 0px;
}
Run Code Online (Sandbox Code Playgroud)

小提琴

细节

对于Firefox,Flex项目min-width:min-content默认具有,如此处所示

这些实现为这个关键字实现了一个稍微简单的行为:它计算到flex项目的min-content,并在其他所有项目上计算为0.

因此,如果我们min-width:-webkit-min-content为Chrome 设置,它将具有相同的不良行为 - jsfiddle.