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

使用CSS flexbox实现div垂直居中时align-items不生效如何解决

问题核心原因

  • 根元素html未设置高度,导致body的height: 100%没有可继承的参考值,body最终高度仅等于内容高度,没有多余垂直空间支持子元素居中
  • 你当前的flex属性仅配置在.container上,仅能控制它内部的元素对齐,无法控制.container本身在父容器中的位置
  • .container中误用了align-content属性,该属性仅作用于多行flex元素的对齐,单行flex布局应使用align-items

需要修改/新增的配置

1. 调整根元素与body的样式

给html添加高度属性,同时给body配置flex布局,直接居中内部的.main容器:

/* 新增html高度配置 */
html {
  height: 100%;
}

body {
  background: url(images/pattern-background-mobile.svg);
  background-repeat: no-repeat;
  background-size: cover;
  margin: 0;
  /* 替换原height为min-height,避免内容超过视口时被截断 */
  min-height: 100%;
  /* 新增flex配置,实现内部元素垂直水平居中 */
  display: flex;
  justify-content: center;
  align-items: center;
}

2. 修正.container的对齐属性

把.container中的align-content替换为align-items,实现内部元素水平居中:

.container {
  display: flex;
  justify-content: center;
  /* 替换align-content为align-items */
  align-items: center;
  flex-direction: column;
  border: 2px solid red;
  padding: 0;
  margin: 2em;
  width: 80%;
}

如果不需要修改body的布局属性,也可以给.main容器添加如下样式,效果一致:

html, body {
  height: 100%;
  margin: 0;
}
.main {
  min-height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 19:21:03