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

  • 相关阅读:
    Python Day 10 函数、函数作用、组成部分、返回值return作用
    SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis
    深入理解HTTP Session
    JSP中两种include的区别
    Spring MVC控制层传递对象后在JSP页面中的取值方法
    Servlet和Filter的url匹配以及url-pattern详解 及 filter 循环问题的解决
    SSH:Action中Service无法实例化
    java实现邮箱找密码
    登陆界面验证码实现
    css 行内元素 块元素 替换元素 非替换元素 以及这些元素的width height margin padding 特性
  • 原文地址:https://www.cnblogs.com/godot-blog/p/6511795.html
Copyright © 2011-2022 走看看