CSS HACK什么意思,代表什么啊
什么是CSS hack( /css-hack/index.html)由于不同的浏览器,比如 Explorer 6, Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。
这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。
这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack,也叫写CSS hack。
CSS Hack的原理是什么
由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。
我们就可以根据这个来针对不同的浏览器来写不同的CSS。
比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识。
等等
书写顺序,一般是将识别能力强的浏览器的CSS写在后面。
下面如何写里面说得更详细些。
如何写CSS Hack
比如要分辨IE6和firefox两种浏览器,可以这样写:
我在IE6中看到是红色的,在firefox中看到是绿色的。
解释一下:
上面的css在firefox中,它是认识不了后面的那个带星号的东东是什么的,于是将它过滤掉,不予理睬,解析得到的结果是:div{background:green},于是理所当然这个div的背景是绿色的。
在IE6中呢,它两个background都能识别出来,它解析得到的结果是:div{background:green;background:red;},于是根据优先级别,处在后面的red的优先级高,于是当然这个div的背景颜色就是红色的了。
CSS hack:区分IE6,IE7,firefox
区别不同浏览器,CSS hack写法:
区别IE6与FF:
background:orange;*background:blue;
区别IE6与IE7:
background:green !important;background:blue;
区别IE7与FF:
background:orange; *background:green;
区别FF,IE7,IE6:
background:orange;*background:green;_background:blue;
background:orange;*background:green !important;*background:blue;
注:IE都能识别*;标准浏览器(如FF)不能识别*;
IE6能识别*,但不能识别 !important,
IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;
IE6 IE7 FF
* √ √ ×
!important × √ √
浏览器优先级别:FF
css盒模型hack的另一选择是什么css:
#box
{
width: 150px;
}
#box div {
border: 5px;
padding: 20px;
}
html:
...
这样一来在任何浏览器中盒的总宽度都将是150像素。
求IE6浏览器专用的css hack(即该部分语句只对IE6有效)
楼主说到的方法一:
/* ie6 */
* html { 我找到的方法之一;这里加上 ,有什么好处?}
/* end */
一般不是你那个位置加的 ,不过我可以解释一下在那里加的好处:
本来/**/是构成注释块的,就是里面的内容全部不执行。
但ie6,以及windows ie6以下的浏览器不叫“聪明”,它解析到*/ 的时候,就以为解析完了,因此执行中间的的内容,所以,中间的*html{} 代码被执行。
但你这种用法比较作用比大,以为*html已经起到选择ie6浏览器的左右了。
其实""我们比较用的多是这样的。
.element{} 或者
.element{} 或者
.element{wi h:123px;}
这三个例子都系应用ie6不识别而运动代码。
下面给一个应用例子说明一下:
.element{width:123px;} /*element的宽为123px,这个ie6 ie7 ff上面都表现为123px*/
.element{width:100px;} /*ie7 ff识别知道它是没用的符号,不赋予执行,而ie6当没出现,因此宽为100px,*/
通过这个例子,我们就可以筛选出ie6了。
.element和.element{wi h:123px;}的应用同理。
不过建议不要使用来筛选ie6,因为在系统里面
这些都是有特别的意思的,呵呵,这里就不详细说明了,为了不出现不必要的麻烦,还是用著名的hack —— starHTML来筛选ie6吧。
starHTML就是我们经常用的*html{}了。
对于楼主提及的方法二:
* html { 这就是IE6专用的?}
其实也可以说*html是ie6专用。
因为ie7已经修复了这个hack了。
至于为什么一定是*html而不是¥HTML @html 或者系其他呢?就要问微软的设计师为什么才知道了。
不过可以说说css的hack的原理吧。
CSS Hack的原理是由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。
我们就可以根据这个来针对不同的浏览器来写不同的CSS。
举一个例子吧,希望通过这个例子,你可以感觉到*html这个hack的原理吧。
*+html{}是ie7的专属筛选hack。
为什么中间有个+号呢,
因为+是相邻选择符,相邻选择符ie6不支持,不过ie7支持,因此,就可以筛选出应用于ie7的语句了。
关于css hack,实在涉及的东西比较广,如果你有兴趣,可以联系一下我。
我怕我说了一堆话,看了也糊涂了,呵呵。
希望对你有帮助啦。
css常见的hack方法有哪些
CSS Hack大致有3种表现形式,CSS属性前缀法、选择器前缀法以及IE条件注释法(即HTML头部引用if IE)Hack,实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的。
属性前缀法(即类内部Hack):例如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",IE6~IE10都认识"9",但firefox前述三个都不能认识。
选择器前缀法(即选择器Hack):例如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。
IE条件注释法(即HTML条件注释Hack):针对所有IE(注:IE10+已经不再支持条件注释): <!--[if IE]>IE浏览器显示的内容 <![endif]-->,针对IE6及以下版本: <!--[if lt IE 6]>只在IE6-显示的内容 <![endif]-->。
这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。
具体不展开,可看资料搜索“史上最全的CSS hack方式一览”