如何让设置浮动的元素水平垂直居中

1.多个子元素同时设置浮动后,欲想实现水平垂直居中,实现代码如下:

<!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>
        .clearFix::after{
            display:block;
            clear:both;
            content:"";
            visibility:hidden;
            height:0;
           
        }
        .clearFix{
            zoom: 1;
        }
        .container{
             100%;
            height: 800px;
            background-color: blue;
            /* 水平垂直居中 */
            position: relative;
        }
        .child1{
            200px;
            height:200px;
            background-color: red;
        }
        .child2{
            200px;
            height: 200px;
            background-color: goldenrod;
        }
        .lf{
            float: left;
        }
        /* 水平垂直居中 */
        .box{
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%,-50%);
        }
    </style>
</head>
<body>
    <div class="container clearFix">
        <div class="box clearFix">
            <div class="child1 lf">child1</div>
            <div class="child2 lf">child2</div>
        </div>
    </div>
</body>
</html>

2.使用flex布局(有兼容性)

<!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>
        .clearFix::after{
            display:block;
            clear:both;
            content:"";
            visibility:hidden;
            height:0
        }
        .clearFix{
            zoom: 1;
        }
        .container{
             100%;
            height: 800px;
            background-color: blue;
            
            display: flex;
            /* 垂直居中 */
            align-items: center;
            /* 水平居中 */
            justify-content:center;
        }
        .child1{
            200px;
            height:200px;
            background-color: red;
        }
        .child2{
            200px;
            height: 200px;
            background-color: goldenrod;
        }
        .lf{
            float: left;
        }
    </style>
</head>
<body>
    <div class="container clearFix">
        <div class="child1 lf">child1</div>
        <div class="child2 lf">child2</div>
    </div>
</body>
</html>

3.垂直居中使用display: table-cell; vertical-align: middle; 水平居中:嵌套一层div,设置宽度为子元素宽度,在设置margin: 0 auto;

<!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>
        .clearFix::after{
            display:block;
            clear:both;
            content:"";
            visibility:hidden;
            height:0;
           
        }
        .clearFix{
            zoom: 1;
        }
        .container{
             600px;
            height: 800px;
            background-color: blue;
            /* 水平垂直居中 */
            display: table-cell;
            vertical-align: middle;
        }
        .child1{
            200px;
            height:200px;
            background-color: red;
        }
        .child2{
            200px;
            height: 200px;
            background-color: goldenrod;
        }
        .lf{
            float: left;
        }
        /* 水平垂直居中 */  
        .box{
            400px;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    <div class="container clearFix">
        <div class="box clearFix">
            <div class="child1 lf">child1</div>
            <div class="child2 lf">child2</div>
        </div>
    </div>
</body>
</html>
原文地址:https://www.cnblogs.com/web-record/p/9144359.html