美文网首页
史上最全css水平垂直居中的方法

史上最全css水平垂直居中的方法

作者: 漠小涵 | 来源:发表于2020-05-19 19:31 被阅读0次

总共分成两类,一类是通过设置display的属性,一类是通过position定位。
其中display可以设置为flex和table_cell
position应注意子元素绝对定位,父元素相对定位,之后设置子元素的偏移量,宽高分别为父元素的一半加上子元素的一半。这样的设置可以分为以下3种变形:
1.直接计算出偏移量的px值;
2.left, top设置成50%,再通过margin属性往回拉一半子元素的宽高;
3.left, top设置成50%,再通过transform属性往回拉一半子元素的宽高;
还有一种居中的方式就是子元素上下左右的偏移量均是0,margin:auto。注意,如果子元素没有设置宽高,那么子元素将平铺在父元素中。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>2center</title>
        <meta name="description" content="6 ways to make the element center in vertical and horizon" />
        <style>
            .f{
                width: 500px;
                height: 500px;
                background-color: red;
            }
            .s{
                width: 200px;
                height: 200px;
                background-color: yellow;
            }

            /*1.父元素设置display:flex, align-items是上下,justify-content是左右*/
/*          .father{
                display: flex;
                align-items: center;
                justify-content: center;
            }*/

            /*display: table-cell后,元素会作为一个表格单元格显示(类似 <td> 和 <th>),vertical-align: middle是垂直居中,子元素margin: auto是水平居中*/
            .father{
                display: table-cell;
                vertical-align: middle;
            }
            .son{
                margin: auto;
            }



            /*2.1position定位   子绝父相。子的宽高偏移量分别是父元素的一半加自身的一半*/
/*          .father{
                position: relative;
            }
            .son{
                position: absolute;
                left: 150px;
                top: 150px;
            }*/

            /*2.2 position定位 子绝父相。子的宽高偏移量是父元素的一半,然后用自身的margin属性再往回移自身宽高的一半。left往右是正值,往左是反值。*/
/*          .father{
                position: relative;
            }
            .son{
                position: absolute;
                left: 50%;
                top: 50%;
                margin: -100px 0 0 -100px;
            }*/     

            /*2.3 position定位 子绝父相。子的宽高偏移量是父元素的一半,然后用transition属性再往回移自身宽高的一半。右下是正值*/
/*          .father{
                position: relative;
            }
            .son{
                position: absolute;
                left: 50%;
                top: 50%;
                transform: translate(-50%, -50%); 
            }*/

/*拓展一种居中用法,先定位,再设置 left:0;right:0;margin:auto 可以使元素水平居中。 设置 top:0;bottom:0;margin:auto 可以使元素垂直居中。当然,设置四个值都是0;margin:auto;后,这个元素就在正中间了。如果不设置元素大小,就平铺了。*/
/*          .father{
                position: relative;
            }
            .son{
                position: absolute;
                left: 0;
                right: 0;
                margin: auto;
                top: 0;
                bottom: 0;
            }*/     


        </style>
    </head>
    <body>
        <div class="f father">
            <div class="s son"></div>
        </div>
    </body>
</html>

相关文章

网友评论

      本文标题:史上最全css水平垂直居中的方法

      本文链接:https://www.haomeiwen.com/subject/mlkiohtx.html