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

如何用CSS Flex设置滚动行宽度与非滚动兄弟行一致?

解决方案

可以实现,根据你的布局需求,分两种场景提供修改方案:

场景1:第三行宽度与容器(第二行)宽度一致(纵向堆叠行)

如果你的“行”是指纵向排列的区块,只需调整外层flex容器的排列方向,再给滚动行设置宽度并禁止子元素收缩:

  1. 修改.flex-scroll-container的样式,让子元素纵向排列:
.flex-scroll-container {
  display: flex;
  flex-direction: column;
  gap: 15px; /* 可选,增加行间距 */
}
  1. 调整.break类的样式,确保宽度占满容器,同时子元素不被压缩:
.break {
  overflow-x: scroll;
  width: 100%;
}

.break .box {
  flex-shrink: 0; /* 防止盒子被压缩,保证滚动效果正常触发 */
}

修改后第三行的宽度会和第二行一致(等于父容器#container的400px),里面的盒子因数量过多会横向溢出,触发滚动。

场景2:第三行宽度与第二行的内容宽度一致(横向排列列)

如果你的“行”是指横向排列的列,希望第三列宽度匹配第二列的内容宽度,纯CSS无法动态匹配兄弟元素宽度,但可以通过以下方式实现:

方式A:固定宽度(适合内容尺寸固定的场景)

直接给.break设置与第二行内容相同的宽度(第二行内容总宽度为4*75px + 20px*2 = 340px):

.break {
  overflow-x: scroll;
  width: 340px;
  flex-shrink: 0; /* 防止flex容器压缩该元素 */
}

.break .box {
  flex-shrink: 0;
}

方式B:JavaScript动态匹配(适合内容尺寸动态变化的场景)

通过JS获取第二行的宽度并赋值给第三行:

const secondRow = document.querySelector('.flex-scroll:nth-child(2)');
const thirdRow = document.querySelector('.break');
thirdRow.style.width = `${secondRow.offsetWidth}px`;

内容的提问来源于stack exchange,提问作者Guillaume Cisco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:05:20