CSS兼容浏览器的一些常用hack (2009-1-10)
首先,本民工要声明的是,本人并不喜欢hack,只是在某些不得已的情况下需要用到而已。hack并不是标准,如果过于依懒hack来调整页面的话,只会让我们离标准越来越远。在很多大公司会把DIV+CSS的工作称之为“页面重构”或者“网页架构”,是有原因的,一个好的网页架构本身就可以避免大多数需要用到hack的情况。
当然,不管标不标准,至少现在不是IE一统天下的时代,为了兼容浏览器,这些常用的hack手法还是必备的。
屏蔽IE浏览器
*:lang(zh) select {font:12px !important;} /*FF,OP可见*/
class:empty {font:12px !important;} /*safari可见*/
这里class是选择符,根据情况更换。第二句是MAC上safari浏览器独有的。
仅IE7识别
*+html {…}
当面临需要只针对IE7做样式的时候就可以采用这个HACK。
IE6及IE6以下识别
* html {…}
这个地方要特别注意很多地方都写了是IE6的HACK其实IE5.x同样可以识别这个hack。其它浏览器不识别。
仅IE6不识别
class{ display /*IE6不识别*/:none;}
这里主要是通过CSS注释分开一个属性与值,流释在冒号前。
仅IE6与IE5不识别
class/**/ { display /*IE6,IE5不识别*/:none;}
这里与上面一句不同的是在选择符与花括号之间多了一个CSS注释。
仅IE5不识别
select/*IE5不识别*/ { display:none;}
这一句是在上一句中去掉了属性区的注释。只有IE5不识别。现在已经很少去考虑IE5了。
盒模型解决方法
class{width:IE5.x宽度; voice-family :”\”}\””; voice-family:inherit; width:正确宽度;}
盒模型的清除方法不是通过!important来处理的。这点要明确。这也是IE5中才出现的,也是N久都不用了。
只有Opera识别
@media all and (min-width: 0px){ class{……} }
针对Opera浏览器做单独的设定。
清除浮动
class:after {content:”.”; display:block; height:0; clear:both; visibility:hidden;}
关于清除浮动,在这里要详细说下,因为个是经常会碰到的。很多网站上都把上面那个方法称之为万能清除浮动之方法。其实用起来也并不那么好用。下面这句比较简单,效果也是一样:
class{overflow:hidden; height:1%;}
虽然这两种方法在页面输出的时候是没有问题的,但是用dreamweaver打开的时候有可能就是一团糟。本民工可是一个追求完美之人,所以推荐用下面这种方法:
.clearfloat { /* 此类应当放在 div 或 break 元素上,而且该元素应当是完全包含浮动的容器关闭之前的最后一个元素 */ clear:both;height:0;font-size: 1px;line-height: 0px;}
这个是dreamweaver模版自带的清除浮动方法,很好用的。