IE6, IE7, Firefox, Opera 及 Safari CSS Hacks
已有 228 次阅读 2008-11-05 23:50 标签: CSS hack HTML IE6 IE7 Firefox Opera
不同的浏览器,甚至不同版本的同一个浏览器对同样的CSS的解析都有所不同,这样就造成了网页设计中的许多不变。不过,我们还是可以依靠一些小小的Hacks来弥补这些不便。
下面介绍的一些CSS hacks主要涉及到 IE5, IE6, IE7, Firefox, Opera 及 Safari:
IE系列:
div { +property:value; } 在属性名前加上加号"+",这个Hack只有IE系列可以识别.
div { *property:value; } 在属性名前加上星号"*",这个Hack只有IE系列可以识别.
div { _property:value; } 在属性名前加上下划线"_",这个Hack只有IE系列 (除IE7外) 识别.
* html div { property:value; } 在选择器上运用继承法 * html div, 这个Hack只有IE系列 (除IE7外) 可以识别.
html >body div { property:value; } 在选择器上运用继承法 html >body div ,这个Hack只有IE系列 (除IE7外) 可以识别.
div { property:value; } 在属性名和冒号":"之间加入注释,屏蔽IE6用.
div { property:value; } 在选择器和花括号"{"之间以及在属性名和冒号":"之间加入注释,屏蔽IE5和IE6用 (不屏蔽IE5.5) .
select { property:value; } 在选择器和花括号"{"之间加入注释,屏蔽IE5用.
* + html div { property:value !important; } 在选择器上运用继承法 *+html div 再加上 !important, 这个Hack只有IE7可以识别.
Firefox:
*:lang(lang) div { property:value !important; } 用伪类lang(语言)再加上!important进行定义的话,目前只有Firefox可以识别.
div, x:-moz-any-link { property:value; } 目前只有Firefox可以识别.
Safari:
div:empty { property:value !important; } 用伪类empty再加上!important进行定义的话,目前只有Safari可以识别.
Opera:
@media all and (min-width: 0px){ div { property:value; } } 利用特殊继承法进行定义的话,目前只有Opera可以识别.
以上都是写CSS中的一些HACK,这些都是用来解决局部的兼容性问题,如果希望把兼容性的内容也分离出来,不妨试一下下面的几种过滤器。这些过滤器有的是写在CSS中通过过滤器导入特别的样式,也有的是写在HTML中的通过条件来链接或是导入需要的补丁样式。
下面介绍的一些CSS hacks主要涉及到 IE5, IE6, IE7, Firefox, Opera 及 Safari:
IE系列:
div { +property:value; } 在属性名前加上加号"+",这个Hack只有IE系列可以识别.
div { *property:value; } 在属性名前加上星号"*",这个Hack只有IE系列可以识别.
div { _property:value; } 在属性名前加上下划线"_",这个Hack只有IE系列 (除IE7外) 识别.
* html div { property:value; } 在选择器上运用继承法 * html div, 这个Hack只有IE系列 (除IE7外) 可以识别.
html >body div { property:value; } 在选择器上运用继承法 html >body div ,这个Hack只有IE系列 (除IE7外) 可以识别.
div { property:value; } 在属性名和冒号":"之间加入注释,屏蔽IE6用.
div { property:value; } 在选择器和花括号"{"之间以及在属性名和冒号":"之间加入注释,屏蔽IE5和IE6用 (不屏蔽IE5.5) .
select { property:value; } 在选择器和花括号"{"之间加入注释,屏蔽IE5用.
* + html div { property:value !important; } 在选择器上运用继承法 *+html div 再加上 !important, 这个Hack只有IE7可以识别.
IE5.x的过滤器,只有IE5.x可见
@media tty {
i{content:"\";}} @import 'ie5win.css';
IE5/MAC的过滤器,一般用不着
IE的if条件Hack
<!--[if IE]>Only IE <![endif]--> 所有的IE可识别
<!--[if IE 5.0]> Only IE 5.0 <![endif]--> 只有IE5.0可以识别
<!--[if gt IE 5.0]> Only IE 5.0+ <![endif]--> IE5.0包换IE5.5都可以识别
<!--[if lt IE 6]> Only IE 6- <![endif]--> 仅IE6可识别
<!--[if gte IE 6]> Only IE 6/+ <![endif]--> IE6以及IE6以下的IE5.x都可识别
<!--[if lte IE 7]> Only IE 7/- <![endif]--> 仅IE7可识别
@media tty {
i{content:"\";}} @import 'ie5win.css';
IE5/MAC的过滤器,一般用不着
IE的if条件Hack
<!--[if IE]>Only IE <![endif]--> 所有的IE可识别
<!--[if IE 5.0]> Only IE 5.0 <![endif]--> 只有IE5.0可以识别
<!--[if gt IE 5.0]> Only IE 5.0+ <![endif]--> IE5.0包换IE5.5都可以识别
<!--[if lt IE 6]> Only IE 6- <![endif]--> 仅IE6可识别
<!--[if gte IE 6]> Only IE 6/+ <![endif]--> IE6以及IE6以下的IE5.x都可识别
<!--[if lte IE 7]> Only IE 7/- <![endif]--> 仅IE7可识别
Firefox:
*:lang(lang) div { property:value !important; } 用伪类lang(语言)再加上!important进行定义的话,目前只有Firefox可以识别.
div, x:-moz-any-link { property:value; } 目前只有Firefox可以识别.
Safari:
div:empty { property:value !important; } 用伪类empty再加上!important进行定义的话,目前只有Safari可以识别.
Opera:
@media all and (min-width: 0px){ div { property:value; } } 利用特殊继承法进行定义的话,目前只有Opera可以识别.
以上都是写CSS中的一些HACK,这些都是用来解决局部的兼容性问题,如果希望把兼容性的内容也分离出来,不妨试一下下面的几种过滤器。这些过滤器有的是写在CSS中通过过滤器导入特别的样式,也有的是写在HTML中的通过条件来链接或是导入需要的补丁样式。







发表评论 评论 (0 个评论)