聊一聊HTML <!--…-->标签

定义

注释标签用于在html源代码中插入注释。注释不会在浏览器上显示。

用法

根据定义的基本用法,代码如下

<!-- 这是一段注释,我不会显示在页面上 -->

浏览器的支持情况

所有浏览器都支持
上面这些只是最简单的定义和使用方法。对于注释的使用,有哪些更高级的使用。

高级应用

1、分配工作

<!-- todo:张三 begin -->
<div></div>
<!-- end -->

2、说明功能模块及使用方法

<!-- 激活状态类:active,默认状态类:default,无法使用状态类:disabled -->
<ul><li class="active">激活</li><li class="default">默认</li><li class="disabled">无法使用</li></ul>

3、对于页面制作的备注

<!-- 此页面创建于2016/5/31,前端:李四,设计:王五 -->

以上3种应用都是基于注释的说明作用,利用其在浏览器上不显示的特性,对文档进行说明,方便工作中跨组跨部门的沟通。

4、在页内CSS/JS的作用

用于兼容老版的浏览器,对于js和css还无法识别。(只用于了解,现在基本可以放弃使用这个功能了),代码如下

<!DOCTYPE html>
<html>
<head>
<style>
.good{color:red;}
</style>
</head>
<body>
<script>alert(‘good‘)</script>
<p>morning</p>
</body>
</html>

上面的代码会直接显示在页面

.good{color:red;}alert(‘good‘)
morning

可以使用注释,以防止代码显示,影响页面体验。

<!DOCTYPE html>
<html>
<head>
<style>
<!--
.good{color:red;}
-->
</style>
</head>
<body>
<script>
<!--
alert(‘good‘)
//-->
</script>
<p>morning</p>
</body>
</html>

此处理还使用了//,是javascript的注释符号,防止js对-->执行。

5、利用注释插入代码

这点也是利用注释不会被页面渲染的特性,来对页面进行优化。可以用来存储数据,可以用来存储模板。

<!-- {id:10000,type:ad,image:1.jpg} -->
<div is-tpl>
<!--
<div>1111111</div>
<div>2222222</div>
-->
</div>

这里的代码可以用正则表达进行匹配,来取出对应数据然后对数据进行解析处理。下面是使用jquery简单的演示代码

$(‘[is-tpl]‘).each(function(){
	console.log($(this).html())
	var comment=$(this).html();
	$(this).html(comment.replace(‘<!--‘,‘‘).replace(‘-->‘,‘‘));
})

这样代码也正确显示了,具体注释里要放什么数据以及怎么处理,大家自己思考一下吧。

6、利用条件注释来兼容各浏览器

以下条件注释判断IE浏览器(IE10以后已经不支持这些注释了),其它浏览器都会认为下面是注释,不进行解析。

<!--[if IE 6]> 仅IE6可识别 <![endif]-->
<!--[if IE]> 所有的IE可识别 <![endif]-->
<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->
<!--[if IE 6]> 仅IE6可识别 <![endif]-->
<!--[if lt IE 6]> IE6以下版本可识别 <![endif]-->
<!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]-->
<!--[if IE 7]> 仅IE7可识别 <![endif]-->
<!--[if lt IE 7]> IE7以下版本可识别 <![endif]-->
<!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->
<!--[if IE 8]> 仅IE8可识别 <![endif]-->
<!--[if IE 9]> 仅IE9可识别 <![endif]-->

以上代码大家应该是比较熟悉的,只做js和移动端的高大上,应该没有见过。

看着很多,记忆这个可以根据下面的规律记:
a、基本结构:

<!--[if ]> 代码 <![endif]-->

b、和IE关系

  • 等于为空
  • 大于为gt
  • 小于为lt
  • 大小于加等于gte,lte

c、然后加版本号
d、最后记得中间用空格
记住一个特别的其他浏览器使用的。

<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->

这个可以解释成,两对注释加中间代码。

对于这些个条件注释的使用,经常看到有:

条件注释html标签

<!DOCTYPE html>
<!--[if IE 6 ]> <html class="ie6 lte_ie6 lte_ie7 lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if lte IE 6 ]> <html class="lte_ie6 lte_ie7 lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if lte IE 7 ]> <html class="lte_ie7 lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if lte IE 8 ]> <html class="lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="zh-CN"><!--<![endif]-->

这个可以在特定的浏览器去对样式进行定义

.ie6 body{}

上面这个只有在ie6的浏览器才会有这个样式。

根据注释引用不同的样式表

<!--[if IE 6 ]>
<link rel="stylesheet" type="text/css" media="all" href="./ie6.css" />
<![endif]-->

根据条件加载js

在IE6,引用对png24的图像支持的js

<!--[if IE 6]>
<script src="DD_belatedPNG.js" mce_src="DD_belatedPNG.js"></script>
<script type="text/javascript">
DD_belatedPNG.fix(‘.png‘);// .png改成使用了透明PNG图片的选择器
</script>
<![endif]-->

对于DD_belatedPNG.js,大家百度一下,很容易找到相关的使用方法和库。

BUG问题

IE6下的小尾巴

在ie6下,对于行内元素,中间添加注释,可能会产生,一个尾巴。

<div style="width:80px; background:red;"><!--我是一个注释--><a href="#">1</a><a href="#">12</a><a href="#">31</a><!--我是一个注释--><a href="#">41</a><a href="#">51</a><a href="#">61</a><!--我是一个注释--><a href="#">71asdfasfd</a><!--我是一个注释--></div>
<style>
a{
float:left;
display:inline-block;
padding:0 3px;
}
</style>

如图


只要删除各行注释和换行,问题解决。

注释出现在DOCTYPE之前

虽然说DOCTYPE html之前不应该出现任何代码,但出现注释,各主流浏览器并不会出现问题。但在ie7及以下浏览器会无法识别渲染类型,导致使用怪异模式渲染,出现页面样式错乱。

<!--我是第一行的注释-->
<!doctype html>
<html>
<head>
<meta charset="gb2312">
<title>无标题文档</title>
<style>
.demo{
	width:100px;
	margin:0 auto;
	height:100px;
	background:red;
}
</style>
</head>

<body>
<div class="demo"></div>
</body>
</html>

ie7及以下显示为

前端其它注释

css中的注释

/* 我是css中的注释 */

css中的注释,只有这一种。

注意:使用中文注释注意在注释符号的前后各加一个空格,防止编码错误乱码导致样式无法读取。

js中的注释

单行注释

//我是单行注释

多行注释

/* 我是多行注释
我是多行注释
*/

建议都使用多行注释,以防止出现,换行符删除后出现的代码功能错误。

var s=10;//定义了s为10
var b=20;
console.log(b);

少了换行符后

var s=10;//定义了s为10var b=20;
console.log(b);

这时出现错误。
如果使用的多行则

var s=10;/*定义了s为10*/var b=20;
console.log(b);

代码不会出错。

总结

通过这一通查找资料,一直也没觉得一个注释标签可以整理这么多东西。里面有些比如建议或注意的问题,都是我在实际工作中遇到过的。其他没有接触的也无从写起了,还有什么漏掉的,可以在评论中给我一些建议。当然希望你对这个文章喜欢,并关注我。

时间: 2024-08-25 08:32:34

聊一聊HTML <!--…-->标签的相关文章

聊一聊HTML &lt;!DOCTYPE&gt; 标签

一般一个基本html页面的结构,如下代码所示: <html> <head> <title>我是基本的页面结构</title> </head> <body> //...一些其他代码 </body> </html> 基本的页面有了,那这个页面里的标签,浏览器要怎么来解析呢.以上的html结构浏览器只能根据自己的理解来生成DOM tree.然后按照自己的方式,根据里面的标签来生成对应的对象及对象层级关系.如果想把页面

html文档中的DOCTYPE标签

在写html页面的时候我们一般都会在首行添加〈!DOCTYPE〉的标签,有些编辑器会自动帮我们添加,今天讲讲这个〈!DOCTYPE〉标签的作用. HTML与XHTML 在W3C组织还么颁发html标准之前,开发网页的时候大家都没有加这个标签,那个时候.html页面的开发也比较混乱,直到1999年的时候,HTML 4.01成为了推荐标准,那时候起大多数人都使用这个版本.又大概在2000年的时候,W3C组织又颁发了基于HTML4.01的XML版本,并命名为XHTML1.0. 两者其实主要的差别是XH

HTML &lt;!DOCTYPE&gt; 标签 布局引用的几种方法 行级元素与块级元素

HTML <!DOCTYPE> 标签 <!DOCTYPE html> <html> <head> <title>文档的标题</title> </head> <body> 文档的内容...... </body> </html> <!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前. <!DOCTYPE> 声明不是 HTM

一、html &lt;!doctype&gt;标签

一.html <!doctype>标签 定义和用法 <!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前. <!DOCTYPE> 声明不是 HTML 标签:它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令. 在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML.DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容. HTML5 不

html的&lt;!DOCTYPE&gt;标签初窥

<!DOCTYPE>标签必须放在整个html文档的第一行,之后一行就是从<html>标签开始,所有浏览器都支持<!DOCTYPE>标签. <!DOCTYPE>标签是用来告诉浏览器用哪个html版本解析当前的html页面. 其中很多DOCTYPE中都带有DTD声明,DTD就是html文档的规范说明,主要有:strict(严格).transitional(过度).frameset(框架),严格类型的DTD包含了大部分的html元素和属性,但一些过时的元素已经不再

HTML &lt;!DOCTYPE&gt; 标签

HTML中<!DOCTYPE>标签的作用是什么呢?<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前.此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范. 定义与用法: <!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前. <!DOCTYPE> 声明不是 HTML 标签:它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令. 在 HTML

&lt;!DOCTYPE&gt; 标签是什么

DOCTYPE 标签,是html文档的类型声明(document type declaration,所谓声明,也就是宣称我他妈是谁),用来告诉浏览器,使用什么样的文档类型定义(Document Type Definition, DTD,是对文档概括性描述,什么个结构啊,有哪些有效的标签,支持些什么属性,什么事件啊)来解析文档. html文档是你写的,而负责渲染的是浏览器.如果你跟所有浏览器能达成共识,有些话不说,也能她懂你,你懂她,那不声明也没事,就像你回家不用跟你爸声明,你是陈二蛋. 但不同浏

&lt;!DOCTYPE&gt;标签的定义与用法

<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前,此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范. 该标签可声明三种 DTD 类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档. 以下面这个 <!DOCTYPE> 标签为例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/

HTML &lt;!DOCTYPE&gt;标签

一般一个基本html页面的结构,如下代码所示: <html> <head> <title>我是基本的页面结构</title> </head> <body> //...一些其他代码 </body> </html> 基本的页面有了,那这个页面里的标签,浏览器要怎么来解析呢.以上的html结构浏览器只能根据自己的理解来生成DOM tree.然后按照自己的方式,根据里面的标签来生成对应的对象及对象层级关系.如果想把页面

&lt;!DOCTYPE&gt;标签

定义 DOCTYPE标签,是一种标准通用标记语言的文档类型声明,目的是告诉标准通用标记语言解析器,使用哪种文档类型定义(DTD)解析文档. DOCTYPE,document type(文档类型)的简写,它指示浏览器对页面使用哪个HTML版本编译. 如果不写DOCTYPE标签,浏览器将无法获知HTML或XHTML文档的类型,就会进入怪异模式. 浏览器两种表现模式: Standards Mode(Strict Mode)     标准模式(严格模式)浏览器使用自己的怪异模式解析绚烂页面 Quirks