CSS经典布局

一、圣杯布局

1. flex弹性布局

①父盒子设置flex布局

②左右盒子flex属性的拓展和收缩比例为0、1,基准值为内容宽度

③中间盒子flex为1,内容占满剩余空间

    <div class="parent">
      <div class="left side-background">left</div>
      <div class="main main-background">main</div>
      <div class="right side-background">right</div>
    </div>
    .parent {
        display: flex;
        height: 200px;
        .main {
          flex: 1;
        }
        .left, .right {
          flex: 0 1 200px;
        }
      }

2. 绝对定位

①父盒子设置相对定位

②左右盒子设置绝对定位和固定宽度,左边盒子top、left为零靠左,右边盒子top、right为零靠右

③中间盒子设置占位占100%即可

    <div class="parent1">
      <div class="left1 side-background">left</div>
      <div class="main1 main-background">main</div>
      <div class="right1 side-background">right</div>
    </div>
    .parent1 {
        position: relative;
        height: 200px;
        .main1 {
          height: 100%;
          width: 100%;
        }
        .left1, .right1 {
          position: absolute;
          width: 200px;
          height: 100%;
          top: 0;
        }
        .left1 {
          left: 0;
        }
        .right1 {
          right: 0;
        }
      }

3. float浮动布局

①html结构先写中间盒子先渲染

②父盒子设置padding左右为左右盒子宽度,并设box-sizing: border-box;将边框边距包含在width宽度内

③左右、中间三个盒子设置float浮动为left,中间盒子设置宽度为100%占满一行

④左右边盒子margin-left拉至同一行,左边为-100%,右边为-自身宽度

⑤左右边盒设置相对定位和left占据padding部分,左边-自身宽度,右边自身宽度

    <div class="parent2">
      <div class="main2 main-background">main</div>
      <div class="left2 side-background">left</div>
      <div class="right2 side-background">right</div>
    </div>
    .parent2 {
        height: 200px;
        padding: 0 200px;
        box-sizing: border-box;
        &>div {
          float: left;
        }
        .main2 {
          width: 100%;
          height: 200px;
        }
        .left2, .right2 {
          width: 200px;
          height: 200px;
        }
        .left2 {
          margin-left: -100%;
          position: relative;
          left: -200px;
        }
        .right2 {
          margin-left: -200px;
          position: relative;
          left: 200px;
        }
      }

二、双飞翼布局

与圣杯布局类似

①只是中间盒子用一个外盒子包围,且中间盒子设置margin:0 200px外边距左右距离为左右盒子的宽度,避免被遮挡内容

②三个盒子同样设置float浮动,左右设置margin-left即可

    <div class="parent3">
      <div class="main3 main-background">
        <div class="content">content</div>
      </div>
      <div class="left3 side-background">left</div>
      <div class="right3 side-background">right</div>
    </div>
    .parent3 {
        height: 200px;
        &>div{
          float: left;
        }
        .main3 {
          width:100%;
          height: 100%;
          .content{
            margin: 0 200px;
          }
        }
        .left3, .right3 {
          width: 200px;
          height: 200px;
        }
        .left3 {
          margin-left: -100%;
        }
        .right3 {
          margin-left: -200px;
        }
      }

三、table布局

①父盒子设置display:table布局

②三个盒子设置table-cell布局表现如同表格中的单元格

    <div class="parent4">
      <div class="left4 side-background">left</div>
      <div class="main4 main-background">main</div>
      <div class="right4 side-background">right</div>
    </div>
    .parent4 {
        width: 100%;
        height: 200px;
        display: table;
        &>div {
          display: table-cell;
        }
        .left4 {
          width: 200px;
        }
        .right4 {
          width: 200px;
        }
      }

四、calc

①左右两个盒子利用float浮动或定位固定在左右两边

②中间盒子利用calc计算为剩下的空间

    <div class="parent5">
      <div class="left5 side-background">left</div>
      <div class="main5 main-background">main</div>
      <div class="right5 side-background">right</div>
    </div>
    .parent5 {
        height: 200px;
        position: relative;
        .main5 {
          position: absolute;
          left: 200px;
          width: calc(100% - 400px);
          height: 200px;
        }
        .left5, .right5 {
          width: 200px;
          height: 200px;
          position: absolute;
          top:0;
        }
        .left5 {
          left: 0;
        }
        .right5 {
          right: 0;
        }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值