这个图别看简简单单几个色块,真正实现也不见得有多容易,得看你考虑到哪些东西。大概例子已经做出来了,提供下载 。
由于上下head跟foot两个色彩是单色的,所以要考虑自适应各种分辨率的屏幕,自适应分辨率不是百分百就够的,div的百分百布局会有很多问题。另一个是中间内容需要宽度自适应,左边side1是固定宽度,右边的side2也是固定宽度。
还有一个应该是比较难的一个问题,就是高度自适应,要保证side1红色块内容增多的时候,右边main,side2的色块也要跟着一起延伸,右边side2的内容增多,左边红色块也要跟着一起延伸,中间main的内容增加,红色块依然要继续延伸。先前也发过 关于 高度百分百引发的思考 ,有兴趣的可以去拍砖。
这个即使是堪称是圣杯布局 都没有去做到这个等高自适应,都是靠内容自适应的。
也许红色块的背景可以使用图片来垂直平铺下来,如果用table来布局那是再好不过了,不要排斥table,它在很多时候可以更方便的帮你布局。就连google得很多产品都在使用 table做主布局,你还想怎样?
如果采用position跟固定高度,就可以很快的定位,但是如果内容超出,会浮于foot层上面。
有兴趣的可以把上面的图做一下,你就会明白原来不是那么容易的。
这里有几种比较巧妙的方法 点击这里查看
有一个很巧妙的用了 border-right 来代替side1 红色块的延伸 比较巧妙的设计。
下面我罗列了一些在布局中,你可能会遇到的问题,或者一些技巧跟习惯分享一下。
1.用padding-bottom:100000px;margin-bottom:-100000px以后会导致opera overflow:hidden 变高
2.float:left 以后可以通过 margin-left:-100% 定位在左边,但是在ie8下会导致下面的foot不能延伸。
3.float 会导致背景色去掉,解决的办法是让父容器也float。
4.如果是一个 ul li 还包含着一个ul li ,float跟position 会导致第二级 ul li 背景图没法显示,主要是因为用了继承父容器的宽度。重新定义一个宽度可以解决ie6问题。也许你不会遇到也说不定。
5.tfoot 要正确嵌套使用,在tbody之上。
<table> <thead> <tr> <td></td> </tr> </thead> <tfoot> <tr> <td></td> </tr> </tfoot> <tbody> <tr> <td></td> </tr> </tbody> </table>6.
color:#ffffff\0;不止是ie8的hack ,firefox 3.0.1 也支持。
屏蔽ie8的hack是
ie6 ie7 firefox 支持.class {/*/*/color:#ffffff;/* */}7.z-index 负数会导致 ie下 链接没法点击
8.color:#fff;不是所有浏览器都支持这种写法,当然在主流浏览器可以,但是这样写并没有什么好处。
第一张图的 三列等高宽度自适应例子,无论哪一列内容多的时候,左边,右边,跟中间的背景色也都会垂直平铺下来,用来学习下还是不错的。我已经通过我的想法结合圣杯的做法做出来了,可以点击这里下载

02月 3rd, 2010 at 16:56
这布局看上去有点复杂~貌似国外如果这种布局的话,不设置背景色不会看出三个块等高的问题。
o仔 回复:
02月 3rd, 2010 at 17:08
@泡面, 是啊,如果不设置背景色的话,就感觉没有什么问题了~~但是真正去思考整个色块的话,还是有很多东西要考虑的。。
02月 5th, 2010 at 11:04
研究的太多很费劲的,不过实际应用起来,这种的不是太多。
o仔 回复:
02月 5th, 2010 at 11:28
@daniel, 主要还是过程,另外有很多时候,可能客户就有这样的需求,多学点东西还是好的,就像你现在每天学习英语一样,你跟中国朋友讲话的时候会用英语吗?
02月 5th, 2010 at 13:17
呵呵,等你研究好了,不介意让我学习下不
o仔 回复:
02月 5th, 2010 at 15:33
@Firm, 呵呵,刚刚已经把想法做出来了,在文章里有提供下载,谢谢关注。
02月 5th, 2010 at 14:13
[...] 第二个问题是自适应三列垂直等高布局该不该用table?因为我发现垂直三栏布局到目前为止,就是堪称是圣杯的三列自适应布局都没办法做到完美,没法做到等高,它只能根据内容自动伸展,左边蓝色部分的高度是跟红色部分不能同样的。另外一个就是该布局在ie8下会出现foot不能下来的情况,我是用ietest的ie8试的,估计跟正式版还是比较像的。 点击这里 可以看下效果。 如果采用table,它是可以符合标准,并且可以有效的自适应,这点是div没法比的。目前谷歌的很多产品,例如,www.google.com/ig/,gmail…在别人都摒弃掉table布局的时候,只有Google还是采用了table布局,可见table布局也必定有它的优势所在,特别是在自适应宽度高度方面。 [...]
02月 5th, 2010 at 16:26
呵呵,谢谢啦
o仔 回复:
02月 5th, 2010 at 16:41
@Firm, 不客气,里面还有个小瑕疵,就是没考虑在ie6下的最小宽度,可以用CSS表达式去解决。
o仔 回复:
02月 6th, 2010 at 09:37
@Firm, 不好意思,你第一个下载的那个例子有点问题,我已经做了更新,有需要可以重新下载。