等分布局

方案一:
利用width百分比实现

<!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>
        .parent {
            width: 100%;
            height: 300px;
            background-color: #ccc;
        }
        
        .col1,
        .col2,
        .col3,
        .col4 {
            width: 25%;
            float: left;
            height: 300px;
        }
        
        .col1 {
            background-color: blue;
        }
        
        .col2 {
            background-color: red;
        }
        
        .col3 {
            background-color: hotpink;
        }
        
        .col4 {
            background-color: skyblue;
        }
    </style>
</head>

<body>
    <div class="parent">
        <div class="col1"></div>
        <div class="col2"></div>
        <div class="col3"></div>
        <div class="col4"></div>
    </div>
</body>

</html>

当要实现有间距的等分布局时会出现多一条间隙,该如何解绝?
此时需要在原有基础上再包一层父级元素

<!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>
        * {
            padding: 0;
            margin: 0;
        }
        
        .pre {
            overflow: hidden;//因为内部的盒子margin-left负值 超出了该盒子的宽度。因此使用overflow:hidden
        }
        
        .parent {
            height: 300px;
            margin-left: -10px;//把盒子往做移动10px,正好覆盖了多出来的10px间隔
        }
        
        .col1,
        .col2,
        .col3,
        .col4 {
            width: 25%;
            float: left;
            height: 300px;
            box-sizing: border-box;
            padding-left: 10px;
        }
        
        .inner {
            height: 300px;
        }
        
        .col1 .inner {
            background-color: blue;
        }
        
        .col2 .inner {
            background-color: red;
        }
        
        .col3 .inner {
            background-color: hotpink;
        }
        
        .col4 .inner {
            background-color: skyblue;
        }
    </style>
</head>

<body>
    <div class="pre">//增加的父盒子
        <div class="parent">
            <div class="col1">
                <div class="inner"></div>//使用innerde与布局无关,单纯为了能看得出间隙
            </div>
            <div class="col2">
                <div class="inner"></div>
            </div>
            <div class="col3">
                <div class="inner"></div>
            </div>
            <div class="col4">
                <div class="inner"></div>
            </div>
        </div>
    </div>
</body>

</html>

方案二:
使用display:table和display:table-cell,利用表格单元格的自动分配机制

<!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>
        * {
            padding: 0;
            margin: 0;
        }
        
        .parent {
            width: 100%;
            /*<table>*/
            display: table;
        }
        
        .col1,
        .col2,
        .col3,
        .col4 {
            /*<td>*/
            display: table-cell;
            height: 300px;
        }
        
        .col1 {
            background-color: blue;
        }
        
        .col2 {
            background-color: red;
        }
        
        .col3 {
            background-color: hotpink;
        }
        
        .col4 {
            background-color: skyblue;
        }
    </style>
</head>

<body>
    <div class="parent">
        <div class="col1"></div>
        <div class="col2"></div>
        <div class="col3"></div>
        <div class="col4"></div>
    </div>


</body>

</html>

第二种方案如何解决空白问题,在上述代码基础上

<!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>
        * {
            padding: 0;
            margin: 0;
        }
        
        .pre {
            overflow: hidden;
        }
        
        .parent {
            width: 1290px;
//如果宽度依然为百分百,那么外层父盒子和内层父盒子的宽度就相等了
//从而会让最后留有空白,要想实现间距等父布局必须满足内层父盒子减去间距等于外层父盒子
            /*<table>*/
            display: table;
            margin-left: -10px;
        }
        
        .col1,
        .col2,
        .col3,
        .col4 {
            /*<td>*/
            display: table-cell;
            height: 300px;
            box-sizing: border-box;
            padding-left: 10px;
        }
        
        .inner {
            height: 300px;
        }
        
        .col1 .inner {
            background-color: blue;
        }
        
        .col2 .inner {
            background-color: red;
        }
        
        .col3 .inner {
            background-color: hotpink;
        }
        
        .col4 .inner {
            background-color: skyblue;
        }
    </style>
</head>

<body>
    <div class="pre">
        <div class="parent">
            <div class="col1">
                <div class="inner"></div>
            </div>
            <div class="col2">
                <div class="inner"></div>
            </div>
            <div class="col3">
                <div class="inner"></div>
            </div>
            <div class="col4">
                <div class="inner"></div>
            </div>
        </div>
    </div>


</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值