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

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

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

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

什么是語義化

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

標(biāo)簽名的表義程度也是不一樣的儒恋,比如<section><article>對內(nèi)容的描述就更模糊。<section>也是語義化的黔漂,因為它表明內(nèi)容應(yīng)該從屬于一個組诫尽。而<article> 不僅表示它的內(nèi)容從屬于一個組,還是一篇文章炬守。

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

標(biāo)題元素

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

<!-- h1, 一級標(biāo)題 -->

<h1>當(dāng)你的 HTML 里全是 div,那你就要小心了</h1>

<!-- h2观蜗,二級標(biāo)題 -->

<h2>什么是語義化</h2>

<!-- h3,三級標(biāo)題-->

<h3>標(biāo)題元素</h3>

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

  • <h1>: 當(dāng)你的 HTML 里全是 div坊夫,那你就要小心了
    • <h2>: 什么是語義化
      • <h3>: 標(biāo)題元素
      • <h3>: 按鈕
    • <h2>: 非語義化元素
    • <h2>: 總結(jié)

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

  • <div>: 當(dāng)你的 HTML 里全是 div,那你就要小心了
  • <div>: 什么是語義化
  • <div>: 標(biāo)題元素
  • <div>: 按鈕
  • <div>: 非語義化元素
  • <div>: 總結(jié)

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

按鈕

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

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

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

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

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

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

非語義化元素

前面提到過驯鳖,<div><span>是非語義化元素。<div>沒有給內(nèi)容附加任何含義久免,它只是個<div>浅辙。當(dāng)然,這么說也不完全準(zhǔn)確阎姥,因為<div><span>之間還是有一點點區(qū)別的:

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

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

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

總結(jié)

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

本文首發(fā)于1024譯站

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拨匆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子挽拂,更是在濱河造成了極大的恐慌惭每,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異台腥,居然都是意外死亡宏赘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門黎侈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來察署,“玉大人,你說我怎么就攤上這事峻汉√簦” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵休吠,是天一觀的道長扳埂。 經(jīng)常有香客問我,道長瘤礁,這世上最難降的妖魔是什么阳懂? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮柜思,結(jié)果婚禮上岩调,老公的妹妹穿的比我還像新娘。我一直安慰自己赡盘,他們只是感情好号枕,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著陨享,像睡著了一般堕澄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霉咨,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機與錄音拍屑,去河邊找鬼途戒。 笑死,一個胖子當(dāng)著我的面吹牛僵驰,可吹牛的內(nèi)容都是我干的喷斋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼蒜茴,長吁一口氣:“原來是場噩夢啊……” “哼星爪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粉私,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤顽腾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抄肖,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡久信,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了漓摩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裙士。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖管毙,靈堂內(nèi)的尸體忽然破棺而出腿椎,到底是詐尸還是另有隱情,我是刑警寧澤夭咬,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布啃炸,位于F島的核電站,受9級特大地震影響皱埠,放射性物質(zhì)發(fā)生泄漏肮帐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一边器、第九天 我趴在偏房一處隱蔽的房頂上張望训枢。 院中可真熱鬧,春花似錦忘巧、人聲如沸恒界。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽十酣。三九已至,卻和暖如春际长,著一層夾襖步出監(jiān)牢的瞬間耸采,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工工育, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留虾宇,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓如绸,卻偏偏與公主長得像嘱朽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子怔接,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容