HTML元信息類標簽

所謂元信息,是指描述自身的信息,元信息類標簽,就是 HTML 用于描述文檔自身的一類標簽,它們通常出現在 head 標簽中,一般都不會在頁面被顯示出來(與此相對,其它標簽,如語義類標簽,描述的是業務)。
元信息多數情況下是給瀏覽器、搜索引擎等機器閱讀的,有時候這些信息會在頁面之外顯示給用戶,有時候則不會。

1.head

是作為盛放其它語義類標簽的容器使用。
head 標簽規定了自身必須是 html 標簽中的第一個標簽,它的內容必須包含一個 title,并且最多只能包含一個 base。如果文檔作為 iframe,或者有其他方式指定了文檔標題時,可以允許不包含 title 標簽。

title 標簽

title 標簽表示文檔的標題,我們的語義類標簽中也有一組表示標題的標簽:h1-h6。
heading 和 title 兩個英文單詞意義區分十分微妙,實際使用中,兩者確實有一定區別。
在 HTML 標準中,特意討論了這個問題。
我們思考一下,假設有一個介紹蜜蜂跳舞求偶儀式的科普頁面,我們試著把以下兩個文字分別對應到 title 和 h1。
蜜蜂求偶儀式舞蹈
舞蹈
在聽 / 看正確答案前,你不妨先想想,自己的答案是什么呢?
為什么?
好了,思考之后,我們來看看正確答案。
正確答案是“蜜蜂求偶儀式舞蹈”放入 title,“舞蹈”放入 h1。我來講一講為什么要這樣放呢?這主要是考慮到 title 作為元信息,可能會被用在瀏覽器收藏夾、微信推送卡片、微博等各種場景,這時侯往往是上下文缺失的,所以 title 應該是完整地概括整個網頁內容的。
而 h1 則僅僅用于頁面展示,它可以默認具有上下文,并且有鏈接輔助,所以可以簡寫,即便無法概括全文,也不會有很大的影響。

base 標簽

base 標簽實際上是個歷史遺留標簽。它的作用是給頁面上所有的 URL 相對地址提供一個基礎。base 標簽最多只有一個,它改變全局的鏈接地址,它是一個非常危險的標簽,容易造成跟 JavaScript 的配合問題,所以在實際開發中,我比較建議你使用 JavaScript 來代替 base 標簽。

meta 標簽

meta 標簽是一組鍵值對,它是一種通用的元信息表示標簽。
在 head 中可以出現任意多個 meta 標簽。
一般的 meta 標簽由 name 和 content 兩個屬性來定義。
name 表示元信息的名,content 則用于表示元信息的值。它基本用法是下面這樣的,你也可以自己動手嘗試一下:

  <meta name=application-name content="lsForums">

這個標簽表示頁面所在的 web-application,名為 IsForums。
這里的 name 是一種比較自由的約定,HTTP 標準規定了一些 name 作為大家使用的共識,也鼓勵大家發明自己的 name 來使用。
除了基本用法,meta 標簽還有一些變體,主要用于簡化書寫方式或者聲明自動化行為。下面我就挑幾種重點的內容來分別講解一下。

具有 charset 屬性的 meta

從 HTML5 開始,為了簡化寫法,meta 標簽新增了 charset 屬性。添加了 charset 屬性的 meta 標簽無需再有 name 和 content。

  <meta charset="UTF-8" >

charset 型 meta 標簽非常關鍵,它描述了 HTML 文檔自身的編碼形式。因此,我建議這個標簽放在 head 的第一個。


<html>
<head>
<meta charset="UTF-8">
……

這樣,瀏覽器讀到這個標簽之前,處理的所有字符都是 ASCII 字符,眾所周知,ASCII 字符是 UTF-8 和絕大多數字符編碼的子集,所以,在讀到 meta 之前,瀏覽器把文檔理解多數編碼格式都不會出錯,這樣可以最大限度地保證不出現亂碼。
一般情況下,HTTP 服務端會通過 http 頭來指定正確的編碼方式,但是有些特殊的情況如使用 file 協議打開一個 HTML 文件,則沒有 http 頭,這種時候,charset meta 就非常重要了。

具有 http-equiv 屬性的 meta

具有 http-equiv 屬性的 meta 標簽,表示執行一個命令,這樣的 meta 標簽可以不需要 name 屬性了。例如,下面一段代碼,相當于添加了 content-type 這個 http 頭,并且指定了 http 編碼方式。

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

除了 content-type,還有以下幾種命令:
content-language 指定內容的語言;
default-style 指定默認樣式表;
refresh 刷新;
set-cookie 模擬 http 頭 set-cookie,設置 cookie;
x-ua-compatible 模擬 http 頭 x-ua-compatible,聲明 ua 兼容性;
content-security-policy 模擬 http 頭 content-security-policy,聲明內容安全策略。

name 為 viewport 的 meta

實際上,meta 標簽可以被自由定義,只要寫入和讀取的雙方約定好 name 和 content 的格式就可以了。
我們來介紹一個 meta 類型,它沒有在 HTML 標準中定義,卻是移動端開發的事實標準:它就是 name 為 viewport 的 meta。
這類 meta 的 name 屬性為 viewport,它的 content 是一個復雜結構,是用逗號分隔的鍵值對,鍵值對的格式是 key=value。
例如:

<meta name="viewport" content="width=500, initial-scale=1">

這里只指定了兩個屬性,寬度和縮放,實際上 viewport 能控制的更多,它能表示的全部屬性如下:
width:頁面寬度,可以取值具體的數字,也可以是 device-width,表示跟設備寬度相等。
height:頁面高度,可以取值具體的數字,也可以是 device-height,表示跟設備高度相等。
initial-scale:初始縮放比例。
minimum-scale:最小縮放比例。
maximum-scale:最大縮放比例。
user-scalable:是否允許用戶縮放。
對于已經做好了移動端適配的網頁,應該把用戶縮放功能禁止掉,寬度設為設備寬度,一個標準的 meta 如下:


<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
其它預定義的 meta

在 HTML 標準中,還定義了一批 meta 標簽的 name,可以視為一種有約定的 meta,我在這里列出來,你可以簡單了解一下。
application-name:如果頁面是 Web application,用這個標簽表示應用名稱。
author: 頁面作者。
description:頁面描述,這個屬性可能被用于搜索引擎或者其它場合。
generator: 生成頁面所使用的工具,主要用于可視化編輯器,如果是手寫 HTML 的網頁,不需要加這個 meta。
keywords: 頁面關鍵字,對于 SEO 場景非常關鍵。
referrer: 跳轉策略,是一種安全考量。
theme-color: 頁面風格顏色,實際并不會影響頁面,但是瀏覽器可能據此調整頁面之外的 UI(如窗口邊框或者 tab 的顏色)。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • head 標簽 首先我們先來了解一下 head 標簽,head 標簽本身并不攜帶任何信息,它主要是作為盛放其它語義...
    littleyu閱讀 420評論 0 1
  • 什么是元信息類標簽? 所謂元信息,是指描述自身的信息,元信息類標簽,就是 HTML 用于描述文檔自身的一類標簽,它...
    歡欣的膜笛閱讀 726評論 0 0
  • 一、meta標簽 meta是html語言head區的一個輔助性標簽。也許你認為這些代碼可有可無。其實如果你能夠用好...
    木和土的杜閱讀 1,627評論 0 0
  • HTML基礎 本文包括 HTML基本知識與結構 HTML常見標簽 標簽寫法與嵌套的討論 HTML、CSS、java...
    廖少少閱讀 2,115評論 2 21
  • 「元信息類標簽」head 里面的標簽,諸如 title, meta, style, link, base 這些,它...
    MercuryWang閱讀 210評論 0 3