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

如果你的 HTML 里全是 Div,那就要小心了

網(wǎng)絡(luò) 通信技術(shù)
做前端開發(fā)的同學(xué)都知道,網(wǎng)頁的基本組成部分是 HTML,JavaScript 和 CSS。開發(fā)人員通常更關(guān)注 JavaScript 和 CSS ,實(shí)踐著各種語言規(guī)范和設(shè)計(jì)模式。對于 HTML 的關(guān)注度則明顯偏少,只要能做出設(shè)計(jì)師畫的界面就萬事大吉了,不怎么去關(guān)心 HTML 是不是規(guī)范合理。

做前端開發(fā)的同學(xué)都知道,網(wǎng)頁的基本組成部分是 HTML,JavaScript 和 CSS。開發(fā)人員通常更關(guān)注 JavaScript 和 CSS ,實(shí)踐著各種語言規(guī)范和設(shè)計(jì)模式。對于 HTML 的關(guān)注度則明顯偏少,只要能做出設(shè)計(jì)師畫的界面就萬事大吉了,不怎么去關(guān)心 HTML 是不是規(guī)范合理。于是下面的情況隨處可見:

  • 按鈕用的是可點(diǎn)擊的 <div> 而不是 <button> 元素
  • 標(biāo)題用的是 <div> 而不是標(biāo)題元素 (<h1>,<h2> 等等)
  • <input> 相應(yīng)的文本標(biāo)簽用的是 <div> 而不是<label>
  • 輸入框也用綁定了鍵盤事件的 <div> ,而不是<input>

看到?jīng)]?一招 <div> 走天下!這樣有沒有問題?好像也沒什么大問題,畢竟頁面看起來符合設(shè)計(jì),也能正常交互。但是你想過沒有,如果<div>能解決一切,為什么還需要其余幾十上百種標(biāo)簽?zāi)??這就要說到 HTML 的語義化了。

1什么是語義化

語義化就是說,HTML 元素具有相應(yīng)的含義。它用于描述元素的內(nèi)容或者跟其他元素的關(guān)系。在 HTML 里,除了<div>和<span>,基本上都是語義化的元素。

標(biāo)簽名的表義程度也是不一樣的,比如<section> 比 <article>對內(nèi)容的描述就更模糊。<section>也是語義化的,因?yàn)樗砻鲀?nèi)容應(yīng)該從屬于一個組。而<article> 不僅表示它的內(nèi)容從屬于一個組,還是一篇文章。

為了進(jìn)一步說明語義化的重要性,下面用標(biāo)題和按鈕元素來舉例。

標(biāo)題元素

<h1> 是頁面的標(biāo)題,加上下方的 <h2> 就形成了頁面的層級結(jié)構(gòu)。

  1. <!-- h1, 一級標(biāo)題 --> 
  2.  
  3. <h1>當(dāng)你的 HTML 里全是 div,或許該反思下了</h1> 
  4.  
  5. <!-- h2 二級標(biāo)題 --> 
  6.  
  7. <h2>什么是語義化</h2> 
  8.  
  9. <!-- h3 三級標(biāo)題 --> 
  10.  
  11. <h3>標(biāo)題元素</h3> 

在很多富文本編輯器中,使用合適的標(biāo)題結(jié)構(gòu),可以自動生成內(nèi)容目錄。比如本文的目錄結(jié)構(gòu)就是這樣:

可以看到,HTML 本身就傳達(dá)了整篇文章的結(jié)構(gòu)信息。相反,如果全部都用<div>,就變成這樣了:

  • <div>: 當(dāng)你的 HTML 里全是 div,或許該反思下了
  • <div>: 什么是語義化
  • <div>: 標(biāo)題元素
  • <div>: 按鈕
  • <div>: 非語義化元素
  • <div>: 總結(jié)

由于 <div>不附帶任何含義,因此它就是扁平的結(jié)構(gòu)。只要使用正確的 HTML 標(biāo)簽,DOM 就會變得清晰和結(jié)構(gòu)化。

按鈕

按鈕的作用是提交表單或者改變某個元素的狀態(tài)。從定義上看,按鈕具備以下特征:

  • 可獲得焦點(diǎn)
  • 可通過敲擊空格鍵或者回車鍵激活
  • 可通過鼠標(biāo)點(diǎn)擊激活

當(dāng)你用<div>綁定點(diǎn)擊事件來模擬按鈕時,你就沒辦法用上<button>天然自帶的那些語義化的交互特征。你還需要手動實(shí)現(xiàn)這些功能:

  • focus 狀態(tài)
  • 鍵盤交互
  • 鼠標(biāo)交互

不止如此,當(dāng)屏幕閱讀器碰到<button>提交</button>這個元素,它會識別出語義,告訴用戶這是個提交按鈕。如果只是個 <div> ,閱讀器就不會認(rèn)為它是個按鈕。

當(dāng)我們使用語義化的 HTML 元素后,就給內(nèi)容賦予了含義,內(nèi)容也就有了生命。

2非語義化元素

前面提到過,<div>和<span>是非語義化元素。<div>沒有給內(nèi)容附加任何含義,它只是個<div>。當(dāng)然,這么說也不完全準(zhǔn)確,因?yàn)?lt;div>和<span>之間還是有一點(diǎn)點(diǎn)區(qū)別的:

  • <div> 是塊級元素
  • <span> 是行內(nèi)元素,應(yīng)該放在其他元素里面,比如 <p><span class="dropcap">I</span>nline elements</p>

如果實(shí)在找不到對應(yīng)的 HTML 元素來表示內(nèi)容,那就可以用 <div> 或者 <span>。既然設(shè)計(jì)了 <div> 和 <span>,自然有它們的用武之地。畢竟,并不是每一個 HTML 元素都需要額外的語義。

總體原則是,盡量優(yōu)先使用對應(yīng)的語義化元素表示內(nèi)容。退而求其次,使用含義沒那么明確的標(biāo)簽。最后才考慮用<div> 和 <span>。

3總結(jié)

雖然使用語義化的 HTML 元素并不會給你的項(xiàng)目帶來明顯的收益,但我還是建議你這么做。至少,語義化的 HTML 頁面能帶來更好的 SEO 排名、對屏幕閱讀器更友好、代碼可讀性更高。如果你是個有追求的 Coder,相信你會認(rèn)同我的看法。

文轉(zhuǎn)載自微信公眾號「1024譯站」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系1024譯站公眾號。

 

責(zé)任編輯:武曉燕 來源: 1024譯站
相關(guān)推薦

2017-06-14 07:45:34

微軟windows補(bǔ)丁

2018-09-07 23:23:55

MYSQL開源代碼

2015-09-01 09:21:39

網(wǎng)絡(luò)監(jiān)控系統(tǒng)宕機(jī)

2022-12-19 17:44:25

MQ技術(shù)RabbitMQ

2019-08-08 17:25:20

裁員計(jì)劃程序員

2019-04-02 10:39:42

WiFiLiFi5G

2021-10-12 15:58:53

手機(jī)數(shù)據(jù)隱私

2025-01-02 15:14:01

2019-08-16 08:50:52

代碼日志程序員

2010-10-28 10:30:16

云計(jì)算關(guān)系數(shù)據(jù)庫

2015-01-08 15:44:58

物聯(lián)網(wǎng)

2023-03-08 11:09:08

CIO企業(yè)

2012-07-16 11:48:51

2019-10-30 09:40:52

代碼程序員爬蟲

2017-12-01 11:42:00

硬件安全企業(yè)

2017-07-21 16:26:43

2021-07-29 06:26:33

代碼Activity開發(fā)

2020-06-08 09:50:59

函數(shù)查詢數(shù)據(jù)

2020-12-22 09:46:18

大數(shù)據(jù)安全信息泄露

2022-05-05 09:23:21

裁員程序員危機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號