flex box在换行后保持一个间隙
flex box在换行后保持一个间隙
由于某种未知原因,在图片换行后我发现了这个间隙。
查看样本代码:[https://codepen.io/mohammad-hossein-amri/pen/NEpzro](https://codepen.io/mohammad-hossein-amri/pen/NEpzro)
但是我想要的结果应该是这样的:
我尝试了几乎所有方法,但间隙仍然存在。不知何故,这个额外的空间在图片换行后被添加进来。
html, body{ background: #fff; padding:0; margin:0; height:100%; } ul#flex-container{ list-style-type: none; margin:0; padding: 0; display: flex; flex-wrap: wrap; } ul li{ margin:0; padding: 0; flex-grow: 1; width:250px; color: #fff; font-size: 2.2em; position: relative; } ul li img{ width: 100%; } a{ margin: 0; padding: 0; }
更新:
我看到其他人将另一个与相同答案的问题标记为重复,但该问题在谷歌搜索中没有出现,因为它与flex无关。不同的症状,但相同的解决方案并不意味着问题彼此重复!
问题出现的原因是在使用flex布局时,当元素换行时,会出现多余的间隙。解决方法是设置元素的字体大小为0,或者添加垂直对齐属性vertical-align: top;
。具体的代码如下:
CSS代码:
html, body{ background: #fff; padding:0; margin:0; height:100%; } ul#flex-container{ list-style-type: none; margin:0; padding: 0; display: flex; flex-wrap: wrap; } ul li{ margin:0; padding: 0; flex-grow: 1; width:250px; color: #fff; font-size: 0; position: relative; } ul li img{ width: 100%; } a{ margin: 0; padding: 0; }
HTML代码:
添加vertical-align: top;
的修复代码如下:
CSS代码:
ul li{ margin:0; padding: 0; flex-grow: 1; width:250px; color: #fff; font-size: 0; position: relative; vertical-align: top; }
文章完整内容如下:
问题:使用flex布局时,当元素换行时,会出现多余的间隙。
解决方法:添加vertical-align: top;
属性修复问题。
具体的代码如下:
CSS代码:
html, body{ background: #fff; padding:0; margin:0; height:100%; } ul#flex-container{ list-style-type: none; margin:0; padding: 0; display: flex; flex-wrap: wrap; } ul li{ margin:0; padding: 0; flex-grow: 1; width:250px; color: #fff; font-size: 0; position: relative; vertical-align: top; } ul li img{ width: 100%; } a{ margin: 0; padding: 0; }
HTML代码:
flexbox布局在换行时会出现一个间隙的问题。这个问题的原因是,当flex容器中的子项在一行放不下时,会自动换行,并且每一行的子项会按照一定的规则重新排列。在这个过程中,每一行的子项之间会产生一个间隙。
为了解决这个问题,可以给每个li元素添加一个margin-bottom属性,并设置一个合适的数值,比如5px。通过这样的设置,每个li元素在显示时都会有一个底部的间距,从而使得换行后的子项之间不再出现间隙。
下面是代码的示例:
ul li { margin-bottom: 5px; }
通过给li元素添加margin-bottom属性,我们成功解决了flexbox布局在换行时出现的间隙问题。这样,即使子项换行排列,每一行之间也能保持一个固定的间距。