Flex布局里的图片宽度不一致怎么办?
我在用Flex布局做图片列表时,设置flex-wrap后图片虽然能换行,但每张图片显示的宽度都不一样,怎么才能让它们等宽排列呢?
代码结构就是这样,容器用了flex和flex-wrap,图片都设置了max-width:100%:
<div class="gallery">
<img src="pic1.jpg" alt="">
<img src="pic2.jpg" alt="">
<img src="pic3.jpg" alt="">
</div>
我尝试给图片加了width:100%和flex:1,但图片还是会根据原始尺寸撑开,不同比例的图片显示宽度还是不一样,折腾了好久没搞定,求大佬指点!
直接用这个:
解释一下关键点:
- 图片宽度用
calc计算,比如一行三张就写33.33%,再减去间距- 高度设置为
auto,这样图片比例不会变形- 如果图片比例差别太大,可以加
object-fit: cover,裁剪成统一的样子如果你想要固定每行的图片数量,比如4张或者5张,改一下
calc里的百分比就行,比如25%对应4张,20%对应5张。就这么干吧,稳得很。
正确的做法是给每个图片外面再包一层容器,让这个容器作为Flex的直接子元素,而不是直接用图片当子元素。这样处理起来就简单了:
然后CSS这样写:
这里有几个关键点:首先给图片加了个父级容器
当时我就卡在直接用图片做flex子元素这点上,死活调不对。后来加了这层包装就迎刃而解了。对了,记得处理好响应式,根据屏幕大小调整那个33.333%的比例,不然小屏上可能会很难看。