【发布时间】:2021-04-26 18:59:57
【问题描述】:
我有一个包含一些内联子元素的父容器,并且父容器具有动态宽度。在所有子元素都在一行之前看起来很棒,但是当您缩小浏览器窗口并且子元素转到下一行时,它会在父容器的右侧留下额外的空间。正如您在下图中看到的子元素和容器边框之间的额外空间。
.container {
display: inline-block;
border: 5px solid #000;
padding: 10px;
}
.child {
display: inline-block;
background-color: #F00;
width: 100px;
height: 100px;
margin: 5px;
}
<div class="container">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
我想知道两件事:
1:为什么内联子元素进入下一行后,父容器的宽度不缩小?
2:是否有任何解决方法可以使用 CSS 删除多余的空间?
请注意,我将display: inline-block; 用于.child 标记只是为了证明这一点,但我也可以使用任何css 属性,如flex 或float 来实现这一点。
【问题讨论】:
-
剩余空间不足以容纳元素..
-
是的,我已经尝试过 flex 和其他解决方案,但它们对我不起作用,我将子宽度设置为 100px 以进行演示,但一些子元素也包含图像和其他内容,所以不是可以给他们百分比宽度。
-
@NenadVracar 子元素的宽度不一样,有些也可以有固定宽度,我也不是在寻找将所有子 div 保持在一行中的解决方案。
-
在 CSS 中,当子项换行时,父容器不会重新计算其宽度以收缩换行较少的列。有关更多详细信息和可能的解决方法(使用纯 CSS 和
inline-block),请参阅我的答案。 stackoverflow.com/a/32811002/3597276 -
没有简单的解决方案...这是行框的工作方式...这是一个常见的请求。