向下兼容隐藏/向下兼容显示

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 价值 200 美元的免费积分!

我最近发现了一些关于 Internet Explorer 条件注释的小细节,很多人在使用时会遇到麻烦。 Internet Explorer 有两种不同的条件注释,它们使用略微不同的语法:**向下兼容隐藏** 和 **向下兼容显示** (microsoft 文档)。

向下兼容隐藏

<!--[if expression]> 
   HTML 
<![endif]-->

您可能知道 HTML 注释是像这样 <!-- hi there -->。现在看看上面的代码。这是一个块 HTML 注释。当您**希望所有其他非 IE 浏览器忽略整个区域**时,使用这种 IE 条件注释。因为它是 HTML 注释。

例如,您永远不会使用这种样式来执行 [!IE],因为这样会导致非 IE 浏览器无法真正渲染该内容。

向下兼容显示

<![if expression]> 
  HTML 
<![endif]>

看到区别了吗?没有双连字符。这些不是 HTML 注释,因此里面的内容会被非 IE 浏览器看到并渲染。

上面语法的缺点是它是不合法的代码。HTML 验证器会将其标记为“**无效注释**”。(♥)。所以它通常被写成

<!--[if expression]><!-->
  HTML
<!--<![endif]-->

它做同样的事情,但它是有效的。这对于包含 [!IE] 的表达式来说是理想的。

简而言之…

向下兼容隐藏 = 仅在 IE < 10 的某些子集中显示向下兼容显示 = 在 IE < 10 的某些子集中显示,以及所有非 IE 浏览器中显示。如果您想快速了解所有条件注释,请点击这里

结束

当 IE 10 发布时,它将不支持条件注释,针对特定 IE 版本提供特定资源和内容的时代即将结束。谢天谢地。虽然条件注释在修复那些旧浏览器的问题方面非常有用,但如果根本没有问题,情况会好得多。我相信有些人会因为 IE 的记录而感到紧张,但我们只能拭目以待。从目前的情况来看,IE 10 将是一个非常优秀的浏览器,如果不是最符合标准的浏览器,也是其中之一。