最窄770px最宽1024px的经典布局
星期四 12.29.2005 - Posted in 工作分享, - 2,712 views最典型实用的上中下,并且中间分三列的布局,这个例子有2个特点:
- 中间三列效果,可以任意实现单列背景色;
- 整体最窄770px,最宽1024px,也就是说窗口小于770xp就出底部滚动条,如果大于1024px自动屏幕居中。
IE6.0和FF1.5测试通过
Demo http://demo.rexsong.com/200512/min_770px_and_max_1024px/layout.htm
分析:
最外层wrapper把所有内容都嵌套在那,整体相对定位。max,min已经很好控制了最窄最宽值,但对IE没有作用。如果没有其他布局的穿插,这一层其实写在body内就可以,少一层嵌套。
#wrapper{ width:auto; border:1px solid #000; min-width:770px; max-width:1024px; text-align:left; margin-left:auto; margin-right:auto; position:relative;}
wrapper下级的outer header footer
其中header绝对定位,footer相对定位;outer分别对左右有130px的外边距,这是兼容非IE的关键。
#outer{ margin-left:130px; margin-right:130px; background:silver; border-left:1px solid #000; border-right:1px solid #000; color: #000;}
#header{ position:absolute; top:0; left:0; width:100%; height:70px; line-height:70px; border-bottom:1px solid #000; overflow:hidden; background:#0ff; text-align:center; font-size:xx-large}
#footer { width:100%; clear:both; line-height:50px; border-top:1px solid #000; background:#ffc; color:#000; text-align:center; position:relative;}
outer下级的clearheader outerwrap right clearer
clearheader用做填补header的空白,clearer是一个常用的填充hack用法。outerwrap宽为什么是99%,而不是100%?因为他的上层outer有边框,100%宽再加2个边框象素就会撑大,FF有明显效果。right的处理很经典,IE下解析为定位,FF下则为浮动。负边距的处理也刚好使用上outer留出的空白。
#clearheader{ height:72px;}
.outerwrap { float:left; width:99%;}
#right {
position:relative;
width:130px; float:right; left:1px;
margin-right:-129px;
}
* html #right { margin-right:-130px; margin-left:-3px}
.clearer{ height:1px; overflow:hidden; margin-top:-1px; clear:both;}
outerwrap内的centrecontent left clearer就很简单了,思路类似上边说明。<!–[if gte IE 5]>指定IE5.0及版本以上浏览器有效,使用expression方法实现对IE5.0及以上版本的宽度控制。
body {width:expression( documentElement.clientWidth < 770 ? (documentElement.clientWidth == 0 ? (body.clientWidth < 770 ? "770" : "auto") : "770px") : "auto" );}
#wrapper {width:expression( documentElement.clientWidth > 1024 ? (documentElement.clientWidth == 0 ? (body.clientWidth >1024 ? "1024" : "auto") : "1024px") : "auto" );}
开始很想搞清楚老外如何实现居中min和max,没想到最后是expression,太失望了,其实这里使用脚本控制更好。另外,老外原文的Min width of 800px有误,CSS定义就是770px,后来截屏确认也是770px。
总的来说这是一个很复杂的布局例子,融合了很多经典用法和定义,同时很传统和实用。类似的复杂布局,四层嵌套实现对于传统布局来说还是比较有优势的。
蓝色经典
http://www.blueidea.com/tech/web/2005/3124.asp
© 一叶千鸟(转载请留原文链接,更新于2009年08月31日0点)

[cool]
12.31.2005 7:23 下午 - 1楼试用后发现一个问题,烦请博主解决。。
03.31.2010 10:00 上午 - 4楼内容超过一屏后,右边纵向拖拉条不出现,没办法向下滚动,下面的内容无法显示。
上面的现象在IE7 和 F3.0 中存在。
不好意思,解决了。
03.31.2010 10:29 上午 - 5楼