HTML代码注释、IE条件注释详解
HTML注释
在HTML代码中,<!-- 和 -->标签之间的文本是文档的注释,注释的内容不会被显示在浏览器页面上。只有在文本编辑器中,或浏览器的“查看源代码”选项打开文档时,才能看到注释。
HTML中的注释有两种类型,一种是HTML代码注释,一种是IE条件注释。
1、HTML代码注释
在一个大文档中,通过注释来标明区块的开始合结束的位置,可以方便查找,也可以通过注释来阻止某些内容显示。
当编写了大量代码时,对关键代码进行注释是一个良好的习惯,通过注释来说明某段代码的意图,有助于提醒自己或需要在这个网站上工作的其他人,了解这段代码的作用。
使用注释来隐藏脚本,也是一个良好的习惯,这样一来,不支持脚本的浏览器就不会把脚本作为纯文本显示出来。如:
<script type="text/javascript">
<!--
function displayMsg() {
alert("Hello World!")
}
//-->
</script>
2、IE条件注释
IE条件注释(Conditional comments),是IE浏览器对HTML代码注释的一种扩展,它是一种非标准逻辑语句,可以灵活的为不同版本的IE导入不同html元素,如样式表、html标签等。
条件注释在IE5首次出现,并得到后续版本的支持,其语法就是一个普通的HTML注释,IE以外的浏览器会把它作为注释而忽略。因此,它能通过W3C的校验,也不会对其他浏览器造成影响。
条件注释的功能非常强大,可以进行 if 条件判断,并根据判断结果是true 或 false,来决定是否要解析条件注释里的内容。
条件判断以 <!--[if 条件]> 开始,以<![endif]-->结束,可以根据IE、非IE进行判断,还可以根据IE的版本号进行判断,版本号可以精确到小数点后4位。如:
<!--[if IE]> <![endif]--> /* 所有IE,无论哪个版本 */
<!--[if IE 6]> <![endif]--> /* 如果IE版本是6 */
条件判断中,还支持大于(gt: greater than)、小于(lt: less than)、大于等于(gte: greater than or equal)、小于等于(lte: less than or equal)、或(|)、与(&)、非(!)、括号。如:
<!--[if gt IE 6]> <![endif]--> /* 如果IE版本大于6 */
<!-- [if lte IE 9]> <![endif]--> / * 如果IE版本小于等于9 * /
<!--[if IE 6 | IE 7]> <![endif]--> /* 如果IE版本是6或7 */
<!--[if ! IE 5.5]> <![endif]--> /* 如果IE版本不是5.5 */
<!-- [if (gt IE 6) & (lte IE 9)]> <![endif]--> / * 如果IE版本大于6,且小于等于9 * /
借助条件注释,可以解决很多IE兼容性问题。如,IE9以下的版本不支持HTML5的新元素 header、nav、aside、footer等,而在Internet上存在大量的 html5shiv脚本可以解决该问题。只需下载相应的脚本,并在页面的头部,通过IE条件注释,让IE9以下的版本加载该脚本,就可以让这些老浏览器支持HTML5的新元素。
<!--[if lt IE 9]>
<script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
也可以使用同样的方法,来解决CSS的兼容性问题。如,IE6不支持一些CSS新特性,就可以专门针对IE6编写CSS文件,并只让IE6加载它:
<!--[if IE 6]>
<link rel="stylesheet" href="css/ie6.css" />
<![endif]-->
一个好消息是,从IE10版本开始,不再支持条件注释。这标志着IE从此走向成熟、走向标准,Web设计师再也不必为IE的兼容性问题所困扰了。
上一篇: Android banner详解用法案例