使用vertical-align实现垂直对齐

关于垂直对齐,之前研究过好几次了,但感觉每次都没研究透彻,做了几个效果,就觉得自己掌握了,实在是自欺欺人。真乃搞技术的大忌。

这两天又下定决心重新开始研究vertical-allign这个高深莫测的属性了,决定一举攻破城池。但由于这个属性牵扯到的东西实在太多,line-height、盒模型等,都是css中的难点。所以要彻底掌握要花好些时间了。

使用table-cell实现垂直对齐:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div{
            display: table-cell;
            height: 10em;
            border: 1px solid #ccc;
            vertical-align: middle;
        }
        span{
            display: inline-block;
            vertical-align: middle;
        }
    </style>
</head>
<body>
    <div>
        <span>这是一个关于多行文字的垂直居中<br>这是第二行</span>
    </div>
</body>
</html>

使用after伪元素实现对齐:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        html,body,.box{
            margin: 0;
            height: 100%;
        }

        .box{
            width: 100vw;
            height: 100vh;
            text-align: center;
            background-color: rgba(0,0,0,.3);
        }
        .box:after{
            content: '';
            display: inline-block;
            width: 0;
            height: 100%;
            vertical-align: middle
        }
        img{
            vertical-align: middle
        }
    </style>
</head>
<body>
    <div class="box">
        <img src="img/1.jpg">
    </div>
</body>
</html>
原文地址:https://www.cnblogs.com/11lang/p/7465057.html