多行位置垂直居中

2019-11-21  本文已影响0人  牛妈代代

方法1:父级元素不定高,设置父及元素display:table;子元素设置display:table-cell;vertical-align:center。
方法2:父级元素定高,设置子元素为display:inline-block;vertical-align:center;模拟单行元素的垂直居中。
方法3:flex布局,有兼容性,ie9一下不支持

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .bg_box {
            width: 300px;
            height: 300px;
            margin-top: 20px;
            background-color: #BBBBBB;
            border-radius: 100%;
        }

        /*方法一*/
        .span_box {
            display: table;
        }

        .words_span {
            display: table-cell;
            vertical-align: middle;
        }

        .bg_box {
            width: 300px;
            height: 300px;
            margin-top: 20px;
            background-color: #BBBBBB;
        }

        /*方法二*/
        .p_box {
            line-height: 300px;
        }

        .words_p {
            display: inline-block;
            line-height: 20px;
            /*单独给子元素设置行高,覆盖父级元素的行高*/
            vertical-align: middle;
            /*基线居中对齐*/
        }
        /*方法三*/
        .box{display:flex;display:-ms-flexbox;width:200px;height:200px;border:1px dotted #ccc;justify-content:center;align-items:center;}
        .box span{display:inline-block;width:100%;padding:5px;}
    </style>
</head>

<body>
    <div class="span_box bg_box">
        <span class="words_span">
            方法一:高度不固定,父元素使用display:table和子元素使用display:table-cell属性来模拟表格,子元素设置vertical-align:middle即可垂直居中
        </span>
    </div>

    <div class="p_box bg_box">
        <p class="words_p">
            方法二:高度固定,对子元素设置display:inline-block属性,使其转化成行内块元素,模拟成单行文本。父元素设置对应的height和line-height。对子元素设置vertical-align:middle属性,使其基线对齐。添加line-height属性,覆盖继承自父元素的行高。缺点:文本的高度不能超过外部盒子的高度。
        </p>
    </div>

    <div class="box">
            <span>方法三:使用flex布局实现多行文字垂直居中,不兼容ie9及一下浏览器</span>
    </div>


</body>

</html>
上一篇下一篇

猜你喜欢

热点阅读