You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让子div像img元素一样撑开父flexbox并实现横向滚动?

Flexbox包裹图片后无法横向滚动?这样解决

问题根源

直接用<img>作为Flex子元素时,图片属于替换元素,默认不会被Flex布局压缩(相当于隐性的flex-shrink: 0),因此会撑宽父容器,配合overflow-x-scroll实现横向滚动。

但把图片放进<div>后,<div>作为Flex子元素默认flex-shrink: 1——这意味着它会自动收缩以适配父容器宽度,容器被撑不宽,自然就没有溢出滚动效果。

快速解决

给每个包裹图片的<div>添加flex-shrink: 0(如果使用Tailwind CSS,直接用flex-shrink-0类),禁止它被压缩,让它保持图片的宽度,这样父容器就会被撑宽,恢复滚动效果:

<div class="flex gap-2 overflow-x-scroll">
  <div class="flex-shrink-0"><img class="rounded cursor-pointer" src="@/images/image.png" alt="meet-loaf image"></div>
  <div class="flex-shrink-0"><img class="rounded cursor-pointer" src="@/images/image.png" alt="meet-loaf image"></div>
  <div class="flex-shrink-0"><img class="rounded cursor-pointer" src="@/images/image.png" alt="meet-loaf image"></div>
</div>

原生CSS写法:

/* 给Flex容器下的所有子div设置 */
.flex > div {
  flex-shrink: 0;
}

额外思路

也可以给<div>设置width: fit-content,让它贴合图片的宽度,再配合flex-shrink: 0也能达到效果,但flex-shrink: 0是更直接的方案,毕竟问题本质就是Flex子元素的收缩特性导致的。


内容的提问来源于stack exchange,提问作者Artur Müller Romanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:05:14