聊一聊HTML <!--…-->標簽

来源:http://www.cnblogs.com/wengxuesong/archive/2016/05/31/5544863.html
-Advertisement-
Play Games

定義 註釋標簽用於在html源代碼中插入註釋。註釋不會在瀏覽器上顯示。 用法 根據定義的基本用法,代碼如下 瀏覽器的支持情況 所有瀏覽器都支持上面這些只是最簡單的定義和使用方法。對於註釋的使用,有哪些更高級的使用。 高級應用 1、分配工作 2、說明功能模塊及使用方法 3、對於頁面製作的備註 以上3種 ...


定義

註釋標簽用於在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>

如圖

image
只要刪除各行註釋和換行,問題解決。

註釋出現在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及以下顯示為

image

前端其它註釋

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);

代碼不會出錯。

以上情況也會出現在多個js合併時,單行註釋也會造成相應的錯誤。

總結

通過這一通查找資料,一直也沒覺得一個註釋標簽可以整理這麼多東西。裡面有些比如建議或註意的問題,都是我在實際工作中遇到過的。其他沒有接觸的也無從寫起了,還有什麼漏掉的,可以在評論中給我一些建議。當然希望你對這個文章喜歡,並關註我。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數據類型Number JavaScript不區分整數和浮點數,統一用Number表示,以下都是合法的Number類型: 實際上,JavaScript允許對任意數據類型做比較: 要特別註意相等運算符==。JavaScript在設計時,有兩種比較運算符: 第一種是==比較,它會自動轉換數據類型再比較,很 ...
  • 使用jQuery的方式來操作DOM更加的簡潔、方便,統一的調用方式方便學習並且可降低學習成本。 1、樣式屬性操作 1)設置樣式屬性操作 ①設置單個樣式: // 第一個參數表示:樣式屬性名稱 // 第二個參數表示:樣式屬性值 $(selector).css(“color”, “red”); ②設置多個 ...
  • 剛開始出現的錯誤,內容會受到背景透明度改變的影響:如圖: 代碼: 解決方法一: 在div.wrap內再加一個div。作為蒙版,對其設置透明度的變化樣式,並且讓內容相對於wrap絕對定位,要記得給wrap設置相對定位!! 最後效果: 解決方法二: 用rgba()設置background的背景色和透明度 ...
  • 知道有 ReactiveX 這麼一回事, 源於一位巨硬鐵粉的安利演示:Reactive LINQ 加持的C#,簡潔且頗具表達力;隨後,便是萬眾矚目的 Angular 2,這貨的標配大禮包里就有RxJS,比比皆是的 api.invocation.map(...).subscribe(fn, fn, ... ...
  • 1.用frameset、frame和iframe還實現多視窗 2.在圖片上利用映射距離usemap來實現按鈕跳轉。 第8尾集 3.表單必須要有name和value,因為抓包的時候,可發現必須要提交它們 4.fieldset標簽——>legend、lable 5.只能用margin-top、margi ...
  • 查看效果:http://hovertree.com/texiao/css3/26/源碼下載:http://hovertree.com/h/bjaf/ndhxgfkn.htm效果圖如下:代碼如下: 轉自:http://hovertree.com/h/bjaf/taoshu.htm 更多特效:http: ...
  • 創建一個空目錄,在其中初始化git git init 創建一個新文件,此時預設在master分支上 touch file1.txt add到staging area git add file1.txt 提交變化 git commit m 'the first commit' 創建一個新的分支 git ...
  • 我們只需知道三點即可知道 exports 和 module.exports 的區別了: 所以: 我們通過 var name ='nswbmw'; exports.name = name; exports.sayName =function(){ console.log(name); } 給 expo ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...