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元素的中心与其父元素的中心对齐,实现了居中。

相关推荐
祈澈菇凉1 小时前
Webpack的基本功能有哪些
前端·javascript·vue.js
小纯洁w1 小时前
Webpack 的 require.context 和 Vite 的 import.meta.glob 的详细介绍和使用
前端·webpack·node.js
想睡好2 小时前
css文本属性
前端·css
qianmoQ2 小时前
第三章:组件开发实战 - 第五节 - Tailwind CSS 响应式导航栏实现
前端·css
zhoupenghui1682 小时前
golang时间相关函数总结
服务器·前端·golang·time
White graces2 小时前
正则表达式效验邮箱格式, 手机号格式, 密码长度
前端·spring boot·spring·正则表达式·java-ee·maven·intellij-idea
庸俗今天不摸鱼2 小时前
Canvas进阶-4、边界检测(流光,鼠标拖尾)
开发语言·前端·javascript·计算机外设
bubusa~>_<2 小时前
解决npm install 出现error,比如:ERR_SSL_CIPHER_OPERATION_FAILED
前端·npm·node.js
流烟默3 小时前
vue和微信小程序处理markdown格式数据
前端·vue.js·微信小程序
梨落秋溪、3 小时前
输入框元素覆盖冲突
java·服务器·前端