• 圣杯布局和双飞翼布局


    难点:一颗星
    知识点:最经典的三栏布局,也称为固比固布局
    这道题主考查布局的了解,同时也考查margin负值的情况

    什么是圣杯布局和双飞翼布局?

    圣杯布局和双飞翼布局是一样的,都是两边固定宽度,中间自适应的三栏布局,中间栏要放在文档流前面以优先渲染。

    圣杯布局:为了中间div内容不被遮挡,将中间div设置了左右padding-left和padding-right后,将左右两个div用相对布局position: relative并分别配合right和left属性,以便左右两栏div移动后不遮挡中间div。

    双飞翼布局:为了中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容,在该子div里用margin-left和margin-right为左右两栏div留出位置。

    圣杯布局代码实现

    <div id="hd">headerdiv>
    <div id="bd">
      <div id="middle">middlediv>
      <div id="left">leftdiv>
      <div id="right">rightdiv>
    div>
    <div id="footer">footerdiv>
    
    <style>
    #hd{
        height:50px;
        background: #666;
        text-align: center;
    }
    #bd{
        /*左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置*/
        padding:0 200px 0 180px;
        height:100px;
    }
    #middle{
        float:left;
        width:100%;/*左栏上去到第一行*/
        height:100px;
        background:blue;
    }
    #left{
        float:left;
        width:180px;
        height:100px;
        margin-left:-100%;
        background:#0c9;
        /*中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置*/
        position:relative;
        left:-180px;
    }
    #right{
        float:left;
        width:200px;
        height:100px;
        margin-left:-200px;
        background:#0c9;
        /*中间栏的位置摆正之后,右栏的位置也相应左移,通过相对定位的right恢复到正确位置*/
        position:relative;
        right:-200px;
    }
    #footer{
        height:50px;
        background: #666;
        text-align: center;
    }
    style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    双飞翼布局代码实现

    <div id="hd">headerdiv> 
    <div id="middle">
        <div id="inside">middlediv>
    div>
    <div id="left">leftdiv>
    <div id="right">rightdiv>
    <div id="footer">footerdiv>
    
    <style>
    #hd{
        height:50px;
        background: #666;
        text-align: center;
    }
    #middle{
        float:left;
        width:100%;/*左栏上去到第一行*/     
        height:100px;
        background:blue;
    }
    #left{
        float:left;
        width:180px;
        height:100px;
        margin-left:-100%;
        background:#0c9;
    }
    #right{
        float:left;
        width:200px;
        height:100px;
        margin-left:-200px;
        background:#0c9;
    }
    
    /*给内部div添加margin,把内容放到中间栏,其实整个背景还是100%*/ 
    #inside{
        margin:0 200px 0 180px;
        height:100px;
    }
    #footer{  
       clear:both; /*记得清楚浮动*/  
       height:50px;     
       background: #666;    
       text-align: center; 
    } 
    style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    参考:

  • 相关阅读:
    Typora 内网实现图片自动上传至 GitLab 个人图床
    【SpringCloud微服务全家桶学习笔记-服务注册zookeeper/consul】
    Java项目:ssm+mysql医药进销存系统
    计算分子进化-搞懂PAML的正选择分析
    spark中的shuffle简述 那些会导致shuffle的算子
    【Spring Boot 源码学习】深入 FilteringSpringBootCondition
    【JAVA学习笔记】59 - JUnit框架使用、本章作业
    C++信息学奥赛1168:大整数加法
    conse8安装svn
    darknet 结构体汇总
  • 原文地址:https://blog.csdn.net/my_study_everyday/article/details/126297085