圣杯布局和双飞翼布局实现原理

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

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

实现原理 :
html代码中,middle部分首先要放在container的最前部分,然后是left,right 
1.将三者都设置 float:left
2.middle设置 width:100% 占满一行 
3.此时middle占满一行,所以要把left放到middle所在行的最左边, 使用 margin-left:-100%;(middle的宽度) 
right放到最右边,margin-left:-200px;(right自身的宽度)
4.这时left回到middle所在行的最左边,right回到middle所在行的最右边,但会覆盖middle内容的左右端,要把middle内容挤到中间,所以在外围container加上 padding:0 200px 0 100px; 
5.middle内容挤出来了,但left和right也跟着出来了,所以要还原,使用相对定位position:relative; 对left使用 left:-100px; right使用right:-200px 

实现代码:
header内容
    
    弹性区:圣诞费共和国节读书圣诞节护法放大后付款就是你发圣诞费共和国节读书圣诞节护法放大后付款就是你发圣诞费共和国节读书圣诞节护法放大后付款就是你发圣诞费共和国节读书圣诞节护法放大后付款就是你发
左边栏
右边栏
    
footer内容

在不增加额外标签的情况下,圣杯布局已经非常完美,圣杯布局使用了相对定位,以后布局是有局限性的,而且宽度控制要改的地方也多,那么有没其他方法更加简洁方便呢?
在淘宝UED探讨下,增加多一个div就可以不用相对布局了,只用到了浮动和负边距,这就是我们所说的双飞翼布局。

双飞翼布局: 用到浮动、负边距、添加额外标签
DOM结构:main内层增加了一个div

实现原理 :
html代码中,middle部分首先要放在container的最前部分,然后是left,right 
1.将三者都设置 float:left 
2.middle设置 width:100% 占满一行 
3.此时middle占满一行,所以要把left放到middle所在行的最左边, 使用 margin-left:-100%;(middle的宽度),right放到最右边,margin-left:-200px;(right自身的宽度)
4.此时middle的内容被覆盖,要把middle的内容拉出来,除了使用外围container的padding,还可以考虑使用margin,给middle增加一个内层div .middle-warp, 然后设置 margin:0 200px 0 100px

实现代码:
header内容
    
        
弹性区:圣诞费共和国节读书圣诞节护法放大后付款就是你发圣诞费共和国节读书圣诞节护法放大后付款就是你发圣诞费共和国节读书圣诞节护法放大后付款就是你发圣诞费共和国节读书圣诞节护法放大后付款就是你发
  
   
左边栏
    
右边栏
footer内容













你可能感兴趣的:(圣杯布局和双飞翼布局实现原理)