關(guān)于語義
語義研究的是標志與符號之間的關(guān)系,以及它們所代表的意義。在語言學中,它主要是研究這些標志(如單詞,短語,或者聲音)在語言中的意義。而在前端開發(fā)領(lǐng)域,語義主要涉及的是HTML元素、屬性和屬性值(包括像Microdata這樣的擴展)所約定的意義。這些在規(guī)范中常用的正式約定語義,可以幫助程序(以及后來參與開發(fā)的人)更好地理解一個網(wǎng)站各方面的信息。然而,即使這些元素、屬性和屬性值的語義是正式化的,它們依然得服從于開發(fā)者的適應程度以及共同選擇的結(jié)果。這使得正式的約定語義也可能會在今后被修改(而這正是HTML設計原則之一)。
區(qū)分不同類型的HTML語義
遵守編寫“語義化的HTML”這個原則,是現(xiàn)代專業(yè)前端開發(fā)的基礎之一。絕大多數(shù)的語義都與當前或預期的內(nèi)容性質(zhì)有關(guān)(如:h1元素,lang屬性,type屬性的email值,Microdata)。
然而,并非所有的語義都需要以內(nèi)容為導向。類名不能“無語義”。不管是用什么名字命名,它們都必須要有意義與目的。類名的語義可以和那些HTML元素不同。我們可以借助HTML元素、某些HTML屬性、Microdata等所具有的“全局性”語義,然后利用網(wǎng)站或應用的“局部性”特定語義加以區(qū)分,這些特定語義通常包含在屬性值中,比如class屬性。
盡管在HTML5規(guī)范的class屬性這一章節(jié)中重申了這個假定的“最佳實踐”…
…鼓勵開發(fā)者使用class屬性值描述實際內(nèi)容,而不是描述期望展現(xiàn)的內(nèi)容。
…并沒有什么內(nèi)在的原因非這樣做不可。事實上,當這種方法在大型網(wǎng)站或者應用中運用時,它往往會成為一種障礙。
HTML元素和其它屬性已經(jīng)提供了內(nèi)容層的語義
對于機器或訪問者來說,類名所能透露的有用的語義信息非常少,甚至沒有。除非它是已經(jīng)約定的那一小部分名稱(機器同樣可讀) —— Mircoformats
類名的主要用途是成為CSS和JavaScript的鉤子。如果你不需要為你的頁面添加表現(xiàn)和行為,那么你或許不必在你的HTML里添加類名
類名應該為開發(fā)者傳達有用的信息。當你閱讀一個DOM片段時,它將有助于理解某個類名的具體作用。尤其是在多人協(xié)作的開發(fā)團隊里,與HTML組件打交道的可不光只有前端開發(fā)者。
舉一個非常簡單的例子:
新聞熱點
疑難解答