2021-02-28 分類: 網(wǎng)站建設(shè)
原生的 <dialog> 元素
在 HTML 5.2 的所有變化里我感到最為激動(dòng)的就是引入了 <dialog> 元素,實(shí)現(xiàn)了瀏覽器原生的對(duì)話框。對(duì)話框在 web 開發(fā)中非常常見,但是現(xiàn)在每個(gè)實(shí)現(xiàn)都不太一樣。另一方面,實(shí)現(xiàn)一個(gè)支持無障礙化的對(duì)話框很難,實(shí)際上,現(xiàn)在 web 上使用的大多數(shù)對(duì)話框?qū)τ谝曈X障礙人士來說都是難以使用的。
新引入的
首先,使用
默認(rèn)情況下,對(duì)話框是不可見的,除非你設(shè)置了open屬性。
open屬性可以通過 HTMLDialogElement上的 show()和close()方法來改變。
目前,Chrome 已經(jīng)支持了 <dialog> 元素,而在 Firefox 中可以通過配置打開這一特性。具體情況可以查看 https://caniuse.com/#feat=dialog。
在 iframe 里使用支付請(qǐng)求 API
支付請(qǐng)求 API 是由瀏覽器原生提供支付方式,旨在為用戶在 web 上進(jìn)行支付提供一個(gè)標(biāo)準(zhǔn)而且一致的方法。它讓瀏覽器提供統(tǒng)一一致的界面來搜集用戶的支付信息,而不是讓用戶填寫各個(gè)網(wǎng)站自己的支付表單。
在 HTML 5.2 之前,支付請(qǐng)求 API 不能在 iframe 中 使用。這使得那些第三方提供的嵌入式支付解決方案(例如 Stripe、Paystack)完全無法利用這個(gè) API,因?yàn)樗鼈兊闹Ц督涌诙际切枰谝粋€(gè) iframe 中進(jìn)行處理的。
HTML 5.2 為 iframe 引入了一個(gè) allowpaymentrequest 屬性,設(shè)置這個(gè)屬性就可以允許 iframe 中使用支付請(qǐng)求 API 了。
為蘋果設(shè)備定義不同尺寸的圖標(biāo)
通過在 HTML 文檔的頭部使用 <linkrel="icon">,我們可以定義網(wǎng)頁的圖標(biāo)。同時(shí),還可以使用 sizes屬性來定義多個(gè)不同尺寸的圖標(biāo)。
雖然這個(gè)定義完全是建議性的,但它允許瀏覽器來自主決定使用哪個(gè)圖標(biāo)。尤其是像現(xiàn)在大多數(shù)設(shè)備的最優(yōu)圖標(biāo)尺寸都不一樣,只有瀏覽器自己才知道怎樣的圖標(biāo)尺寸更為合適。
在 HTML 5.2 以前, sizes 屬性僅僅當(dāng) link 標(biāo)簽的 rel 屬性為 icon 時(shí)才視為有效??墒?,蘋果的 iOS 設(shè)備并不支持這種 sizes 屬性,它引入了一個(gè)私有的 rel 值 apple-touch-icon,用于定義網(wǎng)頁在蘋果設(shè)備上的圖標(biāo)。
在 HTML 5.2 中,規(guī)范的這一限制被去除,當(dāng) rel 為 icon 或 apple-touch-icon 時(shí)都可以使用 sizes 屬性。
新的有效寫法
除了引入一些新特性,HTML 5.2 中也把一些之前被規(guī)范認(rèn)為無效的 HTML 寫法變成有效。
多個(gè) <main> 元素
<main>元素用于表達(dá)網(wǎng)頁的主體內(nèi)容。對(duì)于在多個(gè)網(wǎng)頁中會(huì)反復(fù)出現(xiàn)的內(nèi)容,我們可以把它們放在 header、section 或者別的元素中,但 <main>元素是被設(shè)計(jì)用于專門放置頁面上特定且唯一的內(nèi)容的。因此,在 HTML 5.2 之前,規(guī)范要求
元素在頁面的 DOM 結(jié)構(gòu)中只能出現(xiàn)一次。
可是隨著單頁應(yīng)用的流行,我們難以再去堅(jiān)持這一準(zhǔn)則??梢栽O(shè)想會(huì)有這樣一種情況:DOM 中有需要有多個(gè) <main> 元素,但在同一時(shí)間用戶只會(huì)看到其中一個(gè)。
在 HTML 5.2 中,現(xiàn)在只要能保證用戶同時(shí)只能看到一個(gè) <main> 元素,我們就可以在頁面中多次使用這個(gè)標(biāo)簽。其它不顯示的 <main>元素必須通過 hidden 屬性設(shè)置為隱藏。
我們都很清楚利用 CSS 有多種辦法可以隱藏元素??墒菍?duì)于頁面上的多個(gè) <main> 元素,我們必須用 hidden 屬性將目前不需要顯示的元素進(jìn)行隱藏。任何別的方法,比如 display:none; 或者 visibility:hidden;,都會(huì)被規(guī)范認(rèn)為是無效的。
在 <body> 中定義樣式
一般情況下,我們都會(huì)使用 <style> 標(biāo)簽來定義內(nèi)聯(lián) CSS,并將其放置在 HTML 文檔的 <head> 中。但隨著組件化開發(fā)的興起,開發(fā)者們開始逐漸傾向于把樣式定義和與之相關(guān)的 HTML 元素放在一起。
在 HTML 5.2 中,在 <body> 中的任何地方都可以定義 <style> 塊,規(guī)范現(xiàn)在將其也視為有效。也就是說我們現(xiàn)在可以讓樣式定義就出現(xiàn)在樣式被使用的地方。
可是仍然需要注意的是,從性能角度考慮,樣式定義最好還是放在 <head> 中。規(guī)范中也提到:
在文檔的頭部使用樣式元素是一種更為可取的做法。在文檔體內(nèi)使用樣式可能會(huì)導(dǎo)致頁面樣式重排、觸發(fā)重新布局或(和)重繪,因此應(yīng)該謹(jǐn)慎使用這一方式。
還應(yīng)當(dāng)注意的是,像在上面這個(gè)例子中,樣式定義仍然是作用于全局的。在 HTML 文檔內(nèi)出現(xiàn)的樣式定義仍然會(huì)應(yīng)用于在其前面的元素之上,這也是它會(huì)造成重繪的原因。
在 <Legend> 內(nèi)使用 h# 標(biāo)簽
<legend> 用于在表單中表示一個(gè) <fieldset> 的標(biāo)題。在 HTML 5.2 之前, <legend> 中的內(nèi)容只能使用純文本,現(xiàn)在我們可以在其中使用 h# 標(biāo)簽。
當(dāng)我們想使用 <fieldset> 來為表單中不同部分進(jìn)行分組時(shí),這一用法非常有用。就像上面這個(gè)例子,使用 h# 標(biāo)簽可以讓那些依賴于文檔大綱視圖進(jìn)行導(dǎo)航的用戶更為方便地跳轉(zhuǎn)到這些表單分組區(qū)域。
被移除的特性
在 HTML 5.2 中,有些特性被移除了,包括:
新的視為無效的寫法
最后,還有一些開發(fā)實(shí)踐被規(guī)范認(rèn)為是無效的。
<p> 元素中不允許包含行內(nèi)、浮動(dòng)或者塊級(jí)元素
在 HTML 5.2 中, <p> 元素只能包含短語內(nèi)容(譯者注:phrasing content,具體解釋可參見這里)。下列元素類型不能再被嵌套在一個(gè)段落中:
不再需要嚴(yán)格的 Doctype 聲明
我們終于可以和下面這種嚴(yán)格的文檔類型說明說再見了:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
如果你依然在編程的世界里迷茫,不知道自己的未來規(guī)劃,可以加入我們,關(guān)注,私信小編。一起交流并走出迷茫。
新手可免費(fèi)領(lǐng)取學(xué)習(xí)資料,看看前輩們是如何在編程的世界里傲然前行不停更新最新的教程和學(xué)習(xí)方法(詳細(xì)的前端項(xiàng)目實(shí)戰(zhàn)教學(xué)視頻),
有想學(xué)習(xí)web前端的,或是轉(zhuǎn)行,或是大學(xué)生,還有工作中想提升自己能力的,正在學(xué)習(xí)的小伙伴歡迎加入
本文標(biāo)題:HTML 5.2有哪些新特性?
標(biāo)題鏈接:http://jinyejixie.com/news1/103401.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、定制開發(fā)、網(wǎng)站策劃、全網(wǎng)營銷推廣、響應(yīng)式網(wǎng)站、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容