多列布局

1、定宽+自适应

<div class="parent">
    <div class="left"></div>
    <div class="right"></div>
</div>
左边定宽

(1)float + margin

    float 特性:元素浮动后,其它元素会环绕它。

    <style>
        .left{
            float: left;
            width: 100px;
        }
        .right{
            margin-left: 100px;
        }
    </style>

(2)float + overflow

    <style>
        .left{
            float: left;
            width: 100px;
            margin-right: 20px; 
        }
        .right{
            overflow: hidden;
        }
    </style>

(3)table

    <style>
        .parent{
            display: table;
            width: 100%;
            table-layout: fixed;
        }
        .left, .right{
            display: table-cell;
        }
        .left{
            width: 100px;
            padding-right: 20px;  td是无法设置margin
        }
    </style>

(4)flex

    <style>
        .parent{
            display: flex;
        }

        .left{
            width: 100px;
            margin-right: 20px; 
        }
        .right{
            flex: 1;
        }
    </style>

2、不定宽+自适应

<div class="parent">
    <div class="left"></div>
    <div class="right"></div>
</div>
左边宽度由内容决定

(1)float + overflow

    <style>
        .left{
            float: left;
            margin-right: 20px; 
        }
        .right{
            overflow: hidden;
        }
    </style>

(2)table

    <style>
        .parent{
            display: table;
            width: 100%;
        }
        .left, .right{
            display: table-cell;
        }
        .left{
            width: 0.1%;  内容优先,所以内容不会被挤掉 
            padding-right: 20px;  td是无法设置margin
        }
    </style>

(3)flex

    <style>
        .parent{
            display: flex;
        }

        .left{
            margin-right: 20px; 
        }
        .right{
            flex: 1;
        }
    </style>

3、等宽布局

(1)float

<div class="parent">
    <div class="column">1</div>
    <div class="column">2</div>
    <div class="column">3</div>
    <div class="column">4</div>
</div>

各列均分父元素宽度,但是由于间隔关系,父元素应该多包含一个间隔才能使元素不溢出。
然后使用box-sizing: border-box,将间隔包含在列宽中。
box-sizing: border-box:为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。
    即,通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

缺点: 必须知道有几列。

<style>
    .parent{
        margin-left: 20px;  间隔宽度,使得各列占宽的25%,不溢出,
    }
    .column{
        float: left;
        width: 25%;
        padding-left: 20px;
        box-sizing: border-box; 

    }
</style>

(2)table

<div class="parent-fix">    
    <div class="parent">
        <div class="column">1</div>
        <div class="column">2</div>
        <div class="column">3</div>
        <div class="column">4</div>
    </div>
</div>
parent设置为table 且宽度为100%,所以要增加一层来增加宽度。

<style>
    .parent-fix{
        margin-left: -20px;  
    }
    .parent{
        display: table;
        width: 100%;
        table-layout: fixed;  布局优先,列宽相等
    }
    .column{
        display: table-cell;
        padding-left: 20px;

    }
</style>

(3)flex

<div class="parent">
    <div class="column">1</div>
    <div class="column">2</div>
    <div class="column">3</div>
    <div class="column">4</div>
</div>


<style>
    .parent{
        display: flex;
    }
    .column{
        flex: 1;            
    }
    .column+.column{
        margin-left: 20px;          
    }
</style>

4、等高

当一列被内容撑高时,其余列也跟着变高。

<div class="parent">
    <div class="left"></div>
    <div class="right"></div>
</div>

(1)table

<style>
    .parent{
        display: table;
        width: 100%;
        table-layout: fixed;  布局优先,列宽相等
    }
    .left, .right{
        display: table-cell;
    }
    .left{
        width: 100%;
        border-right: 20px solid transparent;
        background-clip: padding-box;
    }
</style>

(2)flex

    <style>
        .parent{
            display: flex;
        }

        .left{
            width: 100px;
            margin-right: 20px; 
        }
        .right{
            flex: 1;
        }
    </style>

(3)float + overflow

    <style>
        .left{
            float: left;
            width: 100px;
            margin-right: 20px; 
        }
        .right{
            overflow: hidden;
        }
        .left, .right{
            padding-bottom: 9999px;
            margin-bottom: -9999px;
        }
        .parent{
            overflow: hidden;
        }
    </style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值