CSS实现垂直居中的7种方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS实现垂直居中的7种方法相关的知识,希望对你有一定的参考价值。

参考技术A html

CSS:

重点:父容器高度和子元素line-height一样的数值,内容中的行内元素就会垂直居中。

HTML:

CSS:

重点:给父元素添加一个伪元素::before,让这个伪元素的div高度为100%,这样其他div就可垂直居中了,但div 本身就是块级元素,而vertical-align是行内元素属性,则需要修改为inline-block。

HTML:

CSS:

重点:在父元素中设置相对定位position: relative,子元素设置绝对定位 position: absolute;top和left相对父元素的50%,与其搭配的 transformse: translate(-50% , -50%)表示X轴和Y轴方向水平居中。

HTML:

CSS:

重点:子元素绝对定位position:absolute,父元素相对定位position: relative,将上下左右的数值都设置为0,同时margin:auto。绝对定位是会脱离文档流的,这点要注意一下。

HTML:

CSS:

重点:给父元素设置display: flex布局,水平居中 justify-content: center,垂直居中align-items: center。

HTML:

CSS:

重点:父元素position定位为relative,子元素position定位为absolute。水平居中同理。calc居中要减多少要结合到自己的宽高设置多少再进行计算。

HTML:

CSS:

重点:将父元素设置display:table,子元素table-cell会自动撑满父元素。组合 display: table-cell、vertical-align: middle、text-align: center完成水平垂直居中。

CSS元素垂直居中的几种方法

在网页响应式布局中,实现水平居中很简单。可是,垂直居中方面,元素的宽度和高度是不可控的,所以很多办法并不适用。

总结了下平时用到的垂直居中的几种办法:

demo中HTML代码:

<div class="center">
        <span></span>
 </div>

一:使用table-cell;

CSS代码:

.table{
  display: table;
  width: 100%;
  height: 100%;
}
.center{
  display: table-cell;
  vertical-align:middle;
  text-align: center;
}
span{
  display: block;
  width: 100px;
  height: 100px;
  margin: 0 auto;
  background-color: #cecece;
}

 

HTML结构:

<div class="table">
      <div class="center">
           <span></span>
      </div>
</div>

从上面代码可以看出,为了实现垂直居中,添加了额外的元素作为外部容器,且同样要设置外部容器的高度,所以一般情况下不采用这种方式。

二:使用absolute定位

CSS代码:

.center{
        position: relative;
        height: 100%;/*必须定义父级元素的高度*/
        text-align: center;
    }
    span{
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        display: block;
        width: 100px;
        height: 100px;
        margin:auto;/*margin为auto而不是margin:0 auto*/
        background-color: #cecece;
    }

三:使用translate

CSS:

.center{
        position: relative;
        height: 100%;/*必须定义父级元素的高度*/
        text-align: center;
    }
    span{
        position: absolute;
        top: 50%;
        left: 50%;
        right: 0;
        bottom: 0;
        display: block;
        width: 100px;
        height: 100px;
        background-color: #cecece;
        transform:translate(-50%,-50%);
        -webkit-transform:translate(-50%,-50%);
    }

四:使用flex布局

CSS:

.center{
        height: 100%;
        display: flex;
        display: -webkit-flex;
        justify-content:center;
        align-items:center;
    }
    span{
        display: block;
        width: 100px;
        height: 100px;
        margin: 0 auto;
        background-color: #cecece;
    }

五:使用calc()

CSS:

.center{
        position: relative;
        height: 100%;
    }
    span{
        position: absolute;
        top: calc(50% - 50px);
        left: calc(50% - 50px);
        display: block;
        width: 100px;
        height: 100px;
        background-color: #cecece;
    }

以上五种垂直居中为在项目中使用到的,以后在使用中,可根据页面布局情况选择最合适的方式。

以上是关于CSS实现垂直居中的7种方法的主要内容,如果未能解决你的问题,请参考以下文章

CSS实现垂直居中的5种方法

CSS实现垂直居中的5种方法

垂直居中

CSS实现垂直居中的几种方法

HTML CSS中如何实现DIV中的图片水平垂直居中对齐

CSS水平和垂直居中的几种实现方法