zoukankan      html  css  js  c++  java
  • CSS经典布局——双飞翼布局

    当然,圣杯在正常情况下是没有问题的,但是特殊情况下就会暴露此方案的弊端,如果将浏览器无线变窄,「圣杯」将会「破碎」掉。如图,当 main 部分的宽小于 left 部分时就会发生布局混乱。我们一般都给个 container 的min-width,然后还有一点就是圣杯要清除浮动。

    好的,我们来看看双飞翼布局。就不像前面那篇文章一样一点一点写步骤了,直接上源代码。

    <style>
      .body {
        color: #fff;
      }
    
      .col {
        float: left;
      }
    
      .header {
        height: 50px;
        background-color: #666;
        color: #fff;
      }
    
      .center {
         100%;
        background-color: #555;
      }
    
      .center-wrap {
        margin: 0 100px 0 100px;
        height: 200px;
      }
    
      .left {
         100px;
        height: 200px;
        margin-left: -100%;
        background-color: #999;
      }
    
      .right {
         100px;
        height: 200px;
        margin-left: -100px;
        background-color: #999;
      }
    
      .footer {
        height: 50px;
        background-color: #666;
        color: #fff;
      }
    
      .clearfix::after {
        content: "";
        display: block;
        clear: both;
        visibility: hidden;
        height: 0;
        overflow: hidden;
      }
    </style>
    
    
    <div class="header">header</div>
    <div class="body clearfix">
      <div class="center col">
        <div class="center-wrap">
          center
        </div>
      </div>
      <div class="left col">
        left
      </div>
      <div class="right col">
        right
      </div>
    </div>
    <div class="footer">footer</div>
    

    思路:

    双飞翼布局和圣杯布局很类似,不过是在middle的div里又插入一个div,通过调整内部div的margin值,实现中间栏自适应,内容写到内部div中。
    这样可以先做好主体部分,然后再将附属部分放到合适的位置!

    这样可以先做好主体部分,然后再将附属部分放到合适的位置!

    1. 首先把left、middle、right都放出来, middle中增加inner
    2. 给它们三个设置上float: left, 脱离文档流;
    3. 一定记得给container设置上overflow: hidden; 可以形成BFC撑开文档
    4. left、right设置上各自的宽度
    5. middle设置 100%;

    比较:

    - 优点 缺点
    圣杯 结构简单,无多余 dom 层 中间部分宽度小于左侧时布局混乱
    绝对定位 结构简单,且无需清理浮动 两侧高度无法支撑总高度
    双飞翼 支持各种宽高变化,通用性强 dom 结构多余层,增加渲染树生成的计算量
  • 相关阅读:
    【bzoj1116】[POI2008]CLO 并查集
    【bzoj3831】[Poi2014]Little Bird 单调队列优化dp
    【bzoj4726】[POI2017]Sabota? 树形dp
    【bzoj4822/bzoj1935】[Cqoi2017]老C的任务/[Shoi2007]Tree 园丁的烦恼 树状数组
    【bzoj4884】[Lydsy2017年5月月赛]太空猫 dp
    【bzoj2500】幸福的道路 树形dp+倍增RMQ+二分
    【bzoj2424】[HAOI2010]订货 费用流
    【bzoj2662】[BeiJing wc2012]冻结 分层图Spfa
    【bzoj1195】[HNOI2006]最短母串 AC自动机+状态压缩+BFS最短路
    【bzoj4818】[Sdoi2017]序列计数 矩阵乘法
  • 原文地址:https://www.cnblogs.com/ssaylo/p/13228485.html
Copyright © 2011-2022 走看看