圣杯布局的实现过程

圣杯布局和双飞翼布局,他们的都要求三列布局,中间宽度自适应,两边定宽,这样做的优势是重要的东西放在文档流前面可以优先渲染,而双飞翼布局是对圣杯布局的一种改良,下一篇文章会讲到。

圣杯布局:用到浮动、负边距、相对定位,不添加额外标签

DOM结构:

<div class="header">Header</div>
<div class="bd">
    <div class="main">Main</div>
    <div class="left">Left</div>
    <div class="right">Right
    </div>
</div>
<div class="footer">Footer</div>

样式:

    <style>
        body{padding:0;margin:0}
        .header,.footer{width:100%;  background: #666;height:30px;clear:both;}
        .bd{
            padding-left:150px;
            padding-right:190px;
        }
        .left{
            background: #E79F6D;
            width:150px;
            float:left;
            margin-left:-100%;
            position: relative;
            left:-150px;
        }
        .main{
            background: #D6D6D6;
            width:100%;
            float:left;

        }
        .right{
            background: #77BBDD;
            width:190px;
            float:left;
            margin-left:-190px;
            position:relative;
            right:-190px;
        }
    </style>

左中右部分样式变化过程

1、中间部分需要根据浏览器宽度的变化而变化,所以要用100%,这里设左中右向左浮动,因为中间100%,左层和右层根本没有位置上去

       .left{
            background: #E79F6D;
            width:150px;
            float:left;
        }
        .main{
            background: #D6D6D6;
            width:100%;
            float:left;

        }
        .right{
            background: #77BBDD;
            width:190px;
            float:left;
        }

2、把左层负margin150后,发现left上去了,因为负到出窗口没位置了,只能往上挪

 .left{
            background: #E79F6D;
            width:150px;
            float:left;
            margin-left:-150px;
        }

3、那么按第二步这个方法,可以得出它只要挪动窗口宽度那么宽就能到最左边了,利用负边距,把左右栏定位

        .left{
            background: #E79F6D;
            width:150px;
            float:left;
            margin-left:-100%;
        }

        .right{
            background: #77BBDD;
            width:190px;
            float:left;
            margin-left:-190px;
        }

4、然而问题来了,中间被左右挡住了啊,只好给外层加padding了

       .bd{
            padding-left:150px;
            padding-right:190px;
        }

5、但是加了之后左右栏也缩进来了,于是采用相对定位方法,各自相对于自己把自己挪出去,得到最终结果

        .left{
            background: #E79F6D;
            width:150px;
            float:left;
            margin-left:-100%;
            position: relative;
            left:-150px;
        }
        .right{
            background: #77BBDD;
            width:190px;
            float:left;
            margin-left:-190px;
            position:relative;
            right:-190px;
        }

相关文章:

双飞翼布局和圣杯布局的对比

时间: 2024-10-14 17:10:56

圣杯布局的实现过程的相关文章

css布局之圣杯布局和双飞翼布局

圣杯布局和双飞翼布局 今天看了很多圣杯布局和双飞翼布局的技术博客,通过自己的理解总结一下吧. 1.二者相同点: 实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,也就是我们常说的固比固布局.它们实现的效果是一样的. 2.不同点: 圣杯布局知识点:浮动,负边距,相对定位,不需要添加额外标签. 双飞翼:只用到浮动,负边距,不需要使用相对定位,需要添加一个额外的标签. 注意:html结构中中间部分要写在左右布局之前,为了优先渲染. 下面就先来看一下圣杯布局的实现过程吧: 先写出基本DOM结构:

双飞翼布局和圣杯布局的对比

先回顾一下 圣杯布局的实现过程>> 在不增加额外标签的情况下,圣杯布局已经非常完美,圣杯布局使用了相对定位,以后布局是有局限性的,而且宽度控制要改的地方也多,那么有没其他方法更加简洁方便呢? 在淘宝UED探讨下,增加多一个div就可以不用相对布局了,只用到了浮动和负边距,这就是我们所说的双飞翼布局. DOM结构:main内层增加了一个div <div class="header">Header</div> <div class="bd

圣杯布局和双飞翼布局的实现过程

相信很多人都搜过圣杯布局和双飞翼布局,也知道他们的由来,在这里我就不一一赘述了,今天主要讲的是当我遇到两个布局时,我是怎样一步一步从开始到实现的过程,例如:刚开始我也不懂为什么圣杯布局和双飞翼布局的区别,不懂圣杯布局为什么会有相对定位等一些问题,在这里给大家讲下我的理解,如有错误,欢迎批评指正. 好了,接下来开始今天的写文章之旅! 圣杯布局和双飞翼布局实现的问题都是三列布局,两边定宽,中间自适应布局,要注意的是中间栏(重要的东西)要在放在文档流前面以优先渲染. 圣杯布局 1.首先定义三列,为它们

圣杯布局

圣杯布局是一种三列布局,两边定宽,中间自适应: 圣杯布局的原理就是当子元素处于浮动状态时,设置负margin,子元素会叠盖到兄弟元素之上. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>圣杯布局&

负边距实现圣杯布局以及列等高

圣杯布局如下图所示, 图一 两边的内容宽度固定,中间栏宽度自适应.html代码如下, <div class="container"> <div class='main'> <p>main</p> <p>主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干内容主干

圣杯布局和双飞翼布局的理解和区别

圣杯布局和双飞翼布局基本上是一致的,都是两边固定宽度,中间自适应的三栏布局,其中,中间栏放到文档流前面,保证先行渲染.解决方案大体相同,都是三栏全部float:left浮动,区别在于解决中间栏div的内容不被遮挡上,圣杯布局是中间栏在添加相对定位,并配合left和right属性,效果上表现为三栏是单独分开的(如果可以看到空隙的话),而双飞翼布局是在中间栏的div中嵌套一个div,内容写在嵌套的div里,然后对嵌套的div设置margin-left和margin-right,效果上表现为左右两栏在

圣杯布局方法实例

<!doctype> <html>   <head>     <title>圣杯布局</title>     <style>    body,div{margin: 0;padding: 0;}        .main {         background:red;        width:100%;    float:left;    }        .left {            background:yellow

css的圣杯布局

圣杯布局和双飞翼布局实现的效果是一样的. 代码解析: 1.四个section,container,main,left,right.其中那个container为父容器. 2.main,left,right均左浮动. 3.main的宽度为100%. 4.设置left的margin:-100%. 5.设置rightd margin:-200px; 6.设置父容器的内边距padding:0px 200px 0px 200px. 7.设置left的positon:relative;left:-200px.

CSS布局-圣杯布局

圣杯布局 圣杯布局很完美(兼容所有浏览器,包括IE6),但是使用了相对定位,布局有局限性,宽度控制要改的地方也多. 第一种方法公用部分: .lgyz, .lzrg, .lrzcg, .lcgrz, .lzcrg {margin:10px 0; min-width:400px;text-align: center;color:#ffffff; } .left {background-color: #4DBCB0; padding:20px 0;} .aside, .center, .right {