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

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

html:

<div class="container">
  <div class="content"></div>
</div>

css:

.container {
   
  width: 500px;
  height: 500px;
  border: 1px solid #000;

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

Flex 布局

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

.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

.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-items 是 align-items 和 justify-items 的简写形式。

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

.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。

.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. CSS水平垂直居中元素多种方式

    2024-01-12 10:56:04       67 阅读
  2. CSS水平垂直居中

    2024-01-12 10:56:04       54 阅读
  3. css垂直水平居中实现方式

    2024-01-12 10:56:04       56 阅读
  4. CSS 垂直水平居中总结(全)

    2024-01-12 10:56:04       73 阅读
  5. 如何使一个盒子水平垂直居中常用

    2024-01-12 10:56:04       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-12 10:56:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-12 10:56:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-12 10:56:04       87 阅读
  4. Python语言-面向对象

    2024-01-12 10:56:04       97 阅读

热门阅读

  1. neo4j中如何并列执行多条命令

    2024-01-12 10:56:04       55 阅读
  2. GBASE南大通用 访问其他数据库服务器

    2024-01-12 10:56:04       41 阅读
  3. go 语言常见问题(3)

    2024-01-12 10:56:04       68 阅读
  4. 50天精通Golang(第14天)

    2024-01-12 10:56:04       53 阅读
  5. Unity敌人的自动巡逻脚本

    2024-01-12 10:56:04       58 阅读
  6. 服务器带宽有什么用? 带宽不足怎么办?

    2024-01-12 10:56:04       51 阅读
  7. Jtti:新手用户如何构建HTML 5 Web页面?

    2024-01-12 10:56:04       51 阅读
  8. SpringMVC传值与取值

    2024-01-12 10:56:04       53 阅读
  9. B_Tree 的数据结构

    2024-01-12 10:56:04       60 阅读