圣杯布局图解

圣杯布局图解


圣杯布局和双飞翼布局实现的问题都是三列布局,两边定宽,中间自适应布局,中间栏要在放在文档流前面以优先渲染。

1、给middle部分设 width:100%,给left、right设宽度,三者都 float:left。
圣杯布局图解_第1张图片
2、给外面最大的块all设左右padding,把middle拉出来,这样left和right去了自己的位置之后就不会把middle内容盖住了。
圣杯布局图解_第2张图片
3、因为middle宽度为100%,left应该在最左边所以往左拉宽度100%(margin-left:-100%),而right只需要往回拉自己的宽度大小就可以(margin-left: number px)。这样就在一行了。
圣杯布局图解_第3张图片
4、最后left和right还盖着我middle的位置,再把他们拉回刚开始腾出来的位置就好了。(给left和right加相对定位position:relative之后,设left的left为负的它的宽,设right的right为right负的它的宽。)ok,over!
圣杯布局图解_第4张图片

思路就是这样,按这个思路的middle需要布局在最前面(中间栏重要的东西)要在放在文档流前面以优先渲染。,依次是left和right。你也可以根据自己的需要更改布局,对应的更改样式。

圣杯布局和双飞翼布局的区别:
解决”中间栏div内容不被遮挡“问题的思路不一样:

  1. 圣杯布局
    为了中间div内容不被遮挡,将中间div设置了左右padding-left和padding-right后,将左右两个div用相对布局position: relative并分别配合right和left属性,以便左右两栏div移动后不遮挡中间div。
  2. 双飞翼布局
    为了中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容,在该子div里用margin-left和margin-right为左右两栏div留出位置。
    多了1个div,少用大致4个css属性(圣杯布局中间div的padding-left和padding-right这2个属性,加上左右两个div用相对布局position: relative及对应的right和left共4个属性,一共6个;而双飞翼布局子div里用margin-left和margin-right共2个属性,6-2=4),个人感觉双飞翼布局思路更直接和简洁一点。

你可能感兴趣的:(布局)