CSS布局高级技巧

作者:佚名 来源:互联网www.utf.com.cn 点击数: 发布时间:2007年02月05日
margin和padding总是有可能要用到,而产生的问题如何解决呢?由于浏览器解释容器宽度的方法不同:
IE 6.0 Firefox Opera等是
真实宽度=width+padding+border+margin
IE5.X
真实宽度=width-padding-border-margin

IE中有浮动对象的双倍距离之BUG(IE Doubled Float-Margin Bug ), 这里还需要具体问题具体解决,下面是解决办法:IE Bug--浮动对象外补丁的双倍距离

很明显,第一种下很完美的布局在第二种情况下后果是很凄惨的!

解决的方法是hack
div.content {
width:400px; //这个是错误的width,所有浏览器都读到了
voice-family: ""}""; //IE5.X/win忽略了""}""后的内容
voice-family:inherit;
width:300px; //包括IE6/win在内的部分浏览器读到这句,新的数值(300px)覆盖掉了旧的
}
html>body .content { //html>body是CSS2的写法
width:300px; //支持CSS2该写法的浏览器(非IE5)有幸读到了这一句
}

div.content {
width:300px !important; //这个是正确的width,大部分支持!important标记的浏览器使用这里的数值
width(空格)/**/:400px; //IE6/win不解析这句,所以IE6/win仍然认为width的值是300px;
//而IE5.X/win读到这句,新的数值(400px)覆盖掉了旧的,因为!important标记对他们不起作用
}
html>body .content { //html>body是CSS2的写法
width:300px; //支持CSS2该写法的浏览器有幸读到了这一句
}


具体解释点击下面链接查看
XHTML+CSS兼容性解决方案小集
CSS之兼容浏览器篇

列等高技巧

n行n列布局,每列高度(事先并不能确定哪列的高度)的相同,是每个设计师追求的目标,做法有:背景图填充、加JS脚本的
方法和容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法。
背景图填充法:
xhtml:


这是第一列

这是第二列




css:

#wrap{ width:776px; background:url(/bg.gif) repeat-y 300px;}
#column1{ float:left; width:300px;}
#column2{ float:right; width:476px;}
.clear{ clear:both;}

就是将一个npx宽的一张图片在外部容器纵向重复,定位到两列交错的位置纵向重复,在视觉上产生了两列高度一样的错觉

JS脚本法:


代码的原理基本就是这样,读取高度,判断高度,高度相等

容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法

这篇文章说的很详细了
CSS布局自适应高度解决方法
探索CSS实现三行三列等高布局
满屏高度布局(最窄770px最宽1024px经典布局)



今天和一个网友两天,他提到:给一个外国公司做网站,要求1.800x600满屏。2.1024x767满屏。3.1280下居中。4.不许用JS。
我突然想起了这篇文章,哈哈!把它感觉不可思议的事情解决了!但是好像对于IE5有点问题啊!


至此,把布局从最基本的知识点到高级应用整理了一遍,有遗漏的请大家跟贴补上,唯一的缺憾就是例子演示不够,由于时间关系,见谅了!