针对有条件评论的IE8会有效吗?

时间:2008-10-03 16:13:27

标签: html css internet-explorer internet-explorer-8 stylesheet

发布IE8时,以下代码是否可以添加条件样式表?

<!--[if IE 8]>
  <link rel="stylesheet" type="text/css" href="ie-8.0.css" />
<![endif]-->

我读过有关这是否适用于测试版的相互矛盾的报告。我希望有人可以分享他们的经验。感谢。

7 个答案:

答案 0 :(得分:22)

有一点需要注意:

如果您正在加载页面/网站 本地网络(例如Intranet) ,它确实有效, 但是 它默认加载 IE7 模式 (更新 - localhost [*]是一个特殊情况, 以标准模式呈现)

这违反了MSFT默认的STANDARDS原始声明。

e.g。

http://127.0.0.1/mysite/mypage.php  <-- IE8 by default (updated!)
http://localhost/mysite/mypage.php  <-- IE8 by default (updated!)
http://machinename/mysite/mypage.php  <-- IE7 by default
http://192.168.100.x/mysite/mypage.php  <-- IE7 by default
http://google.com/  <-- IE8 by default

[*] - Scott Dickens [MSFT]在评论here on the IE Blog中指出,localhost是Intranet中的特殊场景(通常用于开发Internet站点),因此默认情况下将以标准模式呈现。

要测试IE8中的页面实际呈现的模式,您可以使用检查开发人员工具或使用此bookmarklet代码(仅适用于IE8):

javascript:
var vMode=document.documentMode;
var rMode='IE5 Quirks Mode';
if(vMode==8){
  rMode='IE8 Standards Mode';
} else if(vMode==7){
  rMode='IE7 Strict Mode';
}
alert('Rendering in: '+rMode);

答案 1 :(得分:14)

它对我有用 - 无论是在怪癖模式还是在标准合规模式下。但是,当切换到IE8兼容模式时,它工作。

答案 2 :(得分:3)

工具/兼容性视图设置取消选中所有

答案 3 :(得分:0)

感谢您的帮助。我发现了解决方案,显然问题是每个样式表都使用自己的title属性。一旦我把标题从主要样式表中删除,没有概率。

这是IE8独有的奇怪问题 - 虽然我被告知它应该以这种方式工作,但与“样式表首选项”有关 - 它只会产生问题,因为解决方案要求你删除标题在编写脚本等时可能会有所帮助 - 当你需要调用样式表时。

在任何情况下,不确定这是否是一个错误,或者它应该是那样,但我希望微软进一步调查。

由于

答案 4 :(得分:0)

为什么还要为IE8编写单独的样式表?

如果您已经针对IE7进行了调试,则可以强制IE8进入兼容模式,从而显示您的代码,就好像IE8是IE7一样。

你要做的就是把它放在开头标签下面。在其他地方,它将无法正常工作。

然后,每个项目的平均工作时间减少了半小时,不需要对IE8进行强烈的调试!

即使Msn.com这样做 - 有点讽刺,是吗?

最近写了一篇关于它的博文:http://blog.sankhomallik.com/2009/11/16/stop-wasting-time-debugging-on-ie8-when-you-dont-have-to-or-get-ie8-to-behave-like-ie7/

答案 5 :(得分:0)

与IE7相比,IE8渲染得相当不错,我有IE6,IE7和IE8的样式表;起初我认为有条件的评论在经过一些实验后不适用于IE8我发现一些规则并没有被IE8应用,只是因为我需要先把祖先或父类放在首位,例如 我有一个像

这样的课程

.niceclass {some:properties;more:properties;}

如果我更改了

,它只能

.parentclass .niceclass {some:properties;more:properties;}

#parentselector .niceclass {some:properties;more:properties;}

在我的IE8-only css中,我只有一个最重要的规则,其余部分几乎就像firefox一样,虽然那不会让我离开FF吧。

答案 6 :(得分:0)

就我而言,我想使用css使用圆形边框。 Vista上的IE8不支持此类。而且由于图形是圆形的边框也会显示出漂亮的圆形阴影,因此IE8中的页面看起来很糟糕。

我尝试使用条件注释,但无济于事,IE8不会评估if IE表达式,因此不会包含外部样式表。

然后我看一下将它置于quirks / compatibleblity模式,然而,这仍然不起作用,因为我使用的CSS hacks不再适用于IE8。

最后但至少我找到了一个有效的CSS hack,它将在兼容模式下正确呈现页面。

* + html #test[id] { color:lime } 

现在,我不知道这是否适用于IE7或更低版​​本,因此您将至少有三个 您希望支持的每个IE版本都有不同的黑客,例如

* + html #test,
    html+body #test,
    * html body #test
    { color:lime }

我想知道Internet Exploiter的下一次回归将会给我们带来什么。