自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTML 5學前熱身 實用技巧及應用詳解

開發(fā) 前端
本文作為您開始了解HTML 5前的熱身,包括了28個HTML 5的主要變化,可能只是觸及到HTML5的皮毛,全當拋磚引玉,希望能對您的學習有所幫助!

雖然HTML 5標準現(xiàn)在仍然是個草案,但其重要的部分已經(jīng)被許多現(xiàn)代的瀏覽器實現(xiàn)了。在《現(xiàn)在如何在你的站點上使用HTML 5》一文中我們介紹了如何使用HTML 5,本文將總結(jié)出HTML 5在功能上的主要變化及使用實例。

51CTO推薦專題:HTML 5 下一代Web開發(fā)標準詳解

一、新的Doctype

你還在使用麻煩的,不可能記得住的XHTML文檔類型嗎?

  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"  
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

 

如果是,為什么還在用呢?使用新的HTML 5文檔類型代替吧。

  1. <!DOCTYPEhtml> 

我就琢磨著,為了HTML5搞個這廝代碼,您可能會對這段代碼究竟靠不靠譜表示懷疑。不用擔心,如今這是可行的,只有老的瀏覽器需要一個特定的doctype(文檔類型)。瀏覽器如果不知道doctype,就會很簡單的以標準模式對包含的標簽進行渲染。所以,妹妹你大膽的向前沖,把小心謹慎都拋到九霄云外,去擁抱新的HTML5文檔類型吧。

二、圖形元素(TheFigureElement)

看看下面給圖片添加的標示:

  1. <imgsrcimgsrc="path/to/image"alt="Aboutimage"/><p>ImageofMars.</p> 

文字裹在P標簽里,與IMG標簽各行其道,很難讓人聯(lián)想到這就是標題。HTML 5通過采用元素對此進行了改正。當合元素組合使用時,我們就可以語義化地聯(lián)想到這就是圖片相對應的標題。

  1. <figure> 
  2. <imgsrcimgsrc="path/to/image"alt="Aboutimage"/> 
  3. <figcaption> 
  4. <p>Thisisanimageofsomethinginteresting.</p> 
  5. </figcaption></figure> 

三、重新定義

還在不久前,元素被用來創(chuàng)建靠近logo且相關的副標題。這是個很有用的表現(xiàn)元素,但是,現(xiàn)在,這種用法可能就不正確了。元素已經(jīng)被重新定義了,指小字,因而更具可用性。試想下你網(wǎng)站底部的版權狀態(tài),根據(jù)對此元素新的HTML5定義,可以正確地包裹這些信息。

四、腳本(scripts)和鏈接(links)無需type

您可能現(xiàn)在仍在給link和script標簽增加type屬性。

  1. <linkrellinkrel="stylesheet"href="path/to/stylesheet.css"type="text/css"/> 
  2. <scripttypescripttype="text/javascript"src="path/to/script.js"></script> 

這意味著,這些標簽都各自指向樣式表和腳本。因此,我們可以把type屬性一起干掉。

  1. <linkrellinkrel="stylesheet"href="path/to/stylesheet.css"/> 
  2. <scriptsrcscriptsrc="path/to/script.js"></script> 

#p#

五、引號還是不要引號

這確實是個問題。記住,HTML 5不是XHTML,要是你不愿意,你沒有必要非得用引號標記包裹你的屬性,沒有必要非得閉合元素。換句話說,只要你自己覺得舒服,就沒有什么對錯之分。對于我自己來說就是如此。

  1. <pclasspclass=myClassid=someId>Startthereactor. 

對此取舍你還得自己拿主意。如果你更傾向于結(jié)構化的文檔,就算天塌下來,也要把引號牢牢拽在懷里。

六、內(nèi)容可編輯

內(nèi)容可編輯 

內(nèi)容可編輯

最新的瀏覽器有個很贊的新屬性可以應用到元素上,叫做contenteditable。顧名思意,就是允許用戶編輯元素內(nèi)容包含的任意文本,包括子元素。類似的用途還有很多,像是簡單的待辦事項清單應用程序,可大大利用其本地存儲的優(yōu)勢。

  1. <ulcontenteditableulcontenteditable="true"> 
  2. <li>悼念遇難香港同胞</li> 
  3. <li>深圳特區(qū)30周年</li> 
  4. <li>伊春空難</li></ul> 

或者,根據(jù)前面所學到的一些技巧,我們可以把它寫成:

  1. <ulcontenteditableulcontenteditable=true> 

七、Email輸入(Inputs)

如果我們給表單輸入框應用名為”email”的type屬性,我們可以命令瀏覽器只允許符合有效的電子郵件地址結(jié)構的字符串。沒錯,內(nèi)置表單驗證即將到來,由于一些顯而易見的原因,我們還不能100%依賴內(nèi)置驗證,較舊的瀏覽器不認識這個”email”型,它們會簡單地退回到普通文本框。

  1. <formactionformaction=""method="get"> 
  2.      <labelforlabelfor="email">郵箱:</label> 
  3.      <inputidinputid="email"name="email"type="email"/> 
  4.      <buttontypebuttontype="submit">確定</button> 
  5. </form> 

還應當指出,當談到哪些元素和屬性支持和不支持時,當前所有的瀏覽器都有點靠不住的。例如,Opera似乎支持電子郵件驗證,但僅在name屬性被指定的時候。而且,它不支持占位符屬性,這個我們將會在后面學到。底線是不依賴于這種形式的驗證…但你仍然可以使用它!

八、占位符(Placeholders)

Placeholders的意思,就是文本框/文本域空間默認會有個文字提示,獲得焦點時,此提示文字消失;失去焦點時如果內(nèi)容為空,提示文字又出現(xiàn)。如下圖所示:

占位符(Placeholders)

這些表單控件里面顯示的些提示性的文字就是占位符。按照以往的做法,我們需要使用一點JavaScript代碼實現(xiàn)占位符效果,例如我之前的“文本框/域文字提示自動顯示隱藏jQuery小插件”一文所展示的。當然,你需要設定一個初始的默認的value值,然后根據(jù)輸入內(nèi)容進行判斷,從而決定文本框值的改變與否。如果您使用占位符(placeholders)屬性,一切就輕松了。

  1. <labelforlabelfor="email">郵箱:</label> 
  2. <inputidinputid="email"type="email"placeholder="zhangxinxu@zhangxinxu.com"size="26"/> 

#p#

九、本地存儲(LocalStorage)

多虧了本地存儲(非正式的HTML5,本著方便歸納的目的),我們可以讓高級瀏覽器記住我們的編輯后的內(nèi)容,即使瀏覽器被關掉或是頁面刷新。

IE8瀏覽器已經(jīng)支持了本地存儲,如下截圖所示:

截圖

盡管顯然不支持所有的瀏覽器,我們可以在InternetExplorer8時,Safari4和Firefox3.5下期待此工作方式。請注意,為了彌補舊的瀏覽器將無法識別本地存儲,你應該先測試,以確定window.localStorage是否存在。

十、語義的Header和Footer

那些過往的日子:

  1. <dividdivid="header"> 
  2. ...  
  3. </div> 
  4. <dividdivid="footer"> 
  5. ...  
  6. </div> 

這就是div,很自然的,沒有語義化的結(jié)構——即使在應用了id后。現(xiàn)在,通過HTML 5,我們可以使用<header>和<footer>元素。以上的代碼可以替換成:

  1. <header>...</header> 
  2. <footer>...</footer> 

盡量不要混淆”header”和”footer”這些元素。他們只是指他們的容器。因此,將博客底部的,例如,元信息放在footer元素內(nèi)部是說得通的。這同樣也適用于header。

十一、更多HTML5表單特征(MoreHTML5FormFeatures)

您可以通過下面視頻學習更多有用的HTML 5表單特征:

十二、IE和HTML 5(InternetExplorer and HTML 5)

不幸的是,討厭的IE瀏覽器需要動點小手術才能理解新的HTML5元素。為了確保所有新的HTML5元素能以block水平的元素正確地渲染,有必要對其做如下定義:

  1. header,footer,article,section,nav,menu,hgroup{  
  2.        display:block;  

不幸的是,IE仍舊忽略這些樣式,因為它不知道這些標簽從哪里來的,好比是header元素。幸運的是,有一個簡單的解決辦法:

  1. document.createElement("article");  
  2. document.createElement("footer");  
  3. document.createElement("header");  
  4. document.createElement("hgroup");  
  5. document.createElement("nav");  
  6. document.createElement("menu"); 

奇怪的是,這段代碼似乎觸發(fā)IE瀏覽器。為了更簡單將此應用到每個新的應用過程中,雷米夏普(Remy Sharp)創(chuàng)建了一個腳本,通常稱為HTML 5 shiv。該腳本同樣修復了些顯示問題。

十三、文檔某一部分的信息(hgroup)

想象一下,在我的網(wǎng)站的標題,我有我的站點的名稱,隨后立即由一個副標題。雖然我們可以使用一個<h1>和<h2>標簽,為其分別創(chuàng)造標記,但是依舊沒有(因為HTML 4)一個簡單的方法來語義上說明了兩者之間的關系。此外,一個h2標記的使用提出了更多的問題,在層次結(jié)構上,當涉及到其他網(wǎng)頁上顯示的標題時。通過使用不影響文檔的大綱流hgroup元素,我們可以將這些標題組合在一起。

  1. <header> 
  2. <hgroup> 
  3. <h1>RecallFanPage</h1> 
  4. <h2>Onlyforpeoplewhowantthememoryofalifetime.</h2> 
  5. </hgroup> 
  6. </header> 

#p#

十四、必要的屬性(Required Attribute)

表單允許新的必要屬性,用來指定是否需要特殊的input。這取決于你的代碼偏好,你可以以下面兩種方式之一申明此屬性。

  1. <inputtypeinputtype="text"name="someInput"required> 

或者,使用更結(jié)構化的方法:

  1. <inputtypeinputtype="text"name="someInput"required="required"> 

兩種方法都行。有了這個代碼,并且瀏覽器支持此屬性,如果“someInput”文本框是空白,則表單不會被提交。下面是一個簡單的例子,我們還將添加占位符屬性,因為沒有理由不這樣做。

  1. <formactionformaction=""method="get"> 
  2. <labelforlabelfor="name">姓名:</label> 
  3. <inputidinputid="name"name="name"type="text"placeholder="zhangxinxu"required="required"/> 
  4. <buttontypebuttontype="submit">提交</button></form> 

如果input里面內(nèi)容是空白,則表單提交的時候,文本框會高亮顯示。

十五、Autofocus屬性

同樣,HTML 5的解決方案消除了對JavaScript的需要。如果一個特定的輸入應該是“選擇”,或有重點的,默認情況下,我們現(xiàn)在可以利用自動獲取焦點屬性。

  1. <inputtypeinputtype="text"name="someInput"placeholder="zhangxinxu"requiredautofocus> 

十六、Audio支持

我們無需再依賴第三方插件區(qū)渲染音頻。HTML 5提供了元素,我們將不必擔心這些插件。就目前,只有最近期的的瀏覽器提供HTML 5音頻支持。在這個時候,它仍然是一個很好的做法提供一些向后兼容的形式。

  1. <audioautoplayaudioautoplay="autoplay"controls="controls"> 
  2. <sourcesrcsourcesrc="file.ogg"/> 
  3. <sourcesrcsourcesrc="file.mp3"/> 
  4. <ahrefahref="file.mp3">Downloadthisfile.</a> 
  5. </audio> 

Mozilla和WebKit的還沒有完全相處,當涉及到音頻格式,F(xiàn)irefox會希望看到一個.ogg文件,而WebKit的瀏覽器支持.mp3擴展。這意味著,至少在現(xiàn)在,你應該創(chuàng)建兩個版本的音頻。

當Safari加載頁面時,它不會承認.ogg格式,會跳過它并移動到的MP3版本,因此。請注意IE,每往常一樣,不支持這些格式,Opera10和以及以下版本只能使用.wav文件。

十七、Video支持

與元素很類似,在新的瀏覽器中也存在Video!事實上,就在最近,YouTube宣告了新的HTML 5視頻嵌入,當然,是為支持此功能瀏覽器。因為HTML5的規(guī)范沒有指定特定的視頻編解碼器,它留給了瀏覽器來決定。雖然Safari和InternetExplorer9可以預期支持H.264格式的視頻(其中Flash播放器可以播放),F(xiàn)irefox和Opera是堅持開源Theora和Vorbis格式。因此,當顯示HTML 5的視頻,您必須提供這兩種格式。

  1. <videocontrolspreload> 
  2. <sourcesrcsourcesrc="cohagenPhoneCall.ogv"type="video/ogg;codecs='vorbis,theora'"/> 
  3. <sourcesrcsourcesrc="cohagenPhoneCall.mp4"type="video/mp4;'codecs='avc1.42E01E,mp4a.40.2'"/> 
  4. <p>Yourbrowserisold.<ahrefahref="cohagenPhoneCall.mp4">Downloadthisvideoinstead.</a></p> 
  5. </video> 

還有一個值得注意的一些事情:

1.我們技術上不需要來設置type屬性,但是,如果我們不這樣做,瀏覽器不得不自己去尋找類型。

2.不是所有的瀏覽器理解HTML5視頻。在資源元素的下面,我們可以提供一個下載鏈接,或嵌入視頻的Flash版本代替。

3.controls和preload屬性就會在下面提及。

4.有方法可以讓所有的瀏覽器支持video標簽。

#p#

十八、視頻預載(Preload Videos)

預載屬性不完全是你想的那個樣子,雖然,你應該先決定是否要在瀏覽器預裝的視頻。是否有必要?或許吧。如果訪問者訪問一個專門展示了一個視頻的頁面,你一定要預載的視頻,節(jié)約參觀者等待的一部分時間。影片可以通過設置preload=”preload”或是簡單地添加preload進行預載。我更喜歡后者的解決方案,它少了一點多余的東西。

  1. <videopreload> 

十九、顯示控制條

如果你使用過上面的每一個提到的技術點,你可能已經(jīng)注意到,使用上面的代碼,視頻僅僅顯示的是張圖片,沒有控制條。為了渲染出播放控制條,我們必須在video元素內(nèi)指定controls屬性。

  1. <video preload controls> 

請注意,不同瀏覽器渲染出來的進度條的模樣都是不一樣的。

二十、正則表達式

你發(fā)現(xiàn)自己多久匆匆編寫一些正則表達式驗證一個特定的文本。多虧了新的pattern屬性,我們可以在標簽處直接插入一個正則表達式。

  1. <formactionformaction=""method="get"> 
  2. <labelforlabelfor="username">姓名:</label> 
  3. <inputidinputid="username"name="username"type="text"placeholder="4-10個英文字母"pattern="[A-Za-z]{4,10}"required="required"autofocus/> 
  4. <buttontypebuttontype="submit">提交</button> 
  5. </form> 

如果你熟悉正則表達式,那么應該清楚[A-Za-z]{4,10}表示接受4-10位不區(qū)分大小寫的英文字母。如果瀏覽器支持pattern屬性,則提交表單時,如果文本框中的內(nèi)容不符合其正則表達式,文本框會高亮顯示。如下圖所示。

注意到,我們已經(jīng)開始組合使用這些很棒的屬性。

二十一、屬性支持檢測

如果我們沒有方法檢測瀏覽器是否支持這些屬性,這些就不能稱之為好的屬性。第一個是利用優(yōu)秀的Modernizr庫,或者,我們可以創(chuàng)建和分析這些元素,以確定瀏覽器的能力。例如,在我們前面的例子,如果我們要確定瀏覽器是否能使用pattern的屬性,我們可以添加一小段JavaScript到我們的頁面上:

  1. alert('pattern'indocument.createElement('input'));//boolean 


事實上,這是一種確定瀏覽器兼容的常用方法。jQuery庫了利用這種伎倆。在上面,我們創(chuàng)建了一個新的input元素,并確定了里面的pattern屬性瀏覽器是否認得。如果是,瀏覽器則支持此功能。否則,當然就不支持了。

  1. <script>if(!'pattern'indocument.createElement('input')){//doclient/serversidevalidation}  
  2. </script> 

謹記此方法依賴于JavaScript。

二十二、mark元素(MarkElement)

試想元素作為高亮。此標簽包裹的字符串應該與用戶當前的行動相關聯(lián)。例如,我在一些博客上搜索“北川景子”,我就可以使用一些JavaScript將當前的每個結(jié)果字符串用mark標簽包裹。

  1. <h3>搜索結(jié)果</h3> 
  2. <p>我很喜歡《零秒出手》里面那個拉小提琴的女孩,原來她叫做<mark>北川景子</mark>。  
  3. </p> 

二十三、什么時候使用div

我們有些人開始質(zhì)問到底何時該使用div?,F(xiàn)在我們可以使用header,article,section,和footer,還有機會使用div嗎?當然可以。

例如,如果你發(fā)現(xiàn)你需要包裹一段代碼塊在對內(nèi)容定位處理的包裝單元內(nèi)。不過如果你是包裹一個博客文章,或者,可能是,底部的鏈接列表,則需考慮分別使用和元素,因為其更具語義。

二十四、什么可以開始立即使用

一直談論到現(xiàn)在的HTML5要到2022年才能全部完成,許多人完全忽視它,這是個巨大的錯誤。事實上,有少量的HTML5的功能,我們可以在我們所有的項目中使用!更簡單,更干凈的代碼總是一件好事。在今天的視頻快速展示的技巧中,我將告訴你一些可用的選項。

二十五、哪些不是HTML 5?

那些僅憑自己的假設形象將JavaScript變少的過渡被全部歸為HTML 5的人是可以理解的,甚至蘋果無意中推動這一想法。對于非開發(fā)人員,誰管這個呢,它是一個簡單的方法適用于現(xiàn)代網(wǎng)頁標準。不過,對于我們來說,盡管它可能只是語義,重要的是要準確理解什么不是HTML 5。

不管你需求有多大的區(qū)別,所有這些技術可以歸為現(xiàn)代網(wǎng)絡堆棧。事實上,不少這些分支規(guī)范的管理著還是同一人。

#p#

二十六、data屬性(TheDataAttribute)

我們現(xiàn)在可以很正式地讓所有的HTML元素支持自定義屬性。然而,以前,我們可能會這樣:

  1. <h1idh1id=someIdcustomAttribute=value>小樣,膽兒挺肥的呢</h1> 

校驗器會小題大做!但是現(xiàn)在,只要我們以”data”為前綴定義我們的自定義屬性,盜版屬性立馬變成正牌的了。如果你發(fā)現(xiàn)你曾經(jīng)把一個重要的數(shù)據(jù)附加在諸如class的屬性上,可能為了JavaScript之用,那么,本屬性將大有幫助。

二十七、Output元素

正如你可能預料到的,output元素被用來顯示部分計算,例如,如果你想顯示一個鼠標的位置,或者是一系列數(shù)字的總和坐標,這個數(shù)據(jù)應被插入到output元素中。舉個簡單的例子,當提交按鈕被按下,我們用JavaScript將兩個數(shù)字相加值插入到空的output中。

  1. <formactionformaction=""method="get"> 
  2. <p>10+5=<outputnameoutputname="sum"></output></p> 
  3. <buttontypebuttontype="submit">計算</button></form>(function()  
  4. {varf=document.forms[0];if(typeoff['sum']!=='undefined')  
  5. {f.addEventListener('submit',function(e){f['sum'].value=15;e.preventDefault();  
  6. },false);  
  7. }  
  8. else  
  9. {alert('你的瀏覽器尚未準備好!');  
  10. }  
  11. }  
  12. )  
  13. (); 

自己測試了下,貌似現(xiàn)在只有在Opera瀏覽器下有上佳的效果:

如果您現(xiàn)在使用的是較新版本的Opera瀏覽器,您可以狠狠地點擊這里:HTML 5結(jié)果輸出框demo。此元素也可以接受一個屬性,它反映了輸出相關元素的名稱,類似label工作原理。

二十八、使用區(qū)域input創(chuàng)建滑塊

HTML 5引進了range類型的input。

  1. <inputtypeinputtype="range"> 

最值得注意的是,它可以接收min,max,step,和value屬性,等等。雖然現(xiàn)在似乎只有Opera瀏覽器充分支持這種輸入類型,但是當我們可以實際使用時,這將是美妙無比的!

第一步:標簽

首先,創(chuàng)建標簽

  1. <formmethodformmethod="post"> 
  2. <h4>音量控制</h4> 
  3. <inputtypeinputtype="range"name="range"min="0"max="10"step="1"value=""/> 
  4. <outputnameoutputname="result"> 
  5. </output> 
  6. </form> 

第二步:CSS

下面,我們要使用一點點的樣式。我們將使用:before和:after去告知用戶我們制定的最大值和最小值。

  1. input{font-size:14px;font-weight:bold;}input[type=range]:before  
  2. {content:attr(min);padding-right:5px;}input[type=range]:after  
  3. {content:attr(max);padding-left:5px;}output  
  4. {display:block;font-size:5.5em;font-weight:bold;} 

第三步:JavaScript

◆檢測我們的瀏覽器是否認識rangeinput,如果不,顯示提示。

◆當用戶移動滑塊的時候,動態(tài)改變output的值。

◆監(jiān)聽,當用戶離開滑塊,插入值,同時本地存儲。

◆然后,下次用戶刷新頁面的時候,選擇的區(qū)域和值會自動地設置成他們最后一次選擇。

  1. (function(){  
  2.     var  f=document.forms[0],  
  3.     range=f['range'],  
  4.     result=f['result'],  
  5.     cachedRangeValue=localStorage.rangeValue?localStorage.rangeValue:5;  
  6.     //檢測瀏覽器是否是足夠酷  
  7.     //識別range input.  
  8.     var o=document.createElement('input');  
  9.     o.type='range';  
  10.     if(o.type==='text')alert('不好意思,你的瀏覽器還不夠酷,試試最新的Opera瀏覽器吧。');   
  11.  
  12.     //設置初始值  
  13.     //無論是否本地存儲了,都設置值為5  
  14.     range.value=cachedRangeValue;  
  15.     result.value=cachedRangeValue;  
  16.     //當用戶選擇了個值,更新本地存儲  
  17.     range.addEventListener("mouseup",function(){  
  18.   alert("你選擇的值是:"+range.value+".我現(xiàn)在正在用本地存儲保存此值。在現(xiàn)代瀏覽器上刷新并檢測。");  
  19.   localStorage?(localStorage.rangeValue=range.value):alert("數(shù)據(jù)保存到了數(shù)據(jù)庫或是其他什么地方。");  
  20.     },false);  
  21.     //滑動時顯示選擇的值  
  22.     range.addEventListener("change",function(){  
  23.           result.value=range.value;  
  24.     },false);  
  25. })();  

【編輯推薦】

  1. 現(xiàn)在如何在你的站點上使用HTML 5
  2. HTML 5視頻標簽全屬性詳解
  3. 為網(wǎng)站提速 探秘HTML 5鏈接預取功能
  4. 主流瀏覽器CSS 3和HTML 5兼容清單
  5. 從零開始構建HTML 5 Web頁面
責任編輯:王曉東 來源: 張鑫旭的空間
相關推薦

2009-12-21 15:50:39

2010-01-14 10:18:24

VB.NET List

2009-09-04 10:27:28

Linux實用技巧linux操作系統(tǒng)linux

2022-03-23 09:18:10

Git技巧Linux

2019-10-16 15:49:21

AWS數(shù)據(jù)庫云計算

2009-01-03 09:34:30

ASP.NET.NET性能優(yōu)化

2011-04-08 15:40:01

Oracle認證

2022-10-11 08:00:47

多線程開發(fā)技巧

2022-11-03 10:28:59

PandasSAC機制

2024-05-17 08:52:43

SQL實用技巧行列轉(zhuǎn)換

2020-08-25 23:06:33

開發(fā)技能代碼

2010-09-14 10:41:24

DIV+CSS排版

2009-12-09 11:21:30

Linux實用技巧

2010-10-08 15:44:17

vim

2019-11-25 10:12:59

Python技巧工具

2019-12-22 23:10:19

LinuxSSH加密

2009-12-23 17:32:35

Linux構建軟路由

2019-10-10 16:31:51

PyCharmPythonWindows

2010-11-02 15:36:30

jQuery

2019-10-12 15:42:36

CSS代碼前端
點贊
收藏

51CTO技術棧公眾號