因为工作中有用到,所以找了几种。

HTML结构如下

<body>

<div class="Absolute-Center"></div>

</body>

CSS样式如下

1、

body {
    height: 100%;
    width: 100%;
}

.Absolute-Center {
    background-color: greenyellow;
    width: 300px;
    height: 300px;

    position: absolute;
    top: 50%;
    left: 50%;

    margin-top: -150px;
    margin-left: -150px;

}

第一种方式比较常见,先将需要垂直居中的元素进行绝对定位,然后用设置top和left各为50%,在利用margin将他们偏移 -1/2的width和height 就行了。

这种方式比较方便,但必须知道元素的长宽才行。

2、

body {
    height: 100%;
    width: 100%;
}

.Absolute-Center {
    background-color: greenyellow;
    width: 50%;
    height: 50%;

    position: absolute;
    top: 50%;
    left: 50%;

    transform: translate(-50%,-50%);
}

第二种方式则用到了 tranform属性中的translate进行偏移,这种做的好处就是不用知道元素的长宽,只需要设置 -50% 即可

3、

body {
    position: absolute;
    height: 100%;
    width: 100%;

    display: flex;
    align-items: center;
    justify-content: center;
}

.Absolute-Center {
    background-color: greenyellow;
    width: 50%;
    height: 50%;
}

 第三种则用到了 CSS3的flex来进行垂直居中 将父元素display为flex 然后设置 align-items和justify-content都为center即可