对于圣杯布局和双飞翼布局的新认识

今天刷题的时候碰见了一道要求使用双飞翼布局的题。于是便对比了一下圣杯布局得到了点新认识。

我们都知道圣杯布局和双飞翼布局都实现了中间宽度自适应,两边定宽的效果。这样做的优势是重要的东西放在文档流前面可以优先渲染。两者又有什么差别呢?

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

1.二者都主要使用了浮动和负边距来达到中间宽度自适应,两边定宽的目的。

具体来说就是设置左右两边div的margin-left为一负值并设置浮动。于是便会移动到上方的div内(也就是中间的div)与之重叠。

2.相比于圣杯布局双飞翼布局没有用到相对布局(relative),只用到了浮动和负边距。而且在main内层增加了一个div。

DOM结构:

<div class="top">top</div>
<div class="bd">
    <div class="main">
        <div class="inner">
            Main
        </div>
    </div>
    <div class="left">Left</div>
    <div class="right">Right
    </div>
</div>
<div class="bottom">bottom</div>

二者对比样式:

<style>
        body{padding:0;margin:0}
        .top,.bottom{width:100%;  background: red;height:30px;clear:both;}
        .bd{
            /*padding-left:150px;*/
            /*padding-right:190px;*/
        }
        .left{
            background: blue;
            width:150px;
            float:left;
            margin-left:-100%;
            /*position: relative;*/
            /*left:-150px;*/
        }
        .main{
            background: yellow;
            width:100%;
            float:left;

        }
        .right{
            background: gray;
            width:190px;
            float:left;
            margin-left:-190px;
            /*position:relative;*/
            /*right:-190px;*/
        }
        .inner{
            margin-left:150px;
            margin-right:190px;
        }
    </style>

 

3.圣杯布局使用了相对定位,这种布局是有局限性的。双飞燕布局是对圣杯布局的一种改良。

 

 

 

 

posted @ 2016-05-04 21:42  肖坤宇  阅读(339)  评论(0编辑  收藏  举报