
当使用 flex 布局时,若右侧内容较高而左侧 div 背景色未填满,通常是因为 `align-items: center` 限制了子项垂直对齐方式;改为 `stretch` 即可使左右两栏等高并完整渲染背景色。
在 Flex 布局中,align-items 属性控制主轴(此处为垂直方向,因 flex-direction: row)上子元素的对齐方式。默认值为 stretch,它会让所有子元素自动拉伸以填满容器的交叉轴(即高度)。但你的 .container 中显式设置了 align-items: center,这会强制 .left 和 .right 在垂直方向居中对齐——导致 .left 高度仅包裹其内部 元素(通常约 16–20px),无法匹配 .right 的实际高度,因此红色背景无法“撑满”。
✅ 正确做法是将 align-items: center 替换为 align-items: stretch(或直接删除该声明,因其本就是 flex 默认行为):
.container {
display: flex;
flex-direction: row;
justify-content: center;
align-items: stretch; /* ✅ 关键修复:使子项在交叉轴(高度)上拉伸 */
border: 1px solid #bebebe;
border-radius: 5px;
}
.left {
background-color: red;
padding: 0 8px;
flex-grow: 1;
display: flex;
align-items: center; /* 可选:让 radio 水平垂直居中 */
justify-content: center;
}
.right {
width: 100%;
background-color: blue;
padding: 8px; /* 推荐添加内边距,提升可读性 */
}⚠️ 注意事项:
- 不要同时声明 align-items: center 和 align-items: stretch(CSS 后者会覆盖前者,但重复声明易引发维护歧义);
- 若 .left 内部需居中内容(如单个 radio),建议在 .left 上额外设置 align-items: center 和 justify-content: center,而非依赖容器级对齐;
- flex-grow: 1 已确保 .left 占据剩余空间,无需设置固定宽高;
- 如需响应式适配,可结合 min-height 或 max-height 进一步约束,但本例中 stretch 已足够。
这样修改后,.left 将始终与 .right 保持等高,红色背景完整覆盖整个左侧区域,无论右侧内容多少行。










