为什么空格会使弹性项目在左侧溢出?

ztf*_*ter 5 css css3 flexbox

justify-content: space-around当内容溢出flex容器时,Chrome似乎无法正确处理,并且该容器未设置为允许换行,而是水平滚动。

一些内容在flex容器的左侧溢出,并被截断。我希望它在右侧溢出,以便可以通过水平滚动来到达它。

这是一个例子:

#container {
  display: flex;
  width: 500px;
  justify-content: space-around;
  border: solid black;
  overflow: auto;
}
.item {
  min-width: 200px;
  margin: 10px;
  background-color: red;
  display: table;
  font-size: 48pt;
  text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
<div id="container">
  <div class="item">1</div><div class="item">2</div>
  <div class="item">3</div><div class="item">4</div>
  <div class="item">5</div><div class="item">6</div>
</div>
Run Code Online (Sandbox Code Playgroud)

Ori*_*iol 6

这是因为当没有足够的空间时,space-around其行为类似于center

如果剩余的自由空间为负或在线上只有一个弹性项目,则此值等于center

center表现得像您描述的那样:

如果剩余的自由空间为负,则弹性项目将在两个方向上均等地溢出。

相反,您可以使用space-between

如果剩余的自由空间为负或在线上只有一个弹性项目,则此值等于flex-start

当然,那么在弯曲线的两端都不会有一半的空格。不过,您可以插入伪元素以具有完整大小的空格。

#container {
  display: flex;
  justify-content: space-between; /* Instead of space-around */
}
#container::before, #container::after {
  content: ''; /* Insert space before the first item and after the last one */
}
Run Code Online (Sandbox Code Playgroud)

.container {
  display: flex;
  width: 500px;
  border: solid black;
  justify-content: space-between;
  overflow: auto;
  margin: 10px 0;
}
.container::before, .container::after {
  content: '';
}
.item {
  margin: 10px;
  background-color: red;
  display: table;
  font-size: 48pt;
  text-align: center;
}
.big > .item {
  min-width: 200px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container big">
  <div class="item">1</div><div class="item">2</div>
  <div class="item">3</div><div class="item">4</div>
  <div class="item">5</div><div class="item">6</div>
</div>
<div class="container">
  <div class="item">1</div><div class="item">2</div>
  <div class="item">3</div><div class="item">4</div>
  <div class="item">5</div><div class="item">6</div>
</div>
Run Code Online (Sandbox Code Playgroud)


Mic*_*l_B 4

由于容器的宽度有限,并且您希望通过水平滚动访问溢出的弹性项目,为什么要使用justify-content: space-around

尝试justify-content: flex-start

修订版代码笔

要了解为什么溢出的弹性项目可能无法通过滚动访问,请参阅此答案

如果您对原始代码的 Javascript 解决方法感兴趣,请参阅这篇文章: