聊一聊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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...