前端常见面试题:实现元素水平垂直居中

分成 块级元素 和 行内元素 进行总结

块级元素

flex布局:

    具体的做法就是把父元素的属性: jusity-content(主轴对齐方式) 和 align-items(交叉轴单行对齐)  的值设置为 center


效果图:

块级元素Flex布局


Css代码:


#warp{

    width:100%;

    height:400px;

    background-color:antiquewhite;

    display:flex;

    /* 主轴的对齐方式 */

    justify-content:center;

    /* 交叉轴上的单行对齐 */

    align-items:center;

}

.center{

    width:160px;

    height:220px;

    background-color:azure;

    text-align:center;

 }

.centerspan{

    line-height:220px;

}



Html代码:


    

        实现水平垂直居中

    



绝对定位(position: absolute)+ 负margin(这种方式需要知道元素的宽高):


效果图:

绝对定位+margin


Css代码:


.center{

    width:400px;

    height:200px;

    background-color:beige;

    position:absolute;

    top:50%;

    left:50%;

    margin-top:-100px;

    margin-left:-200px;

    text-align:center;

 }

.centerspan{

    line-height:200px;

 }



Html代码:


    水平垂直居中



绝对定位(position: absolute)+ transform: translate()属性:


效果图:

绝对定位+transform


代码:


.center{

    width:380px;

    height:400px;

    background-color:#ccc;

    position:absolute;

    top:50%;

    left:50%;

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

    text-align:center;

 }



总结: 

    其实后面两种原理是相同的,通过绝对定位设置top和left为50%之后,再考虑处理元素自身的宽高;区别是负margin的方式需要知道具体的值才能设置,而transform: translate()设置百分比就可以,不需要知道具体的值

其他:

如果只需要水平居中:给对应的块级元素设置 margin: 0 auto;  即可


行内元素

    1、在父元素上设置:text-align: center;  实现水平居中;设置元素的 line-height 的值等于父元素的 height 的值实现垂直居中,这应该是我们平时用的比较多的一种

    2、在父元素上设置:text-align: center;  实现水平居中;再给父元素设置 display: table;  行内元素设置 display: table-cell;  vertical-align: middle; 实现垂直居中


效果图:

table类型


Css代码:


.warp{

    display:table;

    width:200px;

    height:300px;

    background-color:blanchedalmond;

    text-align:center;

 }

.warpspan{

    display:table-cell;

    vertical-align:middle;

 }



Html代码:


    设置元素水平垂直居中



3、给行内元素一个没有宽高的父元素,利用 flex 布局使其父元素水平垂直居中即可


效果图:

行内元素Flex布局


Css代码:


*{margin:0;padding:0;list-style:none;}

.container{

    margin:100px00100px;

    width:400px;

    height:400px;

    background-color:blanchedalmond;

    display:flex;

    justify-content:center;

    align-items:center;

 }

.center{

    /* padding: 10px; */

    background-color:#ccc;

 }



Html代码:


    

        元素水平垂直居中

    



以上就是这次总结全部的内容,欢迎留言补充、指正,如果对你有帮助还请点赞、转发。

你可能感兴趣的:(前端常见面试题:实现元素水平垂直居中)