如何精准将 div 水平垂直居中于整个网页

使用 flexbox 实现 div 在视口内绝对居中,关键在于为 body 设置 `display: flex`、`justify-content: center`、`align-items: center` 及 `height: 100vh`,并清除默认 margin。

要让一个

元素精确地水平且垂直居中于整个浏览器视口(viewport)中央,最简洁可靠的现代方案是采用 Flexbox 布局,并确保父容器(即 )占据完整视口高度。

✅ 正确做法(推荐)

只需对

应用以下 CSS 即可实现“一劳永逸”的居中效果:
body {
  margin: 0;                    /* 清除浏览器默认外边距 */
  display: flex;                 /* 启用 Flex 布局 */
  justify-content: center;       /* 水平居中 */
  align-items: center;           /* 垂直居中 */
  height: 100vh;                 /* 占满整个视口高度 */
}

此时,任意直接子元素(如 .box)会自动在视口正中心呈现,无需额外设置其内部的 display: flex 或居中属性(除非你有更精细的内部布局需求)。

? 注意:原代码中仅设置了 justify-content: center,却遗漏了 align-items: center 和 height: 100vh,导致仅水平居中、垂直方向仍按文档流自然排列——这是常见疏漏。

? 补充优化建议

  • .box 宽度建议改用 max-content 或固定值(如 400px):width: 50vh 在窄屏下可能过宽,而 width: max-content 更契合内容自适应;
  • 添加 padding 提升可读性:如 padding: 1em 2em,避免内容紧贴边框;
  • 移除冗余 Flex 设置:.content 和 .buttons 的 Flex 布局可保留(用于内部排版),但 .box 自身若仅作居中容器,其 display: flex、justify-content、align-items 可省略——因为 body 已完成整体居中。

✅ 最终精简版 CSS 示例

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh; /* 推荐用 min-height 防止内容撑高时错位 */
  background-color: #f5f5f5;
}

.box {
  border: 5px solid #000;
  padding: 1.5rem;
  text-align: center;
  background: white;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}

⚠️ 注意事项

  • 不要忘记重置 body { margin: 0 },否则默认外边距会破坏居中基准;
  • 避免对 html 或 body 设置 overflow: hidden,以免遮挡内容或影响滚动;
  • 若页面后续需支持滚动,确保居中容器不会因 height: 100vh 导致底部内容被截断——此时 min-height: 100vh 是更稳健的选择;
  • 在旧版浏览器(如 IE10 以下)中 Flexbox 支持有限,如需兼容,可考虑 position: absolute + transform 方案,但本例中无需降级。

掌握这一模式后,无论是登录框、模态弹窗还是游戏启动页(如示例中的 BLACKJACK 标题区),都能以最少代码实现精准视觉居中。