css垂直居中(二)

    一:利用Flex布局css

      

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            .demo{
                width:150px;
                height:200px;
                border:1px solid pink;
                font-size:16px;
            }
            .demo-flex{
                display:flex;
                align-items:center;
                justify-content: center;
                flex-direction:column;
            }
        </style>
    </head>
    <body>
        <div id="" class="demo demo-flex">
            <span>测试文字测试文字</span>
        </div>
        
    </body>
</html>

    二:line-heighthtml

       1. div + p (块级元素) :布局

         子元素宽高设置:测试

         当子元素 没有设置宽高时, 元素的宽高会默认和父级块元素的一致;当  元素有本身的宽高时,不会继承父元素的宽高;字体

      2. 行间距设置:flex

         设置子元素的垂直居中效果,能够直接设置父元素的 line-height == height ,或者设置子元素的 line-height == 父元素的 height 。spa

    ps:当子元素的字体太大,而其行间距又过小时,字体会贴紧容器顶部,若是不能容下字体,字体会有部分超出容器顶部。code

 

      1. div + span (行内元素):orm

       子元素宽高设置: 很遗憾对于行内元素来讲,是没法设置的。htm

      2. 行间距设置:

          设置子元素的垂直居中效果,能够直接设置父元素的 line-height == height ,或者设置子元素的 line-height == 父元素的 height 。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            .demo{
                width:200px;
                height:120px;
                border:1px solid pink;
                text-align:center;
            }
            .demo-flex{
                line-height:120px;
            }
        </style>
    </head>
    <body>
        <div id="" class="demo demo-flex">
            <span>测试文字测试文字</span>
        </div>
        
    </body>
</html>

 

    注意:line-height 这个只能在单行文本中使用

    三:利用position 定位来实现

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            .demo{
                position:relative;
                width:200px;
                height:120px;
                border:1px solid pink;
                text-align:center;
            }
            /* 定位方法一: */
            .remind{
                position:absolute;
                left:50%;
                top:50%;
                transform:translate(-50%,-50%) ;
            }
            
            /*  定位方法二*/
            .remind{
                position:absolute;
                top:0;
                left:0;
                right:0;
                bottom:0;
                margin:auto 0;
                height:0;
            }
            
        </style>
    </head>
    <body>
        <div id="" class="demo demo-flex">
            <p class="remind">测试文字测试文字</p>
        </div>
        
    </body>
</html>

 

    四:利用vertical-align实现居中

    vertical-align 属性设置元素的垂直对齐方式。该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。

     

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            .demo{
                width:200px;
                height:120px;
                border:1px solid pink;
                text-align:center;
            }
            .demo:before{    /* 伪元素 */
                content:"";
                display:inline-block;
                height:100%;
                width:1%;
                vertical-align:middle;
            }
            .remind{
                vertical-align:middle;
            }
            
        </style>
    </head>
    <body>
        <div id="" class="demo demo-flex">
            <span>测试文字测试文字</span>
        </div>
        
    </body>
</html>

    即在父容器内放一个100%高度的伪元素,让文本和伪元素垂直对齐,从而达到垂直居中的目的。

相关文章
相关标签/搜索