float浮动元素如何居中

6,500 阅读2分钟

1. 浮动元素宽度确定

(1)使用margin: 0 auto

加一层父级div:在需要居中的浮动元素(A)外加一层父级div(B),并且A和B宽度width相等,给父级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">
    <title>Document</title>
    <style>
        .content{
            width: 100px;
            border: 3px solid red;
            margin: 0 auto;
        }
       .box{
           width: 100px;
           height: 100px;
           border: 3px solid blue;
           float: left;
       }
    </style>
</head>
<body>
        <div class="content">
            <div class="box">123</div>
        </div>  
</body>
</html>

(2)使用 margin-left:50%

在需要居中的浮动元素(A)外加一层父级元素div(B),需要子元素确定宽度,设置 margin-left: 50%; left:-25px;(宽度的一半)(将子元素向左移动其宽度的一半,这个时候可保证子元素的中间点位于父元素的中央)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .content{
            width: 300px;           
            border: 3px solid red;
        }
       .box{
           width: 50px;
           margin-left: 50%;
           border: 3px solid blue;
           float: left;
           position: relative;(为啥要用position??)
           left: -25px;
       }
    </style>
</head>
<body>
        <div class="content">
            <div class="box">123</div>
        </div>  
</body>
</html>

(3)使用position定位

浮动元素绝对定位,父级元素相对定位,left,top都设置50%,此时子元素的左顶点在页面中间,设置 margin: -50px 0px 0px -50px; (顶部和左边移元素的一半);子元素页面居中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .content{
           margin: 300px;
           height: 300px;
           position: relative;
           background-color: silver;          
        }
       .box{  
           width: 100px;
           height: 100px;
           border: 3px solid blue;
           float: left;
           position: absolute;
           left: 50%;
           top: 50%;
           margin: -50px 0px 0px -50px;
       }
    </style>
</head>
<body>
        <div class="content">
            <div class="box">123</div>
        </div>  
</body>
</html>

2.浮动元素宽度不确定,使用position定位

浮动元素绝对定位,父级元素相对定位,left,top都设置50%,此时子元素的左顶点在页面中间,设置transform:translate(-50%,-50%);子元素页面居中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .content{
           margin: 300px;
           height: 300px;
           position: relative;
           background-color: silver;          
        }
       .box{  
           width: 100px;
           height: 100px;
           border: 3px solid blue;
           float: left;
           position: absolute;
           left: 50%;
           top: 50%;
           transform:translate(-50%,-50%);

       }
    </style>
</head>
<body>
        <div class="content">
            <div class="box">123</div>
        </div>  
</body>
</html>