技术频道


用 CSS 实现元素垂直居中,有哪些好的方案?

1.不知道自己高度和父容器高度的情况


这种情况下,利用绝对定位只需要以下三行:

parentElement{
        position:relative;
    }

 childElement{
        position: absolute;
        top: 50%;
        transform: translateY(-50%);

 }

2.若父容器下只有一个元素,且父元素设置了高度


这种情况下,只需要使用相对定位即可:

parentElement{
        height:xxx;
    }

    .childElement {
      position: relative;
      top: 50%;
      transform: translateY(-50%);
    }

CSS 垂直居中效果演示:Edit fiddle - JSFiddle

3.Flex 布局:


不考虑兼容老式浏览器的话,用 Flex 布局简单直观一劳永逸

parentElement{
    display:flex;/*Flex布局*/
    display: -webkit-flex; /* Safari */
    align-items:center;/*指定垂直居中*/
}

CSS 垂直居中效果演示:CodePen.io