float小技巧

88 阅读1分钟
  • 使用float布局时,如图当需要对800px长的父盒子,中间的子盒子每行铺平4个时,如何做到? 未命名表单_可牛看图.png 对子元素以及元素之间的距离之间的计算,假设子元素的长度为x,它们之间的间距为y,可得4x + 3y = 800,大概计算子元素的宽度191px,之间的距离为12px。

这时候使用float布局,将父元素清除浮动,并给子元素设置float:left以及右边距margin-right:12px,代码如下:

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        .clearfix:after {
            content: '';
            clear: both;
            display: block;
        }
        
        .content {
            width: 800px;
            margin-left: auto;
            margin-right: auto;
        }
        
        .content>div {
            margin-top: 10px;
            float: left;
            height: 191px;
            width: 191px;
            margin-right: 12px;
            border: 1px solid red;
        }
     <div class="content clearfix">
        <div class="child1"></div>
        <div class="child2"></div>
        <div class="child3"></div>
        <div class="child4"></div>
        <div class="child5"></div>
        <div class="child6"></div>
        <div class="child7"></div>
        <div class="child8"></div>
    </div>

这时候可以看到效果:

效果图 这是因为给每个元素加上了一个margin-right:12px,这时候只需要取消4的倍数元素的margin-right就可以了

        .content>div:nth-child(4n) {
            margin-right: 0px;
        }

当时这只是建立在不考虑兼容性的情况下,在class为content的元素中加上一个元素div并加上一个margin-right:-12px; 完整代码:

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        .clearfix:after {
            content: '';
            display: block;
            clear: both;
        }
        
        .content {
            outline: 1px solid red;
            width: 800px;
            margin-left: auto;
            margin-right: auto;
        }
        
        .content>.x>div {
            margin-top: 10px;
            float: left;
            height: 191px;
            width: 191px;
            margin-right: 12px;
            border: 1px solid red;
        }
        
        .x {
            margin-right: -12px;
        }
    </style>
</head>

<body>

    <div class="content">
        <div class="x clearfix">
            <div class="child1"></div>
            <div class="child2"></div>
            <div class="child3"></div>
            <div class="child4"></div>
            <div class="child5"></div>
            <div class="child6"></div>
            <div class="child7"></div>
            <div class="child8"></div>
        </div>
    </div>
</body>

</html>