IE条件注释
它是由Microsoft从IE5开始就提出并提供的一种非标准逻辑语句。
灵活的判断不同IE版本,且导入不同的html/css/js等。
属于Microsoft官方给出的兼容解决方案,并且能顺利通过W3C标准的效验。
了解关键词
lt :Less than的简写,也就是小于的意思。
lte :Less than or equal to的简写,也就是小于或等于的意思。
gt :Greater than的简写,也就是大于的意思。
gte:Greater than or equal to简写,也就是大于或等于的意思。
!:不等于
使用它
(1)只有IE可以识别[ IE5 ]
<!--[if IE]>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<![endif]-->
解释:只有IE5以上的版本才刚开始支持IE条件注释,所以只有IE可以识别它。
(2)只有特定版本才能识别 [ = ]
<!--[if IE 8]>
<link rel="stylesheet" href="bootstrap.min.css" />
<![endif]-->
解释:IE8才能识别,IE7和IE9都无法识别。
(3)只有不是特定版本才能识别 [ >< ]
<!--[if !IE 6]>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.runtime.min.js"></script>
<![endif]-->
解释:除了IE6不能识别,都能识别,但要在IE5以上,为什么,前面已经赘述了。
(4)只有高于特定版本才能识别[ > ]
<!--[if gt IE 6]>
<script src="https://cdn.bootcss.com/angular.js/2.0.0-beta.17/angular2.min.js"></script>
<![endif]-->
解释:必须高于IE6版本才能识别,IE6版本也无法识别。
(5)等于或高于特定版本才能识别[ >= ]
<!--[if gte IE 8]>
<script src="https://cdn.bootcss.com/angular.js/2.0.0-beta.17/angular2-polyfills.js"></script>
<![endif]-->
解释:IE8或更高才能识别,IE7无法识别。
(6)低于特定版本才能识别[ < ]
<!--[if lt IE 9]>
<script src="https://cdn.bootcss.com/lodash.js/4.17.12-pre/lodash.min.js"></script>
<![endif]-->
解释:IE9以下无法识别,IE9也无法识别。
(7)等于或低于特定的版本才能识别[ <= ]
<!--[if lte IE 8]>
<script src="https://cdn.bootcss.com/react/16.9.0-alpha.0/cjs/react.production.min.js"></script>
<![endif]-->
解释:IE8及IE8以下可以识别,IE9无法识别。
注意事项
只对IE浏览器有效
以上条件注释只在IE浏览器才能得到执行,只有IE浏览器认识,当我们在非IE浏览器下条件注释会被当做注释忽略掉,得不到执行。
优点和缺点
优点:虽然它有根据IE条件注释,载入不同的js/css,解决了样式兼容问题,保护了代码块。
缺点:这些注释需要放在html页面,如果你不需要或更改时,维护相对麻烦。