欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解HTML5中的<template>標(biāo)簽

鑫空間 鑫生活   發(fā)布時(shí)間:2015-06-19 17:53:17   作者:張?chǎng)涡?  我要評(píng)論
這篇文章主要介紹了HTML5中的template標(biāo)簽,是HTML5入門中的重要知識(shí),需要的朋友可以參考下

一、HTML5 template元素初面

<template>元素,基本上可以確定是2013年才出現(xiàn)的。干嘛用的呢,顧名思意,就是用來聲明是“模板元素”。

目前,我們?cè)贖TML中嵌入模板HTML,往往是類似這樣的寫法:

XML/HTML Code復(fù)制內(nèi)容到剪貼板
  1. <script type="text/template">  
  2. // ...   
  3. </script>  

實(shí)際上,并不存在type="text/template"這樣的標(biāo)準(zhǔn)寫法,<template>元素的出現(xiàn)旨在讓HTML模板HTML變得更加標(biāo)準(zhǔn)與規(guī)范。

以前,我們可能還使用過<textarea>或者<xmp>(廢止但依然可用)嵌套非轉(zhuǎn)義的HTML標(biāo)簽代碼,實(shí)現(xiàn)一些特定的前端功能,但,同樣的,跟上面的流行用法一樣,都是不規(guī)范的。從未來趨勢(shì)來講,顯然<template>標(biāo)簽才是王道。但是,兼容性是個(gè)不可忽略的問題,因此,就算扯得很多很少,實(shí)際價(jià)值有有限,因此,這里僅僅簡(jiǎn)單介紹下。
二、HTML5 template元素復(fù)面

看下下面四種嵌套圖片HTML,同時(shí)圖片內(nèi)容不顯示,不會(huì)有請(qǐng)求的寫法:

XML/HTML Code復(fù)制內(nèi)容到剪貼板
  1. <script type="text/template">  
  2. <img src="mm1.jpg">  
  3. </script>  
  4.   
  5. <textarea style="display: none;">  
  6. <img src="mm1.jpg">  
  7. </textarea>  
  8.   
  9. <xmp style="display: none;">  
  10. <img src="mm1.jpg">  
  11. </xmp>  
  12.   
  13. <template>  
  14. <img src="mm1.jpg">  
  15. </template>  

1. 標(biāo)簽內(nèi)容隱藏性

    <script>本身的特定,讓內(nèi)部的HTML標(biāo)簽是按照字符串處理的,因此,天生內(nèi)容不顯示。但是,在DreamWeaver中,這種寫法有個(gè)很大的問題,就是在script中書寫模板HTML時(shí)候,標(biāo)簽自動(dòng)閉合的永遠(yuǎn)是</script>這個(gè)很討厭的。
    <textarea>為文本域,里面嵌套的HTML片段會(huì)被當(dāng)做文本域的值。但,文本域本身是可見的,因此需要額外的設(shè)置display: none;
    <xmp>是個(gè)很老很特殊的屬性,語義為example,示例。據(jù)說后來被<pre>標(biāo)簽取代而廢止,實(shí)際上,目前,所有的瀏覽器都是支持的。但是,其跟<pre>標(biāo)簽不能劃等號(hào)。<pre>里面有個(gè)<img>標(biāo)簽,顯示的則是一張圖片,而<xmp>呈現(xiàn)的就是一段HTML代碼。不過,與<textarea>一樣,內(nèi)容不顯示的話,還需要額外的設(shè)置display: none;
    上面這個(gè)<template>標(biāo)簽上沒有設(shè)置display: none;,注意到了沒有。為何?這只是發(fā)揮了<template>標(biāo)簽元素的原本特性,天生display:none,同時(shí)模板元素內(nèi)部?jī)?nèi)容是死活不會(huì)呈現(xiàn)的。因此,無需設(shè)置隱藏。這就是HTML5 <template>標(biāo)簽元素特征之一:標(biāo)簽內(nèi)容隱藏性.

2. 標(biāo)簽位置任意性
除了上面<template>子元素天然隱藏外,<template>標(biāo)簽還有一個(gè)特性,就是位置任意性,這非常類似<script>或者<style>標(biāo)簽,可以在<head>中,也可以在<body>或者<frameset>中。

3. childNodes無效性
雖然,肉眼看上去是<template>標(biāo)簽里面還有很多子標(biāo)簽,這種慣性思維在這里是不受用的。假設(shè)變量template是我們獲得的一個(gè)<template>標(biāo)簽DOM(里面一大堆HTML代碼),你會(huì)發(fā)現(xiàn):template.childNodes是個(gè)空大屁。我們可以使用template.innerHTML獲取完整的HTML片段。如果你非得獲取“偽子元素”。也是有辦法的,OK,睜大眼睛,要使用content屬性。

template.content會(huì)返回一個(gè)文檔片段,你可以理解為另外一個(gè)document,然后,使用document下的一些查詢API就可以獲得<template>標(biāo)簽里面的“偽子元素”了。例如,獲得第一張圖片元素則是:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. var image_first = template.content.querySelector("img");  

三、HTML5 template元素終面

您可以狠狠地點(diǎn)擊這里:HTML5 template模板元素體驗(yàn)demo

模板元素與CSS
如果瀏覽器有眼不識(shí)泰山,認(rèn)為<template>就是個(gè)普通的自定義元素,則顯示的就會(huì)使下面這個(gè)樣子,內(nèi)部的標(biāo)簽按照一般的標(biāo)簽渲染了。

如果瀏覽器與時(shí)俱進(jìn),則顯示會(huì)是下面這樣,自身CSS渲染,內(nèi)部標(biāo)簽直接異空間不渲染,例如Chrome:
2015619175843048.png (545×598)

也就是說,雖然從CSS的角度看,<template>就是個(gè)跟CSS打得火熱的普通元素,但是,從HTML角度看,其猶如帶土的寫輪眼,可以讓內(nèi)部標(biāo)簽轉(zhuǎn)移到異空間,血跡界限般稀有。

默認(rèn)情況下,<template>是隱藏的,實(shí)際是默認(rèn)其display屬性為none. 使用下面的代碼一測(cè)便知:

window.getComputedStyle(template).display;    // 結(jié)果是"none"

2015619175903356.png (321×99)

因此,demo中才設(shè)置了如下的CSS聲明:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. template { displayblock; ... }  

模板的克隆
如果你是在HTML字符串上處理,類似于現(xiàn)在流行的MVC框架或模板技術(shù),則template.innerHTML足矣。然,<template>比<script>強(qiáng)大之處在于,<script>內(nèi)部?jī)?nèi)容只能當(dāng)做字符串來獲取,而<template>雖然存在于異空間,但是,依然可以節(jié)點(diǎn)獲?。ㄉ厦嬗姓故荆?,以及完整克隆,語法類似下面:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. var clone = document.importNode(template.content, true);  

然后,你就可以用append節(jié)點(diǎn)(appendChild)的方式,加載模板內(nèi)容了,而不是(沒得選擇)append字符串加載模板內(nèi)容。標(biāo)題是“簡(jiǎn)介”,因此,不展開,也不放具體的實(shí)例了(若有興趣,可參考文末的參考文章),大家知道有這么回事就好。
四、HTML5 template面試小結(jié)

至此,<template>元素的行為、表現(xiàn)以及一些方法基本上有了大致的認(rèn)識(shí),如果這是場(chǎng)面試的話,則我對(duì)<template>的評(píng)價(jià)還是挺高的,特殊場(chǎng)景使用的特殊利器,一些類似“異空間”的設(shè)計(jì)也是讓人大開眼界,這個(gè)元素要比<hgroup>之類的HTML5元素更受歡迎更受關(guān)注也更有潛力。

臨近最后,放上兼容性表,IE瀏覽器拖了好大的后腿,不過我表示很淡定,因?yàn)閷?duì)IE早已麻木!

兼容性
2015619175925620.png (581×222)

相關(guān)文章

  • HTML與XHTML、以及HTML4與HTML5標(biāo)簽之間的區(qū)別簡(jiǎn)介

    這篇文章主要介紹了HTML與XHTML、以及HTML4與HTML5標(biāo)簽之間的區(qū)別,是網(wǎng)頁前端編程入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-07
  • 簡(jiǎn)單介紹HTML5中audio標(biāo)簽的使用

    這篇文章主要介紹了HTML5中audio標(biāo)簽的使用,在各瀏覽器中添加音頻播放控件,需要的朋友可以參考下
    2015-09-24
  • 詳解HTML5中ol標(biāo)簽的用法

    這篇文章主要介紹了詳解HTML5中ol標(biāo)簽的用法,是HTML5入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-08
  • HTML5 video標(biāo)簽(播放器)學(xué)習(xí)筆記(二):播放控制

    這篇文章主要介紹了HTML5 video標(biāo)簽(播放器)學(xué)習(xí)筆記(二):播放控制,本文講解了獲取影片總時(shí)長(zhǎng)、播放、暫停、獲取影片的播放時(shí)間和設(shè)置播放點(diǎn)、音量的獲取和設(shè)置等內(nèi)容,
    2015-04-24
  • HTML5 Video標(biāo)簽的屬性、方法和事件匯總介紹

    這篇文章主要介紹了HTML5 Video標(biāo)簽的屬性、方法和事件匯總介紹,本文講解了
    2015-04-24
  • HTML5中新標(biāo)簽和常用標(biāo)簽詳解

    做移動(dòng)端有一段時(shí)間,今天有同事問了我 article 和 section 標(biāo)簽的使用,模模糊糊的解釋了下,他似懂非懂,有點(diǎn)小尷尬。忽然間覺得自己有必要再翻翻書籍,重溫下 html5 的
    2014-03-07
  • HTML5語音識(shí)別標(biāo)簽寫法附圖

    HTML5中有個(gè)語音識(shí)別的標(biāo)簽,利用它可以實(shí)現(xiàn)語音輸入,個(gè)人感覺還是不錯(cuò)的,下面有個(gè)示例及截圖,喜歡的朋友可以參考下
    2013-11-18
  • html5 video標(biāo)簽屏蔽右鍵視頻另存為的js代碼

    html5 video標(biāo)簽本身有下載功能但是在video區(qū)域內(nèi),點(diǎn)擊右鍵可以將“視頻另存為”下面是屏蔽右鍵視頻另存為的js代碼,有此需求的朋友不要錯(cuò)過
    2013-11-12
  • HTML5標(biāo)簽使用方法詳解

    HTML 5 是一個(gè)新的網(wǎng)絡(luò)標(biāo)準(zhǔn),目標(biāo)在于取代現(xiàn)有的 HTML 4.01, XHTML 1.0 and DOM Level 2 HTML 標(biāo)準(zhǔn),本文給大家介紹HTML5標(biāo)簽使用方法詳解,對(duì)html5標(biāo)簽使用相關(guān)內(nèi)容感興趣
    2015-11-27

最新評(píng)論