這篇文章主要介紹HTML5中<template>標(biāo)簽有什么用,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)成立于2013年,我們提供高端網(wǎng)站建設(shè)公司、成都網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)站定制、網(wǎng)絡(luò)營銷推廣、成都小程序開發(fā)、微信公眾號開發(fā)、成都網(wǎng)站營銷服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為攪拌罐車企業(yè)提供源源不斷的流量和訂單咨詢。
一、HTML5 template元素初面
<template>元素,基本上可以確定是2013年才出現(xiàn)的。干嘛用的呢,顧名思意,就是用來聲明是“模板元素”。
目前,我們在HTML中嵌入模板HTML,往往是類似這樣的寫法:
<script type="text/template"> // ... </script>
實際上,并不存在type="text/template"這樣的標(biāo)準(zhǔn)寫法,<template>元素的出現(xiàn)旨在讓HTML模板HTML變得更加標(biāo)準(zhǔn)與規(guī)范。
以前,我們可能還使用過<textarea>或者<xmp>(廢止但依然可用)嵌套非轉(zhuǎn)義的HTML標(biāo)簽代碼,實現(xiàn)一些特定的前端功能,但,同樣的,跟上面的流行用法一樣,都是不規(guī)范的。從未來趨勢來講,顯然<template>標(biāo)簽才是王道。但是,兼容性是個不可忽略的問題,因此,就算扯得很多很少,實際價值有有限,因此,這里僅僅簡單介紹下。
二、HTML5 template元素復(fù)面
看下下面四種嵌套圖片HTML,同時圖片內(nèi)容不顯示,不會有請求的寫法:
<script type="text/template"> <img src="mm1.jpg"> </script> <textarea style="display: none;"> <img src="mm1.jpg"> </textarea> <xmp style="display: none;"> <img src="mm1.jpg"> </xmp> <template> <img src="mm1.jpg"> </template>
1. 標(biāo)簽內(nèi)容隱藏性
<script>本身的特定,讓內(nèi)部的HTML標(biāo)簽是按照字符串處理的,因此,天生內(nèi)容不顯示。但是,在DreamWeaver中,這種寫法有個很大的問題,就是在script中書寫模板HTML時候,標(biāo)簽自動閉合的永遠(yuǎn)是</script>這個很討厭的。
<textarea>為文本域,里面嵌套的HTML片段會被當(dāng)做文本域的值。但,文本域本身是可見的,因此需要額外的設(shè)置display: none;
<xmp>是個很老很特殊的屬性,語義為example,示例。據(jù)說后來被<pre>標(biāo)簽取代而廢止,實際上,目前,所有的瀏覽器都是支持的。但是,其跟<pre>標(biāo)簽不能劃等號。<pre>里面有個<img>標(biāo)簽,顯示的則是一張圖片,而<xmp>呈現(xiàn)的就是一段HTML代碼。不過,與<textarea>一樣,內(nèi)容不顯示的話,還需要額外的設(shè)置display: none;
上面這個<template>標(biāo)簽上沒有設(shè)置display: none;,注意到了沒有。為何?這只是發(fā)揮了<template>標(biāo)簽元素的原本特性,天生display:none,同時模板元素內(nèi)部內(nèi)容是死活不會呈現(xiàn)的。因此,無需設(shè)置隱藏。這就是HTML5 <template>標(biāo)簽元素特征之一:標(biāo)簽內(nèi)容隱藏性.
2. 標(biāo)簽位置任意性
除了上面<template>子元素天然隱藏外,<template>標(biāo)簽還有一個特性,就是位置任意性,這非常類似<script>或者<style>標(biāo)簽,可以在<head>中,也可以在<body>或者<frameset>中。
3. childNodes無效性
雖然,肉眼看上去是<template>標(biāo)簽里面還有很多子標(biāo)簽,這種慣性思維在這里是不受用的。假設(shè)變量template是我們獲得的一個<template>標(biāo)簽DOM(里面一大堆HTML代碼),你會發(fā)現(xiàn):template.childNodes是個空大屁。我們可以使用template.innerHTML獲取完整的HTML片段。如果你非得獲取“偽子元素”。也是有辦法的,OK,睜大眼睛,要使用content屬性。
template.content會返回一個文檔片段,你可以理解為另外一個document,然后,使用document下的一些查詢API就可以獲得<template>標(biāo)簽里面的“偽子元素”了。例如,獲得第一張圖片元素則是:
CSS Code復(fù)制內(nèi)容到剪貼板
var image_first = template.content.querySelector("img");
您可以狠狠地點擊這里:HTML5 template模板元素體驗demo
模板元素與CSS
如果瀏覽器有眼不識泰山,認(rèn)為<template>就是個普通的自定義元素,則顯示的就會使下面這個樣子,內(nèi)部的標(biāo)簽按照一般的標(biāo)簽渲染了。
如果瀏覽器與時俱進(jìn),則顯示會是下面這樣,自身CSS渲染,內(nèi)部標(biāo)簽直接異空間不渲染,例如Chrome:
也就是說,雖然從CSS的角度看,<template>就是個跟CSS打得火熱的普通元素,但是,從HTML角度看,其猶如帶土的寫輪眼,可以讓內(nèi)部標(biāo)簽轉(zhuǎn)移到異空間,血跡界限般稀有。
默認(rèn)情況下,<template>是隱藏的,實際是默認(rèn)其display屬性為none. 使用下面的代碼一測便知:
window.getComputedStyle(template).display; // 結(jié)果是"none"
因此,demo中才設(shè)置了如下的CSS聲明:
CSS Code復(fù)制內(nèi)容到剪貼板
template { display: block; ... }
如果你是在HTML字符串上處理,類似于現(xiàn)在流行的MVC框架或模板技術(shù),則template.innerHTML足矣。然,<template>比<script>強(qiáng)大之處在于,<script>內(nèi)部內(nèi)容只能當(dāng)做字符串來獲取,而<template>雖然存在于異空間,但是,依然可以節(jié)點獲?。ㄉ厦嬗姓故荆?,以及完整克隆,語法類似下面:
CSS Code復(fù)制內(nèi)容到剪貼板
var clone = document.importNode(template.content, true);
然后,你就可以用append節(jié)點(appendChild)的方式,加載模板內(nèi)容了,而不是(沒得選擇)append字符串加載模板內(nèi)容。標(biāo)題是“簡介”,因此,不展開,也不放具體的實例了(若有興趣,可參考文末的參考文章),大家知道有這么回事就好。
至此,<template>元素的行為、表現(xiàn)以及一些方法基本上有了大致的認(rèn)識,如果這是場面試的話,則我對<template>的評價還是挺高的,特殊場景使用的特殊利器,一些類似“異空間”的設(shè)計也是讓人大開眼界,這個元素要比<hgroup>之類的HTML5元素更受歡迎更受關(guān)注也更有潛力。
臨近最后,放上兼容性表,IE瀏覽器拖了好大的后腿,不過我表示很淡定,因為對IE早已麻木!
兼容性
以上是“HTML5中<template>標(biāo)簽有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章名稱:HTML5中<template>標(biāo)簽有什么用
文章出自:http://jinyejixie.com/article14/gdphge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、品牌網(wǎng)站設(shè)計、微信公眾號、微信小程序、用戶體驗、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)