【问题标题】:Conditional Comments有条件的评论
【发布时间】:2014-03-04 00:31:04
【问题描述】:
我是 UI 新手。我看到用于识别 IE 浏览器的条件 cmets 像
<!--[if IE 10]> <html class="no-js ie10" lang="en"> <![endif]-->
<!--[if !IE]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
它们工作正常,但谁能解释它是如何工作的? IE 不把这些语句识别为 cmets 吗?
【问题讨论】:
标签:
internet-explorer
conditional-comments
【解决方案1】:
首先,IE10没有条件评论识别,已经被禁用,只适用于IE9及更低版本。超过 10 的版本比早期版本的错误少得多。
这就是它的工作原理:
<!--[if lte IE8]>
<style type="text/css">
IE lower or equal to 8 CSS rules go here
</style>
<![endif]-->
整个样式表
<!--[if lte IE8]>
<link rel="stylesheet" type="text/css" href="ie8-and-lower.css"/>
<![endif]-->
低于和等于 IE7
<!--[if lte IE7]>
低于IE7
<!--[if lt IE7]>
大于IE7
<!--[if gt IE7]>
不是IE7
<!--[if !IE7]>
IE7
<!--[if IE7]>
条件 cmets 在样式表中不起作用。但是,您可以在 HTML 中使用条件 cmets 将不同的 CSS 类或 ID 应用到您可以使用 CSS 定位的元素。
像这样工作:
<!--[if IE7]>
<div id="content" class="ie7">
<![endif]-->
<!--[if !IE7]>
<div id="content">
<![endif]-->
【解决方案2】:
这些只是 Internet Explorer 读取的条件语句,并允许 Web 开发人员解决为 IE 开发带来的过多问题。
具有讽刺意味的是,IE10 及更高版本完全放弃了对这些的支持,因此它们实际上只对旧浏览器的复古编码有用,即当使用 HTML5 shivs 时,例如
<!--[if lt IE 9]>
<script src="dist/html5shiv.js"></script>
<![endif]-->
它们是如何工作的.. IE(10 以下)只是将它们检测为渲染引擎的一部分,而其他浏览器只是将它们视为 cmets
这里有一些关于它们被删除的信息,以及指向其他资源的链接(如果您想深入了解它或获得更好的示例)
http://www.therailsview.com/2012/02/internet-explorer-10-to-no-longer-support-conditional-comments/