zoukankan      html  css  js  c++  java
  • 如何实现三栏布局

    追根溯源##

    双飞翼布局
    来源于淘宝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的负值,这个属性还是蛮灵活的,要多用
    作为小白,很佩服能够灵活布局的大大,所以我还要学习学习在学习,理解理解再理解!

  • 相关阅读:
    Html5-audio标签简介及手机端不自动播放问题
    aes加密
    CSS max-width: 0;
    彻底弄清楚session是什么?
    jquery 绑定回车(Enter )事件
    javascript正则表达式总结(test|match|search|replace|split|exec)
    html_entity_decode()、空格、&nbsp; 乱码问题
    HTML <area> 对象
    自定义UEditor右键菜单
    在UEditor编辑器的工具栏上加一行文字
  • 原文地址:https://www.cnblogs.com/godot-blog/p/6511795.html
Copyright © 2011-2022 走看看