• 圣杯布局和双飞翼布局


    1,圣杯布局:适用:侧边栏宽度固定,内容区宽度随着浏览器窗口宽度改变而改变

    优点:没有额外的div,允许任何列是最高的??(什么意思??)

    2,可以实现主内容区优先加载,

    3,需要hack很少

    缺点:在宽度缩小时可能会对圣杯布局发生破坏,因此可以设置最小宽度:

    body{

      min-600px;

    }

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            #hd{
                height:50px;
                background: #666;
                text-align: center;
            }
            #bd{
                /*左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置*/
                padding:0 200px 0 180px;
                height:100px;
            }
            #middle{
                float:left;
                100%;/*左栏上去到第一行*//*设置宽度自适应*/
                height:100px;
                background:blue;
            }
            #left{
                float:left;
                180px;
                height:100px;
                margin-left:-100%;/*负外边距百分号是相当于#middle的宽度的百分数*/
                background:#0c9;
                /*中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置*/
                position:relative;
                left:-180px;/*确定left的位置信息*/
            }
            #right{
                float:left;
                200px;
                height:100px;
                margin-left:-200px;//设置-200px后,right块会跳上去
                background:#0c9;
                /*中间栏的位置摆正之后,右栏的位置也相应左移,通过相对定位的right恢复到正确位置*/
                position:relative;
                right:-200px;
            }
            #footer{
                height:50px;
                background: #666;
                text-align: center;
            }
        </style>
    </head>
    <body>
    <div id="hd">header</div>
    <div id="bd">
        <div id="middle">middle</div>
        <div id="left">left</div>
        <div id="right">right</div>
    
    </div>
    <div id="footer">footer</div>
    </body>
    </html>
    

      笔记:是对于margin-left负外边距的理解特别当其为百分数时,这个百分数是相对于谁的??,如何定位??

    二:

    双飞翼布局:

    双飞翼布局是在圣杯布局的基础上改进的布局,特点,在圣杯布局的main(上面的middle)内部添加一个div,取消right和left部分的positon:relative,而同时对于main内部的div元素内添加margin-left和margin-right,给中间内容留下空间,取消bd中的padding,代码如下

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            body{
                min- 700px;
            }
            #hd{
                height:50px;
                background: #666;
                text-align: center;
            }
            #middle{
                margin-left: 180px;
                margin-right: 200px;
            }
            #bd{
                /*左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置*/
    
                height:100px;
            }
            #main{
                float:left;
                100%;/*左栏上去到第一行*/
                height:100px;
                background:blue;
            }
            #left{
                float:left;
                180px;
                height:100px;
                margin-left:-100%;
                background:#0c9;
                /*中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置*/
    
                
            }
            #right{
                float:left;
                200px;
                height:100px;
                margin-left:-200px;
                background:#0c9;
                /*中间栏的位置摆正之后,右栏的位置也相应左移,通过相对定位的right恢复到正确位置*/
    
                right:-200px;
            }
            #footer{
                height:50px;
                background: #666;
                text-align: center;
            }
        </style>
    </head>
    <body>
    <div id="hd">header</div>
    <div id="bd">
        <div id="main">
            <div id="middle">middle</div>
        </div>
            <div id="left">left</div>
            <div id="right">right</div>
    </div>
    <div id="footer">footer</div>
    </body>
    </html>
    

      三:变化,两栏布局,侧栏宽度固定,主内容区宽度随窗口大小改变而改变

    代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
           .main,.left{
               float: left;
               height: 100px;
           }
            .main{
                 100%;
                background-color: red;
            }
            .left{
                 200px;
                margin-left: -100%;/*注意,这里加了百分号就不一样了,百分号表示相当于main元素的百分号*/
                background-color: blue;
            }
            .inner{
                margin-left: 200px;/*让main内元素显示不会在侧栏之下,给侧边栏留出空间来*/
            }
    //侧栏在右边的情况,注意侧栏的margin—right or margin-left根据侧栏位置是不同的 .main2,.right{ float: left; height: 100px; } .main2{ 100%; background-color: red; } .right{ 200px; margin-left: -200px; background-color: blue; } .inner2{ margin-right: 200px ; } </style> </head> <body> <!--布局1,侧栏在左边,中间部分可以调整宽度--> <div class="main"><!--main元素位于前面,表示优先渲染--> <div class="inner">main</div> </div> <div class="left">left</div> <!--布局二,侧栏在右边,宽度固定--> <div class="main2"> <div class="inner2">main</div> </div> <div class="right">right</div> </body> </html>

      

  • 相关阅读:
    洛谷-P5357-【模板】AC自动机(二次加强版)
    洛谷-P3796-【模板】AC自动机(加强版)
    洛谷-P3808-【模板】AC自动机(简单版)
    2020 CCPC Wannafly Winter Camp Day2-K-破忒头的匿名信
    zabbix的搭建
    playbook 介绍
    ansible 模块
    shell 脚本判断ip
    shell 脚本安装lnmp
    expect 介绍
  • 原文地址:https://www.cnblogs.com/qianduangaoshou/p/6545098.html
Copyright © 2020-2023  润新知