2008-10-03 57 views
17

当IE8发布时,下面的代码是否可以添加一个条件样式表?将针对带有条件注释的IE8工作吗?

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

我读过矛盾的报导,这是否与工作公测。我希望有人可以分享他们的经验。谢谢。

+2

很好。另一个来自微软的非标准扩展。 – 2008-10-03 16:23:02

+9

这个非常古老,非常有用,因为它允许非黑客CSS开关为MSIE提供不同的样式表。 – 2008-10-03 17:10:18

+0

这个问题应该很久以前关闭了。 – 2010-03-09 14:45:53

回答

14

它适用于我 - 无论是在怪癖模式和标准遵从模式。但是,在切换到IE8兼容模式时,它不会而不是工作。

+1

您是不是指IE7兼容模式? – Devon 2008-10-03 16:26:46

+1

否:Beta 2具有浏览器模式和文档模式。文档模式支持IE 7的兼容性(以及严格模式和怪癖模式)。浏览器模式具有“IE 7”,“IE 8”和“IE 8兼容模式”选项。我正是这个意思。 – 2008-10-03 17:09:33

21

有一点需要注意:

它的工作,如果要加载的网页/网站本地网络(例如内联网)将在IE7模式下加载默认情况下!(更新 - localhost [*]是一个特殊的情况下,在标准模式渲染)

这违背MSFT的原始的默认标准去声明。

例如

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 

[*] - 斯科特狄更斯[MSFT]在评论here on the IE Blog使localhost是在Intranet特殊情况说明(通常用于开发互联网网站),因此在默认情况下在标准模式将使。

要测试什么模式,IE8的网页是真正的渲染,你可以使用检查开发者工具或使用该书签的代码(仅适用于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); 
3

工具/兼容性视图设置

取消选中全部

0

感谢您的帮助。我发现了这个解决方案,显然问题是每个样式表都使用它自己的title属性。一旦我除了主要样式表之外的所有标题都没有问题。

这是IE8独有的一个奇怪问题 - 虽然我被告知它应该以这种方式工作,但与“样式表偏好”有关 - 它只会产生问题,因为解决方案需要删除标题这在编写脚本等时很有用 - 当您需要调用样式表时。

无论如何,不​​知道这是一个错误还是它应该是这样,但我希望微软进一步调查。

谢谢

0

为什么还打扰写一个单独的样式表为IE8?

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

所有你需要做的就是把这个正确的开头标签。其他任何地方,它都无法工作。

然后每个项目的平均工作时间大约为半小时,IE8不需要紧张的调试!

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

写了一篇博客关于它最近:相对于IE7,我对IE6,IE7和IE8样式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/

0

IE8呈现相当不错;起初,我认为有条件的评论不适用于IE8经过一些实验后,我发现有些规则不适用于IE8,因为我需要先将祖先或父类放在第一位,例如 我有一类像

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

它的工作只有,如果我改变了它的东西,如:

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

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

顺便说一句,我IE8-只有CSS我只有一个压倒一切的规则,其余的都是阿尔姆ost就像firefox,尽管这不会让我离开FF!

0

对于我而言,我想使用使用CSS的圆角边框。 Vista上的IE8不支持这样的。而且由于图形使得圆形的边框也会显示出不错的圆形阴影,所以在IE8中页面看起来很糟糕。

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

然后我看了一下把它变成怪癖/兼容模式,但是,这仍然不工作,因为我用过的CSS黑客不再为IE8工作。

最后但至少我发现了一个可以在兼容模式下正确渲染页面的正常工作的CSS hack。

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

现在,我不知道,如果这个工程的IE7或以下,那么你就必须为每个IE至少三种不同 黑客放出要支持,E.E.

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

我想知道下一个Internet Exploiter的回归会为我们带来什么。