CSS中加号、星号及其他符号的作用 http://blog.sina.com.cn/s/blog_6790717801011dx8.html
CSS中加号、星号及其他符号的作用 (2012-06-27 14:34:32)转载▼
标签: 科技 css 浏览器 版本 it
首先,什么是CSS hack?
针对不同的浏览器写不同的CSS code的过程,就叫CSS hack!
CSS hack由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。
这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。
CSS Hack的原理是什么
由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。
CSS Hack大致有3种表现形式,CSS类内部Hack、选择器Hack以及HTML头部引用(if IE)Hack,CSS Hack主要针对IE浏览器。
类内部Hack: 比如 IE6能识别下划线"“和星号” * “,IE7能识别星号” * “,但不能识别下划线”",而firefox两个都不能认识。
选择器Hack: 比如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。
HTML头部引用(if IE)Hack: 针对所有IE: <!--[if IE]><!--您的代码--><![endif]-->,针对IE6及以下版本: <!--[if lt IE 7]><!--您的代码--><![endif]-->,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。
书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。
如何写CSS Hack
比如要分辨IE6和firefox两种浏览器,可以这样写:
<style> div{ background:green; *background:red; } </style> 在IE6中看到是红色的,在firefox中看到是绿色的。
上面的css在firefox中,它是认识不了后面的那个带星号的东西是什么的,于是将它过滤掉,不予理睬,解析得到的结果是:div{background:green},于是理所当然这个div的背景是绿色的。
在IE6中呢,它两个background都能识别出来,它解析得到的结果是:div{background:green;background:red;},于是根据优先级别,处在后面的red的优先级高,于是当然这个div的背景颜色就是红色的了。
在理想世界里,正确的CSS应该在任何支持CSS的浏览器里工作良好。不幸的是,我们并不是生活在理想的世界里,浏览器们布满了BUG和不一致。创建一个跨浏览器并且显示一致的页面,CSS开发者必须想尽办法。通过使用BUG和未实现的CSS,开发者就能够为不同的浏览器应用不同的规则。HACK和FILTER是开发者强有力的武器。了解各种常用的HACKS以及它们如何工作,是件重要的事,但什么时候用和什么时候不用它们,也是件同等重要的事情。
CSS filter或者hack是一种代码,用来根据浏览器类型,版本号显示或隐藏CSS标签。浏览器们对CSS行为有不同的解释,对W3C标准的支持程度也不相同。CSS 过滤器经常用于在多个浏览器中实现一致的布局外观,因为某些浏览器无法渲染。HACK (黑客) 这样的称呼多少有点消极,实质上属于个人对CSS代码非官方的修改,误导人们以为还有更好的方法达到目的,但其实我们没有,有的人喜欢用patch (补丁) 来称呼它,这样人们就能知道这本是浏览器造成的错误。
...