zoukankan      html  css  js  c++  java
  • 圣杯布局和双飞翼布局总局

    前一篇布局总结里,提过用flex布局实现圣杯布局。下面说下这两种布局区别。

    圣杯布局和双飞翼布局解决的问题差不多,都是左右两栏固定,中间自适应的三栏布局。中间一栏要放在前面,优先渲染。

     不同在于解决”中间栏div内容不被遮挡“问题的思路不一样:

    1、圣杯布局 给中间 div 设置了 padding-left padding-right 后, 左右div 要用相对位置position:relative 并分别配合rightleft属性,以便左右两栏div移动后不遮挡中间div。

    2、双飞翼为了中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容, 

    少用大致4个css属性(圣杯布局中间 div padding-left和padding-right 这2个属性,加上左右两个div用相对布局position:relative 及对应的right和left共4个属性。

    简单说起来就是 ”双飞翼布局比圣杯布局多创建了一个div,但不用相对布局了。

    下面是代码

    圣杯

    <style>
    *{
                padding: 0;
                margin: 0;
            }
             .header,.footer {
                width: 100%;
                height: 30px;
                background: red;
            }
    
            .content {
                overflow: hidden; /* 创建一个BFC,清除浮动 */
                padding: 0 100px;
            }
            .middle,.left,.right{
                float: left;
                height: 80px;
            }
            .middle {           
                width: 100%;        
                background: green;
            }
    
            .left {
                position:relative; /* 相对定位 */
                width: 100px;       
                left:-100px; /* 使左边的框挨着浏览器的最左边   */  
                margin-left: -100%; /* 使左边的框跑到上一行的最左边 */
                background: yellow;
            }
    
            .right {
                position:relative; /* 相对定位    */     
                width: 100px;
                right:-100px; /* 使右边的框挨着浏览器的最右边 */ 
                margin-left: -100px; /* 使右边的框跑到上一行的最右边 */
                background: pink;
            }
     
    </style>
    <div class="header"></div>
     <div class="content">
           <div class="middle"></div>
           <div class="left"></div>
           <div class="right"></div>
     </div>
     <div class="footer"></div>
     
     

    双飞翼

    <style>
     *{
                padding: 0;
                margin: 0;
            }
             .header,.footer {
                width: 100%;
                height: 30px;
                background: red;
            }
            .content {
                overflow: hidden;
            }
            .inner-middle,.left,.right{
                height: 80px;
            }
            .middle {           
                width: 100%;
                background: green;
                float: left;    
            }
            .inner-middle{
                width:100%;
                background: green;          
            }
    
            .left {
                width: 100px;
                float: left;
                margin-left: -100%;
                background: yellow;
            }
    
            .right {            
                width: 100px;
                float: left;
                margin-left: -100px;
                background: pink
            }
     
    </style>
    <div class="header"></div>
    <div class="content">
        <div class="middle">
                <div class="inner-middle"></div>
        </div>
        <div class="left"></div>
        <div class="right"></div>
    </div>
    <div class="footer"></div>
     
     

    看实现的效果是相同的

  • 相关阅读:
    洗礼灵魂,修炼python(27)--异常处理(1)—>了解异常
    洗礼灵魂,修炼python(26)--编程核心之“递归”
    洗礼灵魂,修炼python(25)--自定义函数(6)—从匿名函数进阶话题讲解中解析“函数式编程”
    洗礼灵魂,修炼python(24)--自定义函数(5)—匿名函数lambda
    洗礼灵魂,修炼python(23)--自定义函数(4)—闭包进阶问题—>报错UnboundLocalError: local variable 'x' referenced before assignment
    721. Accounts Merge
    Union found
    547. Friend Circles
    200. Number of Islands
    684. Redundant Connection
  • 原文地址:https://www.cnblogs.com/yizhizhangBlog/p/9984103.html
Copyright © 2011-2022 走看看