IE7和IE8无法加载条件CSS

5
我写了一堆CSS,使我的网站首先针对移动设备进行优化,然后使用CSS媒体查询为桌面浏览器加载另一个样式表。我这样做是因为有很多移动浏览器不支持CSS媒体查询,而且桌面用户更有可能拥有支持此功能的现代浏览器。
我有以下CSS在所有现代浏览器中都可以正常工作(IE9、Chrome、Firefox 3.6+、Safari 4+5):
然后我意识到IE7和IE8不支持CSS媒体查询,因此上述方法无法使用。所以我添加了一个条件语句来加载它:
<link rel="Stylesheet" type="text/css" href="/css/mobile.css" media="all"/>
<!-- [if lt IE 9]>
<link rel="Stylesheet" type="text/css" href="/css/desktop.css" media="all" />
<! [endif] -->  
<link rel="Stylesheet" type="text/css" href="/css/desktop.css" media="only screen and (min-width: 640px)" />

然而,经过使用IE Tester和Browsershots测试,我确认desktop.css在IE 7和8中未加载。它似乎完全忽略了这个样式表。
然后我尝试将条件语句改为<!-- [if IE 8]>但没有任何效果。
最后,我删除了条件语句,代码变成了这样:
<link rel="Stylesheet" type="text/css" href="/css/mobile.css" media="all"/>
<link rel="Stylesheet" type="text/css" href="/css/desktop.css" media="all" />

这最后一次尝试导致我的 desktop.css 在 IE7 和 IE8 中被加载。这证明了 CSS 是没有问题的。看起来只是我的条件语句没有被触发。你有什么想法我做错了什么吗?

1
不确定这是否是问题,但尝试移除空格。<!-- [if lt IE 9]> --> <!--[if lt IE 9]> - Shaz
1个回答

8

去掉空格。这会破坏条件语法。否则,IE将把它视为普通注释。

<!--[if IE 8]>
...
<![endif]-->

谢谢,这就是问题所在!(注意:更改您的结束注释,应为 <![endif]--> - TMC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接