Spirit带你了解CSS各个方向的居中方案

  • A+
所属分类:Web前端
摘要

先看HTML的骨架后面的代码都是基于这个来写的通过 margin 水平居中通过 position 和 transform 水平居中


水平居中和垂直居中的方案

先看HTML的骨架

后面的代码都是基于这个来写的

<!DOCTYPE html> <html lang="en">  <head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Document</title> </head> <link rel="stylesheet" href="./style.css">  <body>     <div class="box vertical align"></div> </body> </html> 

水平居中

  1. 通过 margin 水平居中

    /* 1. 通过margin 水平居中 */ .box {     width: 200px;     height: 200px;     background-color: orange; } .align {     margin: 0 auto; } 
  2. 通过 position 和 transform 水平居中

    /* 2.通过 position 和 transform 水平居中 */ .box {     width: 200px;     height: 200px;     background-color: orange; } .align {     position: relative;     left: 50%;     transform: translateX(-50%); } 
  3. 通过flex水平居中

    body {     display: flex;     justify-content: center; } 
  4. 通过 text-align:center 水平居中

    注意:使用text-align的时候,子元素要设置为行内块元素,是利用了行内元素的特性

    body {     text-align: center; } .box {     display: inline-block;     width: 200px;     height: 200px;     background-color: orange; } 

垂直居中

  1. flex布局垂直居中

    可以在父类上加 align-item:center实现垂直居中

    body {     height: 100vh;     display: flex;     align-items: center; } 

    也可以在子类元素上加 align-self:center 实现垂直居中

    .box {     align-self: center;     width: 200px;     height: 200px;     background-color: orange; } 
  2. 通过position和transform 来垂直居中

    /* 第二种方案 position和transform */ .vertical{     position: relative;     top: 50%;     transform: translateY(-50%); } 

绝对居中

  1. flex布局实现绝对居中

    body {     height: 100vh;     display: flex;     align-items: center;     justify-content: center; } 
  2. 通过 position和transform 实现绝对居中

     /* 第二种方案 position和transform */ .box {     position: relative;     top: 50%;     left: 50%;     transform: translate(-50%, -50%); }