淺析HTML5

1.0 HTML5

HTML5—MDN
HTML5——W3C

該規(guī)范定義了萬維網(wǎng)核心語言(超文本標(biāo)記語言(HTML))的第五次重要修訂,于2014年10月29日標(biāo)準(zhǔn)規(guī)范制定完成。

  • 語義:是一個新版本的HTML語言,新增了新的元素,屬性和行為。當(dāng)然,也淘汰了一些舊屬性。
  • 通信:信息傳遞增強(qiáng),讓你和服務(wù)器之間通過創(chuàng)新的新技術(shù)方法進(jìn)行通信。
  • 多媒體:<video><audio>的加入,支持新的多媒體內(nèi)容創(chuàng)作。
  • 離線&存儲:離線資源緩存,編輯,離線事件支持等。
  • 2D/3D繪圖:<canvas>引入。
  • 性能:Web Works,XMLHttpRequest Level2,支持拖放API,requestAnimationFrame更好的動畫性能......
  • 多用途互聯(lián)網(wǎng)郵件擴(kuò)展(MIME)和協(xié)議處理程序注冊

等等

1.1 語義

關(guān)于DOCTYPE與字符集編碼

早期網(wǎng)頁設(shè)計(jì)中,并不是所有網(wǎng)頁代碼都遵循標(biāo)準(zhǔn)進(jìn)行編寫,所有現(xiàn)代瀏覽器中都擁有不同的呈現(xiàn)模式,這樣一來,瀏覽器不僅能正常解析標(biāo)準(zhǔn)的文檔,也能解析老式的、不符合標(biāo)準(zhǔn)的網(wǎng)頁。呈現(xiàn)模式分為標(biāo)準(zhǔn)模式、怪異模式、近似模式。

瀏覽器根據(jù)doctype來選擇使用不同的模式、HTML版本、文檔類型定義(DTD)規(guī)則來解析。所以在以前的HTML中會看到諸如這樣的聲明:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

DTD中包含了一系列標(biāo)記、屬性,用于標(biāo)記Web文檔中能出現(xiàn)哪些元素和元素之間的包含關(guān)系,在遵循標(biāo)準(zhǔn)的所有Web文檔中,DOCTYPE這條指令是必不可少的,決定瀏覽器最終如何解析Web文檔,影響最終呈現(xiàn)效果。

HTML中,文檔類型聲明是必要的。所有的文檔的頭部,你都將會看到"<!DOCTYPE html>" 的身影。這個聲明的目的是防止瀏覽器在渲染文檔時,切換到我們稱為“怪異模式(兼容模式)”的渲染模式。“<!DOCTYPE html>" 確保瀏覽器按照最佳的相關(guān)規(guī)范進(jìn)行渲染,而不是使用一個不符合規(guī)范的渲染模式?!狹DN

HTML5的DOCTYPE
HTML5的doctype非常簡單,明你的HTML內(nèi)容使用HTML5,只需要簡單的使用:

<!DOCTYPE html>

這樣做會讓目前還不支持的HTML5的瀏覽器采用標(biāo)準(zhǔn)模式解析,這意味著他們會解析那些HTML5中兼容的舊的HTML的標(biāo)簽的部分,而忽略他們不支持HTML5的新特性。
這個doctype比以前更短,更簡單,使的它更容易被記住并且減少必須下載的字節(jié)數(shù)。

用HTML5的doctype聲明文件包含HTML5標(biāo)記

文檔編碼
在一個頁面上做的第一件事通常是聲明使用的字符集。在以前版本的HTML,它是一個非常復(fù)雜的<meta>元素,現(xiàn)在它變得非常簡單:

<meta charset="UTF-8">

標(biāo)簽閉合
在HTML5中一些標(biāo)簽不再是需要閉合標(biāo)簽的。
li dt dd p rt option tbody tfoot tr td th
自閉合標(biāo)簽最后的/也不推薦再加
<img> <input> <br> <hr>
HTML標(biāo)簽,閉合還是不閉合?
正確閉合HTML標(biāo)簽,停止使用不標(biāo)準(zhǔn)的標(biāo)簽和屬性

具有boolean值的屬性
對于具有boolean值的屬性,例如disablereadonly等只寫屬性不寫屬性值時值為true

<input type="checkbox" checked >
<input type="checkbox" checked="checked" >
<input type="checkbox" checked="" >

省略屬性值引號
屬性值可以用單引號或者雙引號,在屬性值不包括<、>、=、'、"時可以忽略引號

<input type=text >

新增元素

<section>
表示文檔中一個區(qū)域(或節(jié)點(diǎn)),比如,內(nèi)容中的一個專題組,一般會**包含一個標(biāo)題(Heading),通過包含一個標(biāo)題作為子節(jié)點(diǎn)來辨識每一個<section>

不要把 <section> 元素作為一個普通的容器來使用,這是本應(yīng)該是<div>的用法(特別是當(dāng)片段(the sectioning )僅僅是為了美化樣式的時候)。 一般來說,一個 <section> 應(yīng)該出現(xiàn)在文檔大綱中。

之前

<div>
  <h2>Heading</h2>
  <img src="bird.jpg" alt="bird">
</div>

之后

<div>
  <h2>Heading</h2>
  <img src="bird.jpg" alt="bird">
</div>

<article>
<article>元素表示文檔、頁面、應(yīng)用或網(wǎng)站中的獨(dú)立結(jié)構(gòu),其意在成為可獨(dú)立分配的或可復(fù)用的結(jié)構(gòu),如在發(fā)布中,它可能是論壇帖子、雜志或新聞文章、博客、用戶提交的評論、交互式組件,或者其他獨(dú)立的內(nèi)容項(xiàng)目。

例子:

<article class="film_review">
  <header>
    <h2>Jurassic Park</h2>
  </header>
  <section class="main_review">
    <p>Dinos were great!</p>
  </section>
  <section class="user_reviews">
    <article class="user_review">
      <p>Way too scary for me.</p>
      <footer>
        <p>
          Posted on <time datetime="2015-05-16 19:00">May 16</time> by Lisa.
        </p>
      </footer>
    </article>
    <article class="user_review">
      <p>I agree, dinos are my favorite.</p>
      <footer>
        <p>
          Posted on <time datetime="2015-05-17 19:00">May 17</time> by Tom.
        </p>
      </footer>
    </article>
  </section>
  <footer>
    <p>
      Posted on <time datetime="2015-05-15 19:00">May 15</time> by Staff.
    </p>
  </footer>
</article>

<nav>
HTML導(dǎo)航欄 (<nav>) 描繪一個含有多個超鏈接的區(qū)域,這個區(qū)域包含轉(zhuǎn)到其他頁面,或者頁面內(nèi)部其他部分的鏈接列表.

  • 并不是所有鏈接都必須使用<nav>元素,只用來一些熱門的鏈接放入導(dǎo)航欄,例如<footer>元素就常用來在頁面底部包含一個不常用到,沒必須要加入nav的鏈接列表。
  • 一個網(wǎng)頁也可能包含多個<nav>元素,例如是一個網(wǎng)站內(nèi)的導(dǎo)航列表,另一個是頁面內(nèi)的導(dǎo)航列表。

例子:

<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>

<header>
HTML <header> 元素用于展示介紹性內(nèi)容,通常包含一組介紹性的或是輔助導(dǎo)航的實(shí)用元素。它可能包含一些標(biāo)題元素,但也可能包含其他元素,比如 Logo、搜索框、作者名稱,等等。

<header> 元素不是分段內(nèi)容,因此不會往 大綱 中引入新的段落。也就是說,<header> 元素通常用于包含周圍部分的標(biāo)題(h1h6 元素),但這不是必需的。

<header class="page-header">
    <h1>Cute Puppies Express!</h1>
</header>

<main>
    <p>I love Beagles <strong>so</strong> much! Like really, a lot. They're adorable and their ears are so, so snuggly soft!</p>
</main>

注意 <header> 元素不能作為 <address><footer> 或另一個 <header> 元素的子元素。

<footer>
HTML <footer> 元素表示最近一個章節(jié)內(nèi)容或者根節(jié)點(diǎn)(sectioning root )元素的頁腳。一個頁腳通常包含該章節(jié)作者、版權(quán)數(shù)據(jù)或者與文檔相關(guān)的鏈接等信息。

例子略。

注意<footer>元素必須不能是 <address>, <header> 或者另一個<footer> 元素的后代元素。

一般的,一個頁面只有一個footer。

<aside>
<aside>元素表示一個和其余頁面內(nèi)容幾乎無關(guān)的部分,被認(rèn)為是獨(dú)立于該內(nèi)容的一部分并且可以被單獨(dú)的拆分出來而不會使整體受影響。其通常表現(xiàn)為側(cè)邊欄或者嵌入內(nèi)容。他們通常包含在工具條,例如來自詞匯表的定義。也可能有其他類型的信息,例如相關(guān)的廣告、筆者的傳記、web 應(yīng)用程序、個人資料信息,或在博客上的相關(guān)鏈接。

<article>
  <p>
    迪斯尼電影 <em>海的女兒</em> 于1989年首次搬上銀屏
  </p>
  <aside>
    這個電影在首次發(fā)行期間就賺得了8千7百萬美元.
  </aside>
  <p>
    該電影更多信息...
  </p>
</article>

<audio>
HTML <audio>元素用于在文檔中表示音頻內(nèi)容。 <audio> 元素可以包含多個音頻資源, 這些音頻資源可以使用 src 屬性或者<source> 元素來進(jìn)行描述; 瀏覽器將會選擇最合適的一個來使用。對于不支持<audio>元素的瀏覽器,<audio>元素也可以作為瀏覽器不識別的內(nèi)容加入到文檔中。

元素屬性
autoplay
布爾屬性,true表示自動播放,不會停下等待數(shù)據(jù)載入結(jié)束

autobuffer
布爾屬性,true將會自動開始加載,即使沒有設(shè)置自動播放。直到媒體緩存滿了或者全部音頻文件加載完畢。

controls
如果設(shè)置了該屬性,瀏覽器將提供一個包含聲音,播放速度,播放暫停的控制面板,讓用戶可以控制音頻的播放。

loop
是否循環(huán)播放

src
嵌入的音頻的URL。 該URL應(yīng)遵從 HTTP access controls. 這是一個可選屬性;你可以在audio元素中使用 <source> 元素來替代該屬性指定嵌入的音頻。
d
volume
音頻播放的音量。值從0.0 (無聲) 到 1.0 (最大聲),時間偏移量目前是指定為float類型的值,表示偏移的秒數(shù)。

其他新增元素
HTML5 標(biāo)簽列表

input新增類型

type="email"

用于編輯 e-mail 的字段。 合適的時候可以使用 :valid:invalid CSS 偽類。

自帶Email格式的正則檢測

type="url"

用于編輯URL的字段

也同樣自帶URL的正則檢測

type="number"

用于輸入浮點(diǎn)數(shù)的控件。

type="range"

用于輸入不精確值控件。如果未指定相應(yīng)的屬性,控件使用如下缺省值

  • min : 0
  • max : 100
  • value : min+(max-min)/2,或當(dāng)小于min時使用min
  • step : 1
        <input id="input" type="range" min="100" max="1000" value="50" step="10">

Date
type="date"
用于輸入日期的控件(年,月,日,不包括時間)。

webkit稍微提供了一些輕微修改樣式的方法:

::-webkit-datetime-edit – 控制編輯區(qū)域的
::-webkit-datetime-edit-fields-wrapper – 控制年月日這個區(qū)域的
::-webkit-datetime-edit-text – 這是控制年月日之間的斜線或短橫線的
::-webkit-datetime-edit-month-field – 控制月份
::-webkit-datetime-edit-day-field – 控制具體日子
::-webkit-datetime-edit-year-field – 控制年文字, 如2017四個字母占據(jù)的那片地方
::-webkit-inner-spin-button – 這是控制上下小箭頭的
::-webkit-calendar-picker-indicator – 這是控制下拉小箭頭的
::-webkit-clear-button –這是控制清除按鈕的

input[type="date"]默認(rèn)樣式修改
html5中如何去掉input type date默認(rèn)樣式
HTML5中input[type='date']自定義樣式&日歷校驗(yàn)功能

type="mouth"
用于輸入年月的控件,不帶時區(qū)。

type="week"
用于輸入一個由星期-年組成的日期,日期不包括時區(qū)。\

type="time"
用于輸入不含時區(qū)的時間控件。

type="datetime-local"
用于輸入日期時間控件,不包含時區(qū)。

關(guān)于Input Datetime對象的參考:
<input type="datetime-local">
HTML DOM Input Datetime 對象


移除(廢棄)元素

一些能被CSS替代的元素將被移除,因?yàn)椴环蠘邮浇Y(jié)構(gòu)分離原則。

  • <basefont>
    <basefont>用來設(shè)置文檔的默認(rèn)字體大小。使用<font>可以相對于默認(rèn)字體大小進(jìn)行變化。

  • <big>
    <big>會使字體加大一號(例如從小號(small)到中號(medium),從大號(large)到加大(x-large)),最大不超過瀏覽器的最大字體。

  • <center>
    <center>是個 塊級元素,可以包含段落,以及其它塊級和內(nèi)聯(lián)元素。這個元素的整個內(nèi)容在它的上級元素中水平居中(通常是 <body>)。

  • <font>
    font 屬性是設(shè)置 font-style, font-variant, font-weight, font-size, line-heightfont-family屬性的簡寫,或使用特定的關(guān)鍵字設(shè)置元素的字體為某個系統(tǒng)字體。

  • <s>
    HTML <s> 元素 **使用刪除線來渲染文本。使用 <s> 元素來表示不再相關(guān),或者不再準(zhǔn)確的事情。但是當(dāng)表示文檔編輯時,不提倡使用 <s> ;為此,提倡使用 <del><ins> 元素。

  • <u>
    <u>元素使文本在其內(nèi)容的基線下的一行呈現(xiàn)下劃線。在HTML5中, 此元素表示具有未標(biāo)注的文本跨度,顯示渲染,非文本注釋,例如將文本標(biāo)記為中文文本中的專有名稱(一個正確的中文標(biāo)記), 或 將文本標(biāo)記為拼寫錯誤。

  • <tt>
    電報(bào)文本元素 (<tt>) 產(chǎn)生一個內(nèi)聯(lián)元素,使用瀏覽器內(nèi)置的 monotype 字體展示。這個元素用于給文本排版,使其等寬展示,就像電報(bào)那樣。使用 <code> 元素來展示等寬文本可能更加普遍。

  • <strike>
    <strike> 元素(或者 HTML 刪除線元素)在文本上放置刪除線。


不再使用的frame框架

  • frame
  • frameset
  • noframes

新增屬性

  • contentEditable
    contenteditable 是一個枚舉屬性(enumerated attribute),表示元素是否可被用戶編輯。 如果可以,瀏覽器會修改元素的部件(widget)以允許編輯。

  • designMode
    document.designMode 控制整個文檔是否可編輯。有效值為 “on”和 “off”

  • hidden
    hidden 是一個布爾屬性,表示一個元素尚未或者不再相關(guān)。例如,它可以被用來隱藏一個頁面元素直到登錄完畢。如果一個元素設(shè)置了這個屬性,它就不會被顯示。

  • spellcheck
    spellcheck 全局屬性是枚舉屬性,定義是否可以檢查元素的拼寫錯誤。它可以具有以下值:

  • tabindex
    tabindex 全局屬性 是個整數(shù),表示元素(如果可聚焦)是否能夠接受輸入焦點(diǎn)。 如果它應(yīng)該參與鍵盤序列導(dǎo)航,那么就是它的位置。它可以設(shè)為多種值:

    • tabindex=負(fù)值 (通常是tabindex=“-1”),表示元素是可聚焦的,但是不能通過鍵盤導(dǎo)航來訪問到該元素,用JS做頁面小組件內(nèi)部鍵盤導(dǎo)航的時候非常有用。
    • tabindex="0" ,表示元素是可聚焦的,并且可以通過鍵盤導(dǎo)航來聚焦到該元素,它的相對順序是當(dāng)前處于的DOM結(jié)構(gòu)來決定的。
    • tabindex=正值,表示元素是可聚焦的,并且可以通過鍵盤導(dǎo)航來訪問到該元素;它的相對順序按照tabindex 的數(shù)值遞增而滯后獲焦。如果多個元素?fù)碛邢嗤?tabindex,它們的相對順序按照他們在當(dāng)前DOM中的先后順序決定。

表單屬性

  • autofocus
    這個布爾屬性允許您指定的表單控件在頁面加載時具有焦點(diǎn)(自動獲得焦點(diǎn)),除非用戶將其覆蓋,例如通過鍵入不同的控件。文檔中只有一個表單元素可以具有autofocus屬性,它是一個布爾值。 如果type屬性設(shè)置為隱藏則不能應(yīng)用(即您不能自動獲得焦點(diǎn)的屬性設(shè)置為隱藏的控件)。
  • placeholder
    提示用戶輸入框的作用。用于提示的占位符文本不能包含回車或換行。
  • required
    表示任意擁有[required](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#attr-required)屬性的 <input><textarea> 元素使用它. 它允許表單在提交之前容易的展示必填字段并且渲染其外觀.
  • novalidate
    novalidate 屬性規(guī)定當(dāng)提交表單時不對其進(jìn)行驗(yàn)證。
    如果使用該屬性,則表單不會驗(yàn)證表單的輸入。

鏈接相關(guān)

  • link新增sizes屬性,sizes表示資源大小的以逗號隔開的一個或多個字符串

  • base新增target屬性,該屬性指定在何處顯示鏈接的資源。 取值為標(biāo)簽(tab),窗口(window),或框架(iframe)等瀏覽上下文的名稱或其他關(guān)鍵詞。以下關(guān)鍵字具有特殊的意義:

    • _self: 當(dāng)前頁面加載,即當(dāng)前的響應(yīng)到同一HTML 4 frame(或HTML5瀏覽上下文)。此值是默認(rèn)的,如果沒有指定屬性的話。
    • _blank: 新窗口打開,即到一個新的未命名的HTML4窗口或HTML5瀏覽器上下文
    • _parent: 加載響應(yīng)到當(dāng)前框架的HTML4父框架或當(dāng)前的HTML5瀏覽上下文的父瀏覽上下文。如果沒有parent框架或者瀏覽上下文,此選項(xiàng)的行為方式相同_self。
    • _top: IHTML4中:加載的響應(yīng)成完整的,原來的窗口,取消所有其它frame。 HTML5中:加載響應(yīng)進(jìn)入頂層瀏覽上下文(即,瀏覽上下文,它是當(dāng)前的一個的祖先,并且沒有parent)。如果沒有parent框架或者瀏覽上下文,此選項(xiàng)的行為方式相同_self
  • area新增hreflang和rel。
    hreflang:此屬性指明了被鏈接資源的語言. 其意義僅供參考??扇〉闹祬⒁?BCP47。僅當(dāng)設(shè)置了 href 屬性時才應(yīng)設(shè)置該屬性。
    rel:此屬性指明被鏈接文檔對于當(dāng)前文檔的關(guān)系。這個屬性一定得是一個由空格分開的鏈接類型值的列表。 這個屬性最通常的用法是指向一個連接到外部樣式表的鏈接:將rel的值設(shè)置為stylesheet


其他

  • ol新增reversed
    這個布爾屬性規(guī)定了列表的條目采用倒序,即最不重要的條目放在列表第一個位置。

  • meta新增charset
    此特性聲明當(dāng)前文檔所使用的字符編碼,但該聲明可以被任何一個元素的 lang 特性的值覆蓋。此特性的值必須是一個符合由IANA所定義的字符編碼首選MIME 名稱(preferred MIME name )之一。盡管標(biāo)準(zhǔn)不要求必須使用某些特定的字符編碼,但它還是給出了一些建議:
    鼓勵使用 UTF-8;

  • menu新增 type和label
    label:顯示給用戶的菜單名稱。在嵌套菜單中使用,以提供可通過其訪問子菜單的標(biāo)簽。必須僅在父元素<menu>處于上下文菜單狀態(tài)時指定。
    type:此屬性指示要聲明的菜單類型,可以是兩個值之一。

    • context上下文菜單狀態(tài),表示通過另一個元素激活的一組命令。這可能是通過a的[menu](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/button#attr-menu)屬性<button>或具有contextmenu屬性的元素。將<menu>元素直接嵌套在另一個中時,如果父元素已處于此狀態(tài),則這是缺省值的缺省值。
    • list列表菜單狀態(tài),表示用于用戶交互的一系列命令。這是缺省值的默認(rèn)值,除非父元素<menu>上下文菜單狀態(tài)中是a 。
  • script新增async
    該布爾屬性指示瀏覽器是否在允許的情況下異步執(zhí)行該腳本。該屬性對于內(nèi)聯(lián)腳本無作用 (即沒有src屬性的腳本)。

  • iframe新增sandbox, seamless, srcdoc
    sandbox: 如果指定了空字符串,該屬性對呈現(xiàn)在iframe框架中的內(nèi)容啟用一些額外的限制條件。屬性值可以是用空格分隔的一系列指定的字符串
    srcdoc: 該屬性值可以是HTML代碼,這些代碼會被渲染到iframe中,如果同時指定了src屬性,srcdoc會覆蓋src所指向的頁面。該屬性最好能與sandbox和seamless屬性一起使用。
    seamless: 該布爾屬性指示瀏覽器將iframe渲染成容器頁面文檔的一部分。例如,通過打被包含的文檔的鏈接,在iframe頁面的樣式被渲染之前,父頁面的CSS樣式就可以應(yīng)用在iframe中(除非被其他設(shè)置阻止)。


低版本IE支持HTML5標(biāo)簽

  • 使用JavaScript 語句 document.createElement("header") 即可讓低版本 IE 瀏覽器支持新的元素
<script>
  var header = document.createElement("header");
</script>
<style>
  header{
    display: block;
    background-color: red;
  }
</style>
</head>
<body>
<header>hello world!</header>
</body>

腳本與樣式表順序可顛倒放置。
到這里,低版本IE瀏覽器就可以支持html5元素了。

  • 更簡單的方法是使用HTML5 shiv來解決。
<!--[if lt IE 9]>
  <script src="http://cdn.static.runoob.com/libs/html5shiv/3.7/html5shiv.min.js"></script>
<![endif]-->

以上代碼意思是在 IE 瀏覽器的版本小于 IE9 時將讀取 html5.js 文件,并解析它。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的,因此網(wǎng)頁是網(wǎng)絡(luò)信息傳遞的載體。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 4,928評論 0 0
  • 格式后期處理。 Jeremy Keith在 Fronteers 2010 上的主題演講 今天我想跟大家談一談HTM...
    LordZhou閱讀 1,213評論 0 17
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,108評論 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,797評論 1 45
  • ??DOM(文檔對象模型)是針對 HTML 和 XML 文檔的一個 API(應(yīng)用程序編程接口)。 ??DOM 描繪...
    霜天曉閱讀 3,858評論 0 7

友情鏈接更多精彩內(nèi)容