经典三栏布局

圣杯布局

DOM 结构
<div class="container">
    <div class="center"></div>
    <div class="left"></div>
    <div class="right"></div>
</div>
css
        html,
        body {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }

        div {
            box-sizing: border-box;
        }

        .container {
            width: 100%;
            height: 100%;
            padding-left: 200px;
            padding-right: 300px;
        }

        .center,
        .left,
        .right {
            position: relative;
            float: left;
            height: 100%;
        }

        .center {
            width: 100%;
            background-color: red;
        }

        .left {
            left: -200px;
            width: 200px;
            margin-left: -100%;
            background-color: green;
        }

        .right {
            right: -300px;
            width: 300px;
            margin-left: -300px;
            background-color: greenyellow;
        }

container利用padding固定左右宽度,center撑满宽度,再利用float让三栏全部脱离文档流, 只有用margin负值让两栏进入到center的左边和右边,再利用相对位移放置到正确的位置

双飞翼布局

DOM 结构
<div id="container">
    <div id="center"></div>
</div>
<div id="left"></div>
<div id="right"></div>
css
        html,
        body {

            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;

        }

        div {
            box-sizing: border-box;
        }

        .container,
        .left,
        .right {
            float: left;
            height: 100%;
        }

        .container {
            width: 100%;
        }

        .center {
            margin-left: 200px;
            margin-right: 300px;
        }

        .left {
            width: 200px;
            margin-left: -100%;
            background-color: green;
        }

        .right {
            width: 300px;
            margin-left: -300px;
            background-color: greenyellow;
        }

从 dom 结构上看圣杯像是一杯子包裹着整个 dom,双飞翼则是把两个翅膀放在了下面。双飞翼同样是让dom浮动起来,让center的container占据整个页面,center提供margin来占位,left和right利用负margin进入正确的位置即可。

flex 版本

应该是最简单的版本了,随便写~

<div class="container">
    <div class="left"></div>
    <div class="center"></div>
    <div class="right"></div>
</div>
.container {
    display: flex;
    height: 100%;
}

.left,
.right,
.center {
    height: 100%;
}

.left,
.right {
    width: 200px;
    background-color: red;
}

.center {
    flex: 1;
    background-color: blue;
}

其实对 flex 而言,dom 结构不是特别重要,即使是 center 在最上面,也可以通过 order 来进行元素的排序

BFC 版本

看这里~BFC和SC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yokiizx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值