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

设置flex-grow:1后Flex项目高度不等?原因及解决方法

问题:左侧容器内两个元素设置flex-grow:1后仍不等高,如何实现等高?

希望左侧容器内的两个元素拥有相同高度,已为其设置flex-grow:1属性,但它们的高度仍不一致。请问这是什么原因?该如何实现等高效果?

相关代码如下:

CSS代码

:root {
  --primary-color1: #262424;
  --primary-color2: #fff;
  --secondary-color: #f3f3f3;
  --link-color: rgb(101, 101, 195);
  --link-hover-color: rgb(2, 2, 222);
}

p {
  text-align: center;
  margin-top: 10px;
}

.left-right-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: 70%;
  padding: 10px;
}

.left {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  /* -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between; */
  width: 50%;
  padding: 10px 10px 10px 0;
}

.left>div:first-child {
  margin-bottom: 10px;
}

.right {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: 50%;
  padding: 10px 0 10px 10px;
  /* -webkit-box-sizing: border-box;
            box-sizing: border-box; */
}

.left>div,
.right>div {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  flex-grow: 1;
  background-color: var(--secondary-color);
  padding: 10px;
  margin: 10px auto 10px 0px;
  width: 100%;
  max-width: 750px;
  text-align: center;
  border: 1px solid var(--primary-color1);
  border-radius: 10px;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

.left-right-container li,
.left-right-container dt,
.left-right-container dd {
  text-align: left;
}

.left-right-container dt {
  font-weight: bold;
}

@media screen and (max-width: 850px) {
  .left-right-container {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -ms-flex-direction: column;
    flex-direction: column;
  }
  .left,
  .right {
    width: 100%;
    padding: 0;
  }
}

HTML代码

<div class="left-right-container">
  <div class="left">
    <div>
      <h4>lorem</h4>
      <p>Lorem ipsum doler sit amet</p>
    </div>
    <div>
      <h4>Lorem ipsum</h4>
      <p>Lorem ipsum doler sit amet</p>
      <ol>
        <li>Lorem ipsum dolor sit amet, conseteturS</li>
        <li>Lorem ipsum dolor sit amet, consetetur</li>
        <li>Lorem ipsum dolor sit amet, consetetur</li>
        <li>Lorem ipsum dolor sit amet, consetetur</li>
      </ol>
    </div>
  </div>
  <div class="right">
    <div>
      <h4>Lorem ipsum dolor</h4>
      <p>Lorem ipsum dolor sit amet, consetetur</p>
      <dl>
        <dt>Lorem ipsum</dt>
        <dd>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</dd>
        <dt>Lorem ipsum</dt>
        <dd>
          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
          <br><br> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</dd>
      </dl>
    </div>

  </div>
</div>

效果截图

效果截图


原因分析

flex-grow:1的作用是分配容器的剩余空间,而非强制元素高度相等。默认情况下flex-basis:auto(元素初始高度由自身内容决定),所以flex-grow只是在内容高度的基础上瓜分剩余空间,最终元素总高度=内容高度+分配的剩余空间,内容高度不同的话,最终高度自然有差异。

解决方法

有两种简单可靠的实现方式:

方法一:修改flex属性为flex:1

将左侧子元素的flex-grow:1替换为flex:1,flex:1是flex-grow:1; flex-shrink:1; flex-basis:0%的缩写,它会将元素的基准高度设为0,让两个子元素平分父容器(.left)的总高度,实现严格等高:

修改后的CSS片段:

.left>div,
.right>div {
  /* 替换原有的flex-grow:1 */
  -webkit-box-flex: 1;
  -ms-flex: 1;
  flex: 1;
  /* 其他样式保持不变 */
}

方法二:改用Grid布局

将.left的flex布局改为Grid布局,通过grid-template-rows: 1fr 1fr让两个子元素自动平分高度:

修改后的.left样式:

.left {
  display: grid;
  grid-template-rows: 1fr 1fr;
  gap: 10px; /* 替代原来的margin-bottom:10px */
  width: 50%;
  padding: 10px 10px 10px 0;
}

同时需要删除.left>div:first-child的margin-bottom:10px,避免间距重复。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:48:10