用css实现Div的垂直居中

面试的时候,经常被问到css中div垂直居中的问题,趁现在整理的方法比较全面,记录下来!

相对于整个浏览器可见窗口的居中显示

宽高已知,利用margin-top和margin-left实现:

代码如下:

<!DOCTYPE html>
<html>
    <head>
        <style>
            .content {
                position: absolute; 
                width: 200px; 
                height: 200px;   
                left: 50%; 
                top: 50%;   
                margin-top: -100px;    /* 高度的一半 */  
                margin-left: -100px;    /* 宽度的一半 */  
                background: red;
            }

        </style>
    </head>
    <body>
        <div class="content">
            居中蓄力中
        </div>
    </body>
</html>

页面显示如下所示:
在这里插入图片描述
要点:

明确div的宽高之后,首先设置left、top均为50%,然后设置margin-left、margin-top分别为width、height的一半即可。

在大小固定的容器中居中显示

一、内部div宽高已知

(1)借助设置margin-left、margin-top实现居中

<!DOCTYPE html>
<html>
    <head>
        <style>
            /* 方法1:内部div宽高已知,则借助margin-top和margin-left为宽高的一半实现居中显示 */
            .box {
                position:relative;
                width: 300px;
                height: 300px;
                border: 2px solid black;
            }
            .box1 {
                position:absolute;
                width: 100px;
                height: 100px;
                top:50%;
                left:50%;
                margin-top: -50px;
                margin-left: -50px;
                font-size: 12px;
                background: red;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="box1">方法1:内部div宽高已知,则借助margin-top和margin-left为宽高的一半实现居中显示 </div>
        </div>
    </body>
</html>

页面显示如下所示:
在这里插入图片描述
要点

明确div的宽高之后,首先设置left、top均为50%,然后设置margin-left、margin-top分别为width、height的一半即可(与相对浏览器可见窗口居中显示设置要点相同)。

(2)借助设置margin:auto方法实现居中

<!DOCTYPE html>
<html>
    <head>
        <style>
            /* 方法2:借助margin:auto实现 */
            .box2 {
                position:relative;
                width: 300px;
                height: 300px;
                border: 2px solid black;
            }
            .box3 {
                position:absolute;
                width: 100px;
                height: 100px;
                left:0px;
                top:0px;
                right:0px;
                bottom:0px;
                margin:auto;
                background: red;
            }
        </style>
    </head>
    <body>
        <div class="box2">
            <div class="box3">方法2:借助margin:auto实现</div>
        </div>
    </body>
</html>

页面显示如下所示:
在这里插入图片描述
要点

明确div的宽高之后,首先设置left、right、top、bottom均为0px,然后设置margin:auto即可。

二、内部div宽高未知

(1)借助设置transform: translate(-50%,-50%)实现居中

<!DOCTYPE html>
<html>
    <head>
        <style>
            /* 方法3:借助设置transform: translate(-50%,-50%)实现居中 */
            .box4 {
                position:relative;
                width: 300px;
                height: 300px;
                border: 2px solid black;
            }
            .box5 {
                position:absolute;
                /* width: 100px;
                height: 100px; */
                left:50%;
                top:50%;
                transform: translate(-50%,-50%);
                background: red;
            }
        </style>
    </head>
    <body>
        <div class="box4">
            <div class="box5">方法3:借助设置transform: translate(-50%,-50%)实现居中</div>
        </div>
    </body>
</html>

页面显示如下所示:
在这里插入图片描述
要点

首先设置left、top均为50%,然后设置transform: translate(-50%,-50%)即可。

(2)借助弹性盒模型实现

<!DOCTYPE html>
<html>
    <head>
        <style>
            /* 方法4:借助弹性盒模型实现 */
            .box6 {
                position:relative;
                width: 300px;
                height: 300px;
                border: 2px solid black;
                display:flex;
                justify-content: center;
                align-items: center;
            }
            .box7 {
                /* width: 100px;
                height: 100px; */
                background: red;
            }
        </style>
    </head>
    <body>
        <div class="box6">
            <div class="box7">方法4:借助弹性盒模型实现</div>
        </div>
    </body>
</html>

页面显示如下所示:
在这里插入图片描述
要点

通过对外层div容器设置弹性盒模型实现,即首先设置显示方式为弹性盒模式:display:flex;然后将弹性盒子元素在主轴(横轴)方向上的对齐方式设置为居中:justify-content: center;最后设置弹性盒子项在弹性盒容器的当前行的侧轴(纵轴)方向上的对齐方式为居中:align-items: center;即可。

(3)借助设置display:table-cell实现居中

<!DOCTYPE html>
<html>
    <head>
        <style>
            /* 方法5:借助display:table-cell实现 */
            .box8 {
                position:relative;
                width: 300px;
                height: 300px;
                display:table-cell;
                text-align: center;
                vertical-align: middle;
                border: 2px solid black;
            }
            .box9 {
                /* width: 100px;
                height: 100px; */
                background: red;
                display:inline-block;
            }
        </style>
    </head>
    <body>
        <div class="box8">
            <div class="box9">方法5:借助display:table-cell实现</div>
        </div>
    </body>
</html>

页面显示如下所示:
在这里插入图片描述
要点

通过将外层div容器作为一个表格单元格显示,即首先设置显示方式为表格单元格:display:table-cell;然后对单元格内容设置左右居中:text-align: center;接着对单元格内容设置上下居中:vertical-align: middle;最后设置单元格中内容部分为行内块元素display:inline-block;即可。

参考文献:https://blog.csdn.net/pinbolei/article/details/84105893

发布了33 篇原创文章 · 获赞 35 · 访问量 812

猜你喜欢

转载自blog.csdn.net/chaopingyao/article/details/104860716
今日推荐