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

如何在flex-grow:1的容器内实现垂直居中?附代码示例

解决方案:在flex-grow:1的.content容器中垂直居中内容

没问题,这事儿其实很简单,只需要给你的.content容器启用flex布局,就能轻松实现.foo内容的垂直居中。我给你整理了完整的可运行代码,顺便拆解下思路:

完整代码

HTML部分

<div class="page">
  <div class="header"></div>
  <div class="content">
    <div class="foo">
      <div>I want to be center of content</div>
    </div>
  </div>
  <div class="footer"></div>
</div>

CSS部分

html, body {
  height: 100%;
}
body {
  margin: 0;
}
.page {
  height: 100%;
  display: flex;
  flex-direction: column;
}
.header {
  flex-shrink: 0;
  background-color: green;
  height: 50px;
}
.content {
  flex-grow: 1;
  /* 核心:把content变成flex容器 */
  display: flex;
  align-items: center; /* 垂直居中 */
  /* 如果需要水平居中,再加下面这行 */
  /* justify-content: center; */
}
.footer {
  flex-shrink: 0; /* 和header一致,防止被压缩 */
  background-color: gray;
  height: 50px;
}

原理说明

  • 你的.page已经是垂直方向的flex容器了,.content通过flex-grow:1占据了页面的剩余空间,但它本身还不是flex容器,所以没法直接让内部元素居中。
  • 给.content加上display: flex后,它就变成了flex容器,此时用align-items: center就能让它的直接子元素(也就是.foo)在垂直方向上居中。
  • 另外补充了.footer的flex-shrink:0,和.header保持一致,这样即使页面内容过多,页脚也不会被压缩变形。

如果需要让内容同时水平居中,只需要给.content再加一行justify-content: center就行,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:14:10