您好
我有一个根据浏览器应用不同样式的 CSS,我想在 CSS 文件本身(而不是 HTML 或 PHP 文件)中测试浏览器(如果浏览器不是 IE)。
我该怎么做?我应该使用这个:
<!--[if !IE]>
<style>
//code
</style>
<![end if]-->
在 CSS 文件中???
您好
我有一个根据浏览器应用不同样式的 CSS,我想在 CSS 文件本身(而不是 HTML 或 PHP 文件)中测试浏览器(如果浏览器不是 IE)。
我该怎么做?我应该使用这个:
<!--[if !IE]>
<style>
//code
</style>
<![end if]-->
在 CSS 文件中???
最好将每个浏览器特定代码添加到单独的文件中,并使用与您使用的相同条件导入所需文件,是的,条件将在 CSS 之外和实际 HTML 文件中。
这些条件注释仅适用于 IE。所以检查!IE
不会对其他浏览器做任何事情;)
您可以使用 Javascript 注入 CSS。我只是即兴创作,这样的事情可能会做(jQuery):
if( !$.browser.msie ) {
$("#someLinkElement").attr( "href", "webkit.css" );
}
编辑:现在非 IE 浏览器的条件成立
不幸的是,没有可以在 CSS 中使用的条件注释的等效语法。条件注释是 Microsoft 对 HTML 的扩展,而不是 CSS。
但是,您可以用 PHP 编写 CSS 文件,并让 PHP 将其作为 CSS 文件提供服务。
请注意,用于检测非 Internet Explorer 浏览器的条件注释语法是错误的。您需要以下内容:
<!--[if !IE]>-->
<style>
//code
</style>
<!--<![endif]-->
这将隐藏来自 IE 的评论之间的代码。
更好的方法是根据浏览器类型/版本将特定类应用于<html>
页面元素。然后,您可以从 CSS 文件中定位特定浏览器。
这正是html5 样板项目所做的:
<!doctype html>
<!--[if lt IE 7]>
<html class="no-js ie6 oldie" lang="en">
<![endif]-->
<!--[if IE 7]>
<html class="no-js ie7 oldie" lang="en">
<![endif]-->
<!--[if IE 8]>
<html class="no-js ie8 oldie" lang="en">
<![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="en">
<!--<![endif]-->
现在要专门为 IE6 编写 CSS,您只需将以下内容添加到样式表中:
.ie6 .some-div {
margin: 0;
}
等等等等。