CSS水平垂直居中(最常见的三种方案flex、grid、absolute)

本文简单介绍一下现代 CSS 中最常见的三种水平垂直居中方案。

html:

html 复制代码
<div class="container">
  <div class="content"></div>
</div>

css:

css 复制代码
.container {
  width: 500px;
  height: 500px;
  border: 1px solid #000;

  .content {
    width: 200px;
    height: 200px;
    background-color: #ccc;
  }
}

Flex 布局

方案1:父元素设置 flex 布局,并设置主轴以及交叉轴的对齐方式:

css 复制代码
.container {
  width: 500px;
  height: 500px;
  border: 1px solid #000;
  display: flex;
  justify-content: center;
  align-items: center;

  .content {
    width: 200px;
    height: 200px;
    background-color: #ccc;
  }
}

方案2:父元素设置 flex 布局,子元素设置 margin: auto

css 复制代码
.container {
  width: 500px;
  height: 500px;
  border: 1px solid #000;
  display: flex;

  .content {
    width: 200px;
    height: 200px;
    background-color: #ccc;
    margin: auto;
  }
}

Grid 布局

父元素设置 grid 布局,以及 place-items: centerplace-itemsalign-itemsjustify-items 的简写形式。

Grid 的兼容性不如 Flex,对于一些比较老的浏览可能不太支持。

css 复制代码
.container {
  width: 500px;
  height: 500px;
  border: 1px solid #000;
  display: grid;
  place-items: center;

  .content {
    width: 200px;
    height: 200px;
    background-color: #ccc;
  }
}

绝对定位 absolute

使用绝对定位会使元素脱离文档流,一般常用于弹窗、对话框等。

父元素设置相对定位,子元素设置绝对定位,设置 top、left 以及 transform。

css 复制代码
.container {
  position: relative;
  width: 500px;
  height: 500px;
  border: 1px solid #000;

  .content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 200px;
    height: 200px;
    background-color: #ccc;
  }
}

topleft属性都设置为50%。这会将.content元素的左上角定位到其父元素(.container)的中心。transform: translate(-50%, -50%);被应用到.content元素上。这会将.content元素自身向左和向上移动其自身宽度和高度的50%,从而使得.content元素的中心与其父元素的中心对齐,实现了居中。

相关推荐
EndingCoder1 小时前
React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用
前端·react.js·架构·前端框架
阿阳微客2 小时前
Steam 搬砖项目深度拆解:从抵触到真香的转型之路
前端·笔记·学习·游戏
德育处主任Pro3 小时前
『React』Fragment的用法及简写形式
前端·javascript·react.js
CodeBlossom3 小时前
javaweb -html -CSS
前端·javascript·html
打小就很皮...4 小时前
HBuilder 发行Android(apk包)全流程指南
前端·javascript·微信小程序
集成显卡5 小时前
PlayWright | 初识微软出品的 WEB 应用自动化测试框架
前端·chrome·测试工具·microsoft·自动化·edge浏览器
前端小趴菜055 小时前
React - 组件通信
前端·react.js·前端框架
Amy_cx6 小时前
在表单输入框按回车页面刷新的问题
前端·elementui
dancing9996 小时前
cocos3.X的oops框架oops-plugin-excel-to-json改进兼容多表单导出功能
前端·javascript·typescript·游戏程序
后海 0_o7 小时前
2025前端微服务 - 无界 的实战应用
前端·微服务·架构