1

您好
我有一个根据浏览器应用不同样式的 CSS,我想在 CSS 文件本身(而不是 HTML 或 PHP 文件)中测试浏览器(如果浏览器不是 IE)。

我该怎么做?我应该使用这个:

<!--[if !IE]>
<style>
//code
</style>
<![end if]-->

在 CSS 文件中???

4

4 回答 4

1

最好将每个浏览器特定代码添加到单独的文件中,并使用与您使用的相同条件导入所需文件,是的,条件将在 CSS 之外和实际 HTML 文件中。

于 2010-12-26T00:31:10.153 回答
1

这些条件注释仅适用于 IE。所以检查!IE不会对其他浏览器做任何事情;)

您可以使用 Javascript 注入 CSS。我只是即兴创作,这样的事情可能会做(jQuery):

if( !$.browser.msie ) {
  $("#someLinkElement").attr( "href", "webkit.css" );
}

编辑:现在非 IE 浏览器的条件成立

于 2010-12-26T00:38:32.183 回答
1

不幸的是,没有可以在 CSS 中使用的条件注释的等效语法。条件注释是 Microsoft 对 HTML 的扩展,而不是 CSS。

但是,您可以用 PHP 编写 CSS 文件,并让 PHP 将其作为 CSS 文件提供服务。

请注意,用于检测非 Internet Explorer 浏览器的条件注释语法是错误的。您需要以下内容:

<!--[if !IE]>-->
<style>
//code
</style>
<!--<![endif]-->

这将隐藏来自 IE 的评论之间的代码。

于 2010-12-26T00:45:38.387 回答
0

更好的方法是根据浏览器类型/版本将特定类应用于<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;
}

等等等等。

于 2012-06-19T08:16:47.033 回答