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

如何让两个内部div垂直同步增长且外部div处理垂直滚动?

问题描述

我有一个设置了max-height和overflow-y: auto的外层div,内部包含两个并排的div,它们的高度会随各自内容垂直变化。左侧div为灰色背景,右侧div为白色背景。我需要实现:

  • 两个div垂直同步增长
  • 高度受外层div的max-height限制
  • 仅外层div显示垂直滚动条

当前问题是左侧div的灰色背景无法延伸至外层div底部。

原HTML代码

<div class="outer">
  <div class="inner-left">
      <div>Left Content</div>
      <div>Left Content</div>
      <div>Left Content</div>
      <div>Left Content</div>
      <div>Left Content</div>
      <div>Left Content</div>
      <div>Left Content</div>
      <div>Left Content</div>
      <div>Left Content</div>
      <div>Left Content</div>
      <div>Left Content</div>
  </div>
  <div class="inner-right">
      Right Content
  </div>
</div>

原CSS代码

.outer {
  display: flex;
  overflow-y: auto;
  max-height: 100px;
  border: 1px solid black;
  padding: 16px;
}

.inner-left {
  background-color: grey;
  width: 50%;
}

.inner-right {
  background-color: white;
  width: 50%;
}

解决方案

问题根源在于flex布局中,当外层div出现滚动时,子元素默认只会跟随自身内容高度,不会填充到外层滚动容器的可视高度。可以通过两种方式解决:

方案一:直接设置子元素最小高度

通过给两个内层div添加min-height: 100%,强制它们高度至少等于外层容器的可视高度,配合flex默认的align-items: stretch属性,实现高度同步:

.outer {
  display: flex;
  overflow-y: auto;
  max-height: 100px;
  border: 1px solid black;
  padding: 16px;
  align-items: stretch; /* 显式确保子元素拉伸 */
}

.inner-left {
  background-color: grey;
  width: 50%;
  min-height: 100%; /* 强制高度匹配外层容器可视高度 */
}

.inner-right {
  background-color: white;
  width: 50%;
  min-height: 100%; /* 同步左侧高度 */
}

方案二:调整容器结构(兼容性更强)

在外层滚动容器内嵌套一个flex布局的wrapper,让wrapper撑满滚动容器的高度,再实现内部两个div的并排布局:

<div class="outer">
  <div class="inner-wrapper">
    <div class="inner-left">
        <div>Left Content</div>
        <div>Left Content</div>
        <div>Left Content</div>
        <div>Left Content</div>
        <div>Left Content</div>
        <div>Left Content</div>
        <div>Left Content</div>
        <div>Left Content</div>
        <div>Left Content</div>
        <div>Left Content</div>
        <div>Left Content</div>
    </div>
    <div class="inner-right">
        Right Content
    </div>
  </div>
</div>
.outer {
  overflow-y: auto;
  max-height: 100px;
  border: 1px solid black;
  padding: 16px;
}

.inner-wrapper {
  display: flex;
  min-height: 100%; /* 撑满外层滚动容器的可视高度 */
}

.inner-left {
  background-color: grey;
  width: 50%;
}

.inner-right {
  background-color: white;
  width: 50%;
}

两种方案都能实现两个div高度同步、灰色背景延伸至外层底部,且仅外层div显示垂直滚动条的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:33:10