弹性容器内的块元素被挤压。但为什么?

Block elements inside a flex container get squeezed. But why?

我想知道为什么 flex div 中的 8 个内联块元素会被挤压并且不遵守它们的设置 (width: 50px)。

div {
  display: flex;
  justify-content: center;
  border: 1px solid red;
  width: 150px;
  overflow: auto;
}

a {
  display: inline-block;
  background: orange;
  width: 50px;
  height: 50px;
  margin: 10px;
}
<div>
  <a>1</a><a>2</a><a>3</a><a>4</a><a>5</a><a>6</a><a>7</a><a>8</a>
</div>

这里的关键是添加 "flex-shrink: 0;" 和删除 "justify-content: center;"

div
{
 display: flex;
 border: 1px solid red;
 width: 150px;
    overflow: auto;
}

a 
{
 display: inline-block;
 background:orange;
 width: 50px;
 height: 50px;
 margin: 10px;
 flex-shrink: 0;
}
<div>
  <a>1</a><a>2</a><a>3</a><a>4</a><a>5</a><a>6</a><a>7</a><a>8</a>
</div>

http://jsfiddle.net/zogybegu/

因为它的宽度是设置好的。只需删除 width: 150px;.

div {
           display: flex;
           justify-content: center;
           border: 1px solid red;
           overflow: auto;
        }

        a {
           display: inline-block;
           background:orange;
           width: 50px;
           height: 50px;
           margin: 10px;
        }
<div>
  <a>1</a><a>2</a><a>3</a><a>4</a><a>5</a><a>6</a><a>7</a><a>8</a>
</div>

如果 flex div 的 space 对所有 children 来说足够大,则此方法有效。否则 div 适应大小,使 children 变小。