語義

在程式設計中,語義指的是一段程式碼的含義——例如“執行那行 JavaScript 會有什麼效果?”或者“那個 HTML 元素有什麼目的或作用?”(而不是“它看起來像什麼?”)

JavaScript 中的語義

在 JavaScript 中,考慮一個函式,它接受一個字串引數,並返回一個以該字串作為 textContent<li> 元素。如果它被呼叫為 build('Peach')createLiWithContent('Peach'),你需要檢視程式碼才能理解該函式做了什麼嗎?

CSS 中的語義

在 CSS 中,考慮使用 li 元素(代表不同型別的水果)來樣式化列表。你會知道 div > ul > li.fruits__item 選擇了 DOM 的哪一部分嗎?

HTML 中的語義

在 HTML 中,例如,h1 元素是一個語義元素,它賦予其所包裹文字“頁面上的頂級標題”的作用(或含義)。

html
<h1>This is a top level heading</h1>

預設情況下,大多數瀏覽器的使用者代理樣式表會以較大的字型大小樣式化 h1,使其看起來像一個標題(儘管你可以將其樣式化為任何你想要的樣子)。

另一方面,你可以讓任何元素看起來像一個頂級標題。考慮以下內容

html
<span style="font-size: 32px; margin: 21px 0;">Not a top-level heading!</span>

這會使其看起來像一個頂級標題,但它沒有語義價值,因此不會獲得上述任何額外的好處。因此,為正確的工作使用正確的 HTML 元素是一個好主意。

HTML 應該被編碼以表示將要填充的資料,而不是基於其預設的呈現樣式。呈現(它應該看起來如何)是 CSS 的唯一職責。

編寫語義化標記的一些好處如下

  • 搜尋引擎會將其內容視為影響頁面搜尋排名的重要關鍵詞(參見 SEO
  • 螢幕閱讀器可以將其用作路標,幫助視障使用者導航頁面
  • 查詢有意義的程式碼塊比在無數帶有或不帶語義或名稱空間類的 div 中搜索要容易得多
  • 向開發人員提示將要填充的資料型別
  • 語義命名與正確的自定義元素/元件命名相呼應

在選擇使用哪種標記時,問自己:“什麼元素最能描述/代表我將要填充的資料?”例如,它是一個數據列表嗎?有序的還是無序的?它是一篇文章,包含章節和相關資訊的側邊欄嗎?它列出了定義嗎?它是一個需要標題的圖或影像嗎?除了全域性網站範圍的頁首和頁尾之外,它還應該有自己的頁首和頁尾嗎?等等。

語義元素

這些是大約 100 個可用的語義元素中的一些

另見