【发布时间】:2023-03-06 18:57:01
【问题描述】:
我需要根据正在访问页面的浏览器加载两个样式表之一:
如果不是 IE,则加载“新”样式表
如果 IE >= 9 则加载“新”样式表
如果 IE
这是用于实现此目的的代码:
<!--[if lt IE 9]>
<link type="text/css" rel="stylesheet" href="/stylesheets/old.css">
<![endif]-->
<!--[if gte IE 9]>
<link type="text/css" rel="stylesheet" href="/stylesheets/new.css">
<!--<![endif]-->
<!--[if !IE]><!-->
<link type="text/css" rel="stylesheet" href="/stylesheets/new.css">
<!--<![endif]-->
这适用于所有现代浏览器,并且旧版本的 IE 可以正确加载旧样式。但是在旧版本的 Firefox (3.6) 和可能的其他版本中,不会加载新的 css,而是将 --> 打印到网页上。这是因为必须添加声明 !IE - <!--> 的行,否则 IE 11 不会加载样式表。如果我把它拿出来,它在 Firefox 3.6 中可以正常工作。
设置这些条件 cmets 以确保其适用于各种浏览器和版本的正确方法是什么?
【问题讨论】:
-
是的,这看起来很奇怪。我能够重现该行为。
-
对于现代浏览器应该没有评论。因此,为了将 new.css 样式表放在首位,在您的
[if....] .. <!--<![endif]-->之外 -
@Caelea:注释语法是它在 IE 中工作和验证标记所必需的。 cmets 的设置方式使得其他浏览器可以很好地读取它。如果您查看代码的语法突出显示,您也会看到它。
标签: html css internet-explorer firefox conditional-comments