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

时间:2015-07-26 16:27:10

标签: html css width flexbox

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

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

<style>
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;
}
</style>

<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>

2 个答案:

答案 0 :(得分:5)

这里的关键是添加“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/

答案 1 :(得分:0)

因为它的宽度已设定。只需删除width: 150px;

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

        a {
           display: inline-block;
           background:orange;
           width: 50px;
           height: 50px;
           margin: 10px;
        }
&#13;
<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>
&#13;
&#13;
&#13;

如果flex div所具有的空间足以容纳所有孩子,则此方法有效。否则,div会适应大小,使孩子变小。