• 如何实现三栏布局


    追根溯源##

    双飞翼布局
    来源于淘宝UED的玉伯,致敬~
    圣杯布局【Holy Grail of Layouts】
    Kevin Cornell在2006年提出的一个布局模型概念,在国内最早是由淘宝UED的工程师传播开来

    知识点##

    margin-left:-100%;
    使对象向左移动一段距离,这段距离等于父体的内容宽度,上浮到前面元素的最左边

    步骤##

    1.浮动,设置main的宽度为100%;
    main中间栏(重要的东西)要在放在文档流前面以优先渲染

     <style>
        .main,
        .left,
        .right{
            float: left;
        }
        .main{
            background: #888;
             100%;
        }
        .left,
        .right{
            background: #F65;
             200px;
        }
        .left{
            
    
        }
        </style>
    </head>
    <body>
        <div class="wrap">
            <div class="main">
               main </div>
            <div class="left">
               left  </div>
            <div class="right">
               right </div>
        </div>
    </body>
    

    效果:

    2.让left和right与main在一行,需要使用margin-left的负值,此时left和right覆盖了main的一部分,但是width的宽度不发生改变

     .left{
            margin-left: -100%;
        }
        .right{
            margin-left: -200px;
        }
    

    3.main部分的内容被覆盖住了,要如何解决呢?
    3.1双飞翼布局

     .content{
            margin-left:  200px;
            margin-right: 200px;
        }
    
    <div class="wrap">
            <div class="main">
                <div class="content">main</div>
            </div>
    

    给main内嵌一个div,把main里面的内容放在这个div中,并给这个div设置margin属性就ok啦~
    3.2圣杯布局

    .wrap{
       	padding-left: 200px;
       	padding-right: 200px;
       }
    

    效果:

    给最外围的wrap容器设置padding值之后,其包含的div宽度被压缩,但是main被定位到了合适的位置,如下图,在浏览器中把left,right元素隐藏之后

    .left,
        .right{
            background: #F65;
             200px;
            position: relative;
        }
        .left{
            margin-left: -100%;
            left:-200px;
        }
        .right{
            margin-left: -200px;
            right:-200px;
        }
    

    把main定位到了合适的位置,下一步就要解决left,right的位置问题了~
    设置left,right为相对定位,其实相对定位和绝对定位都ok然后把left和right拉到合适的位置,大功告成!是不是很开心
    最终效果:

    总结:
    圣杯布局:没有增加额外的标记,但是设置了较多的属性值~
    双飞翼布局:增加了一个div,但是显得更加轻便简洁灵活,代码也比较少~
    两者都用到了margin的负值,这个属性还是蛮灵活的,要多用
    作为小白,很佩服能够灵活布局的大大,所以我还要学习学习在学习,理解理解再理解!

  • 相关阅读:
    第二周学习进度总结
    《大道至简》阅读收获及个人总结
    代码层面解释安全性
    2020年大三下学期第二周学习心得
    信息化领域热词分类分析及解释实战
    2020年新型冠状病毒疫情分析实战
    《架构漫谈》个人理解概括
    北京市信件内容爬虫实例——首都之窗
    2020寒假生活学习日记(十五)
    2020寒假生活学习日记(十四)
  • 原文地址:https://www.cnblogs.com/godot-blog/p/6511795.html
Copyright © 2020-2023  润新知