0

我的 html 中有以下代码:

<link href="~/App_Themes/Default/core.css" rel="Stylesheet" />
<!--[if gte IE 7]>
    <link href="~/App_Themes/Default/ie.css" rel="Stylesheet" />
<![endif]-->

据我了解,这说明了以下内容:

到 Chrome
加载 core.css 来在这个文件上使用,剩下的就是注释,所以忽略它

To IE
Load core.css to use on this file... 哦等等,你是 IE,所以加载 ie.css

到目前为止,ie 样式表正在覆盖 ie 中的 Chrome 样式表,但我遇到的问题是 Chrome 也会读取 ie.css,这会破坏页面上某些元素的定位

我已经尝试<!-- if !IE]>...了一些有关此的含义,但仍然没有任何乐趣。

我曾考虑用不同的名称围绕 IE 条件注释中的元素,但这在代码中要混乱得多。

我只需要隔离浏览器之间的规则(以便 ie.css 在 Chrome/Firefox/etc 中加载,ie.css 在 IE 中加载)

谢谢, Ortund

4

3 回答 3

1

正如我在评论中提到的,您误解了条件选项。IE7 将加载这两个文件并调用定义。对于isolationg css 样式,您必须用特殊名称标记类名。

这里有一个例子:

想象有一个css规则:

.headless .content {background-color: yellow;}

所有浏览器都会理解这一点。如果您只想更改 IE 7 的背景,您可以定义如下规则:

*:first-child+html .headless .content {background-color: red;}

它是如何工作的:

铬浏览器:

.headless .content对我来说是一个有效的陈述,所以我会调用它

:first-child+html .headless .content 

对我来说是一个无效的陈述,所以我会忽略它。

IE7:

.headless .content 对我来说是一个有效的陈述,所以我会调用它

:first-child+html .headless .content 对我来说也是一个有效的陈述,所以我也会调用它。而且因为最后一个语句总是获胜,所以我将背景涂成红色。

它的关键字“跨浏览器黑客

于 2013-09-16T08:58:25.013 回答
0

样式.css

body {
   color: red;
}

msie.css

body {
   color: blue;
}

索引.html

[...]

<link href=/css/style.css rel=stylesheet>
<!--[if IE]><link href=/css/msie.css rel=stylesheet><![endif]-->

[...]

<body>I am red in all browsers but blue in MSIE</body>

您应该遵循这个示例并牢记CSS 语句的特殊性。

于 2013-09-16T09:01:21.620 回答
-1

尝试

<!--[if lt IE 9]>

<![endif]-->
于 2013-09-16T08:46:32.023 回答