HTML元素

HTML 中，一個 **HTML 元素**是 HTML 檔案的一個基本組成單元。HTML 檔案採用採用樹形結構安排 HTML 元素。更進一步的說，一個 HTML 元素是一個滿足一項或多項 DTD 要求的元素。HTML 元素可以擁有_屬性_和_內容_，可以是標題、段落、連結、列表、嵌入媒體或者其他的任何符合 DTD 要求的格式。

## 概述

### 語法

在 HTML 語法中，大多數元素編寫一個開始標記和結束標記，與其之間的內容。**HTML 標記**係由元素名稱，包圍於兩側之小於號與大於號之括號所組成。其結束標記擁有一斜線位在小於號之括號後，有別於其起始標記。例如：一個段落係由 `p` 元素所代表，其被寫成

然而，並非所有的此類元素_需要_結束標記，甚至是開始標記必須存在。某些元素，即所謂的 _void 空元素_，並無結束標記。典型的例子即 `br` 元素，其表示一個顯著之換行，像是一首詩或一個住址。一個空元素的行為是預先定義的，並且它不能包含任何內容或其他元素。例如：在電影_海底總動員_中的牙醫師的位址將被寫成

HTML 元素可以是_容器_或者為_空_。
**容器元素** 結構如下：

* 一個_開始標記_（`<标记>`）表示一個元素的開始，標記本身還可以包含屬性；
  * 任何數量的屬性（和屬性的值）；
* _內容_（文字和／或子元素）；
* 一個_結束標記_，使用和起始標記完全相同的元素名但前面附加一個斜線字元 `</tag>`。並非所有的元素都要求結束標記，有些元素的結束表示是可有可無的（如 _p_），有些是一定不可以有的（如 _input_）。

**空元素**指僅包含一個標記，該標記既是開始標記同時也是結束標記。空元素可以有任意數量的屬性 `<标记名 />`。在 XHTML 規範中，標記中的斜線符號是_必須_的。要求使用一個單獨標籤開啟與關閉元素。若要指定其為一個空元素，符號 "/" 包含於標記之**結尾**（不能與位於結束標記中的**開始**的符號 "/" 混淆）。例如：

英語中有時 HTML 元素也被稱為「tags」，嚴格的說 _tag_ 是指元素的開始或者結束標記。

HTML 屬性用來指示元素的附加的性質。放在開始標記中。例如：`abbr` 元素，其表示縮寫，預計一個 `title` 屬性包含其開始標記。將被寫成

在 HTML 中，元素（和屬性）名字可以是大寫或者小寫，但在 XHTML 中，必須是小寫。大寫是舊的用法，並且是 HTML 規範中說明的方法，但是小寫更為通用。

### 相關標準

HTML 元素是在自 1995 年以來發布的一系列免費開放標準中定義的，最初由 IETF 以及隨後由 W3C 制訂。

1990 年代的瀏覽器大戰期間，網頁瀏覽器的軟體商開始不斷的添加自訂的元素，有些被後來的標準吸收。並非所有的軟體商都支援這些非標準的元素，一般對於非標準的元素，或者是忽略，或者是導致顯示不正確。

1998 年，XML（一種簡化的 SGML）引入一種方法，允許任何人開發自己的元素並融合到 XHTML 檔案中，使用支援 XML 的瀏覽器（使用者代理）可以瀏覽任意元素。

而後採用 XML 相容的辦法，重新制訂了 HTML 4.01 標準，XHTML 1.0（_擴充的 HTML_）。二者的元素相同，絕大多數情況下，XHTML 1.0 檔案的元素在 HTML 4.0 檔案中是合法的。本文除非另外指出，應用的都是基於 SGML 的 HTML，對於 XHTML 多數情況下仍然適用 _（二者區別見 HTML）_ 。

### 當前的狀態

自從 HTML 第一版以來，已經有數個元素因為過期，不再新的標準中推薦使用或者乾脆刪除。

目前由於並存三種 HTML 4.01／XHTML 1.0 DTD 標準，而使得 HTML 的驗證變得複雜起來，這三種標準分別是：

* **Transitional**，包含過期的元素。該標準制訂的目的是提供一個過渡的時期，使得 HTML 作者可以逐漸適應新的擴充標準；
* **Frameset**，另一種過渡標準，但是允許作者使用 **frameset**；
* **Strict**，符合現代（1999 年以後）的標準。

HTML 第一個標準（HTML 2.0）包含四個過期的元素。其中一個在 HTML 3.2 中被列為無效。所有的四個在 HTML 4.01 Transitional 中都被列為無效，HTML4.01 Transitional 標準此外還將另外十個元素定義為無效。以上這些元素再加兩個在 HTML 4.01 Strict 中同樣被定義為無效。由於 frame 元素在顯示方面的諸多問題以及其功能已經可以由其他元素替代，在未來的標準中不再保留，雖然目前在 Transitional 和 Frameset DTD 中仍然有效。

（嚴格的說，目前的 _XHTML_ 標準 XHTML 1.1（2001）根本不支援 frame。基本上與 XHTML 1.0 Strict 相同，但是又包含了 **Ruby markup** 模組。）

一個經常導致錯誤理解的原因是不嚴格的使用 _deprecated_（過期）一詞來泛指過期的和無效的，以及今後一段時間過期的不同的狀態。

### 展示和行為

根據分離原則，HTML 的功能在於給一個檔案的內容增加語意和結構的資訊。增加檔案的展示和行為的功能，例如增加 CSS stylesheets 和圖形來增加檔案的展示功能；通過連結到外部檔案和指令碼增加與使用者互動的行為。User agent 也可以根據作者所提供的 stylesheet 在不同的媒介（顯示器，印表機）上展示不同效果。同時保持語意上的一致。

## 檔案結構元素

`**<html****>**...**</html>**`

　
: 這是 HTML 檔案的根元素，所有其他的元素均包含在其中。

　
: 在 HTML 2.0 中**標準化**，目前仍然在使用。

`**<head****>**...**</head>**`

　
: 包含 HTML 標題定義、外部、指令碼代碼、格式代碼等處理資訊和元資料。

　
: 在 HTML 2.0 中**標準化**，目前仍然在使用。

　
: （所包含的子元素見檔案頭元素）

`**<body****>**...**</body>**`

　
: 包含 HTML 檔案的內容.

　
: 在 HTML 2.0 中**標準化**，目前仍然在使用。

　
: （所包含的子元素見檔案內容元素）

## 檔案頭元素

`**<base****/>**`

　
: 該元素的屬性 href 的值給檔案中所有的相對的 `href` 及其它連結提供一個**基本**的 **url 路徑。必須出現在任何參照外部資源的元素之前。在每個 HTML 檔案中，只允許出現一個 `base` 元素。`base` 元素沒有內容。其另外一個可選屬性 target 的值可以為：\_blank、\_parent、\_self、\_top、**

framename，規定頁面中所有的超連結和表單在何處打開；該屬性會被每個具體連結中的 target 屬性覆蓋。

　
: 在 _HTML Tags_ 中曾經提到一個開發版的 **BASE** 元素；在 HTML 2.0 中得以**標準化**; 目前沒有變化。

`~~**<basefont****/>**~~ **(deprecated)**`

　
: 指定一個基本的字型，包括字元的大小，字型和顏色，與 `font` 元素搭配使用。已經過期，推薦使用 CSS.

　
: 在 HTML 3.2 中**標準化**；在 HTML 4.0 Transitional 中**過期**；並已於 HTML 4.0 Strict 中**失效**。

`~~**<isindex****/>**~~ **(deprecated)**`

　
: **`isindex`** 既可以出現在檔案頭，也可以出現在檔案體內，但是只能出現一次。需要伺服器端的搜尋引擎的支援。

　
: 出現在檔案頭表示這個檔案是一個可搜尋的索引。在頁面上顯示成一個單行的文字輸入框用來輸入關鍵詞。頁面被提交後，query string 被加到當前的 URL 後面，輸出的檔案搜尋的關鍵字被加亮顯示。一般來說，如果伺服器支援這個功能的話會自行的加入 **isindex**。

　
: **ISINDEX** 在 _HTML Tags_ 出現，在 HTML 2.0 中**標準化**。在 HTML 4.0 Transitional 中**過期**。在 HTML 4.0 Strict 中是無效的元素。

`**<link****/>**`

　
: 指定連結到其他檔案，如 _previous_ 和 _next_ 連結，或替代版本。常見的用途是連結至外部的 CSS 樣式表，使用形式：

　
: `<link rel="stylesheet" type="text/css" href="_url_" title="_description\_of\_style_">`

　
: 較少見但重要之用途是透過使用微格式持續性支援導覽提示。若干常見之關係已被定義，可能透過瀏覽器介面傳達給使用者，而非直接於網頁中。

　
: `<link rel="next" href="_url_">`

　
: 檔案之 `head` 元素可能包含任何數量之 `link` 元素。該 `link` 元素擁有 HTML 屬性，但無內容。

　
: **LINK** 存在於 _HTML Internet Draft 1.2_，且已在 HTML 2.0 中**標準化**；目前沒有變化。

`**<meta****/>**`

　
: 可用於指定關於檔案之額外中繼資料，如作者、出版日期、有效日期、頁面描述、關鍵字，或者透過其他 header 元素及

HTML 屬性之其他未提供的資訊。因其共通性，`meta` 元素指定關聯的 key-value pairs。一般情況之下，meta 元素傳達關於檔案之隱藏資訊。若干 meta 標籤可被使用，上述之全部應被巢狀在 head 元素中。每個 _meta_ 元素之特定目的是由其屬性來定義。

　
: 在一種形式中，`meta` 元素可指定應經由實際內容之前的網頁伺服器寄送之 HTTP 標頭，例如：

　
: `<meta http-equiv="foo" content="bar">`

　
: — this specifies that the page should be served with an HTTP header called `foo` that has a value `bar`.

　
: 在一般形式中，`meta` 元素指定 HTML 網頁的 `name` 及關聯的 `content` HTML 屬性描述方面。為了防止可能發生歧義，一個可選取之第三方屬性：`scheme` 可被支援於指定一個定義該 key 及其值的含意之語意框架：例如：

　
: `<meta name="foo" content="bar" scheme="DC">`

　
: 在本範例中，`meta` 元素辨識其自身為包含 `foo` 元素，包含 `bar` 值，從 DC 或都柏林核心資源描述框架.

　
: 在 HTML 2.0 中**標準化**；目前沒有變化。

`**<object****>**...**</object>**`

　
: 使用於包含泛型物件在檔案標頭中。雖然很少使用在 `head` 元素中，但也可能用來擷取外部資料，並將之與目前的檔案關聯。

　
: 在 HTML 4.0 中**標準化**；目前沒有變化。

`**<script****>**...**</script>**`

　
: 可作為一個容器用於指令碼說明或連結至外部指令碼，包含可選取之 `src` 屬性。此外，使用於檔案主體中以動態生成兩個區塊或內聯內容。

　
: 在 HTML 3.2 中**標準化**；目前沒有變化。

`**<style****>**...**</style>**`

　
: 指定檔案的 CSS 樣式，其形式通常為：

　
: `<style type="text/css"> ... </style>`

　
: 既可作為一個容器之樣式說明，亦可連結至外部 CSS 樣式表，例如，在 CSS 中，與表單中的 `@import` 指令：

　
: `<style> @import _url_; </style>`

　
: 在 HTML 3.2 版本中**標準化**；目前沒有變化。

`**<title****>**...**</title>**`

　
: 定義檔案標題。在每個 HTML 及 XHTML 檔案中為需求的。使用者代理可以不同方式使用標題，例如：
* 網頁瀏覽器通常將之顯示在標題列中，當視窗開啟時，或者（在適用的情況）顯示在工作列中，當視窗最小化時。
* 當儲存該頁面時可為預設檔案名稱。
* 搜尋引擎之網路編目程式可能會特別注意在標題中使用的文字。

　
: `title` 元素不能包含其他元素，僅文字。只有一種 `title` 元素在檔案中被允許。

　
: **TITLE** 存在於 _HTML 標籤_，並在 HTML 2.0 中**標準化**；目前沒有變化。

## 檔案內容元素

在視覺化瀏覽器中，可顯示元素可呈現為_區塊_或_內行_。雖然所有元素是檔案序列之一部分，但是區塊元素 出現在其父元素中：

* 作為不跨行之矩形物件；
* 使用區塊邊距，其寬度及高度內容可在周邊元素中被單獨設定。

反言之，內行元素被視為檔案文字流之部分；其無法擁有邊距、寬度或高度設定，並且跨行。

### 區塊元素

區塊元素（或稱區塊層級元素）擁有矩形結構。在預設情況下，這些元素將占據父元素的整個寬度，因而不允許任何其他元素佔據已被其所占的同一水平空間。

區塊元素的矩形結構經常稱之為盒模型，並由幾個部分所組成。每個元素包含以下內容：

* 一個塊元素的**內容（content）** 是放置在一個塊元素的開啟和關閉標記之間的實際文字（或其他媒體）。
* 一個塊元素的**留白或稱填充（padding）** 師元素邊框與元素內容之間的空間。其仍構成上述塊元素的組成部份。padding 也是塊元素在物理上的一部分。不應被用於建立兩個塊元素之間的空白。任何背景樣式分配到塊元素，例如背景圖像或色彩，將在 padding 內可見。增加塊元素的 padding 的尺寸，則將增加塊元素所占的尺寸。
* 一個塊元素的**邊框（border）** 是元素的絕對末端，並圍成塊的周圍。邊框之厚度的增長會增加塊元素尺寸。
* 一個塊元素的**邊距或稱外邊距（margin）** 是環繞塊元素周圍之空白。任何其他元素之 content、padding 及 border 將不允許輸入該區域，除非迫於一些進階的 CSS 布局。使用多數的標準 DTD，margin 在不同元素的左邊和右邊將互相推離。另一方面，margin 在元素的上方及下方，將不堆疊或相互交融。這意味著位於該元素之間的空白將與較大的 margin 一樣大。

上述部分僅指 CSS 彩現的具體實施，並與 HTML 元素本身無關。

#### 基本文字

`**<p****>**...**</p>**`

　
: 建立一段落，也許為最常見之區塊層級元素。

　
: `P` 在 _HTML Tags_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

`**<h1****>**...**</h1>**`
`**<h2****>**...**</h2>**`
`**<h3****>**...**</h3>**`
`**<h4****>**...**</h4>**`
`**<h5****>**...**</h5>**`
`**<h6****>**...**</h6>**`

　
: 不同層級之 section 標題。`<h1>` 界定為最高層級標題，`<h2>` 為下一層級（次級 section），`<h3>` 又低於上一層級，依此類推直到 `<h6>`。有時其又統稱為 `<h_n_>` 標記，_n_ 表示任何有效之層級標題。

　
: 多數視覺化瀏覽器預設將標題顯示為大型粗體字，雖然其可被 CSS 覆蓋。事實上，Heading 元素並非只用於建立大型字或粗體字，其_不應_使用於顯示樣式化文字。反言之，其描述了檔案之結構和組織。部分程式利用其產生輪廓及表格內容。

　
: Headings 在 _HTML Tags_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

#### 列表

`**<dl****>**...**</dl>**`

　
: **定義列表**（Definition List）是一種特殊列表，通常包含一系列「術語」及其「定義」。定義列表組成的名稱 - 值組（先前至 HTML5 定義成一個定義清單，並在早期版本之 HTML5 被稱之為關聯清單）。定義列表之目的為「術語及定義、中繼資料主題和值、問題及答案，或者名稱 - 值資料的任何其他群組」之群組。

　
: `DL` 在 _HTML Tags_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

`**<dt****>**...**</dt>**`

　
: 在定義列表（先前定義術語在定義清單中）中的名稱。

　
: `DT` 在 _HTML Tags_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

`**<dd****>**...**</dd>**`

　
: 定義列表（先前的一個術語之定義，在定義清單中）中的值。

　
: `DD` 在 _HTML Tags_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

`**<ol****>**...**</ol>**`

　
: 有排序（枚舉）之編號清單。`type` 元素可用於指定排序類型，但 CSS 樣式表提供了更多控制：`{list-style-type: _foo_}`。其預設為阿拉伯數字編號。若要使用 `type` 屬性，請使用 `<ol type="_foo_">`，以下列項目之一取代 `_foo_`：

* `A` 表示 A, B, C...
* `a` 表示 a, b, c...
* `I` 表示 I, II, III...
* `i` 表示 i, ii, iii...
* `1` 表示 1, 2, 3...

　
: `OL` 在 _HTML Internet Draft 1.2_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

`**<ul****>**...**</ul>**`

　
: 未排序（項目符號）清單。CSS 樣式表可用於指定其項目符號：`{list-style-type: foo}`。其預設項目符號為一個空心圓。

　
: `UL` 在 _HTML Tags_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

`**<li****>**...**</li>**`

　
: 在排序 (**ol**) 或未排序 (**ul**) 清單中之列表項目。

　
: `LI` 在 _HTML Tags_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

`~~**<dir****>**...**</dir>**~~ **(deprecated)**`

　
: 目錄清單。該元素之原始目的從未廣泛支援；已被 `<ul>` 替代，故不建議使用。

　
: `DIR` 在 _HTML Tags_ 中已經存在，並於 HTML 2.0 中**標準化**；在 HTML 4.0 Transitional 中**不建議使用**；在 HTML 4.0 Strict 中**已失效**。

#### 其他區塊元素

`**<address****>**...**</address>**`

　
: 檔案作者之聯絡資訊。

　
: `ADDRESS` 在 _HTML Tags_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

`**<blockquote****>**...**</blockquote>**`

　
: 一個區塊層級參照（blockquote），用於當 quotation 包含區塊層級元素，如段落。`cite` 屬性可能提供來源，且必須是完全合格之統一資源標誌符。

　
: 區塊 quotation 的演示文稿在視覺化瀏覽器中經常從其兩個 margin 縮進之。

　
: `BLOCKQUOTE` 在 _HTML Internet Draft 1.2_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。如需更多資訊，請參見 blockquote 元素。

`~~**<center****>**...**</center>**~~ **(deprecated)**`

　
: 建立一個區塊層級之置中對齊區域。已由使用 CSS 樣式表定義置中對齊 `<div>` 或其他元素之方式替代，故不建議使用。

　
: 在 HTML 3.2 中**標準化**。

`**<del****>**...**</del>**`

　
: 標記內容中已刪除的 section。該元素亦使用為 _inline_。

　
: 在 HTML 4.0 中**標準化**；目前仍在使用。

`**<div****>**...**</div>**`

　
: 一個區塊層級之邏輯區。沒有語意的通用元素用於區分檔案的 section，通常為目的，例如由 CSS 樣式表或 DOM 調用來控制之演示文稿或行為。

　
: 在 HTML 3.0 Drafts 中出現；在 HTML 3.2 中**標準化**；目前仍在使用。

`**<hr****/>**`

　
: 水平線。表象規則亦可被 CSS 樣式表繪製。

　
: 在 HTML 2.0 中**標準化**；目前仍在使用。

`**<ins****>**...**</ins>**`

　
: 標記一個已插入內容之 section。該元素亦使用為 _inline_。

　
: 在 HTML 4.0 中**標準化**；目前仍在使用。

`**<noscript****>**...**</noscript>**`

　
: 指令碼的替代內容。不同於**指令碼（script）** ，其只能作為區塊元素。

　
: 在 HTML 4.0 中**標準化**；目前仍在使用。

`**<pre****>**...**</pre>**`

　
: 表示是_預先格式化_的文字。在元素內的文字通常會被顯示為等寬字型，就如同是在文字檔案中的文字一樣（參見 ASCII 藝術）。儘管瀏覽器在其他的 HTML 元素中會忽略空白字元，但在 `pre` 中，空白會被視為是作者故意為之而被呈現出來。（在 CSS 的屬性：`{white-space: pre; font-family: mono-space;}`，其他的元素也可以相同的方式呈現。）該元素可包含任何 inline 元素，但下列除外：影像（`IMG`）、物件（`OBJECT`）、大型字（`BIG`）、小型字（`SMALL`）、上標（`SUP`）及下標（`SUB`）。

　
: `PRE` 在 _HTML Internet Draft 1.2_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

`**<script****>**...**</script>**`

　
: 在檔案中放置指令碼。在 head 中以及在 inline 內容中也具有效果。

　
: 注意：`SCRIPT` 本身並非區塊或內行元素；其本身不應全部顯示，但其可包含說明以動態生成區塊或內行內容兩者。

　
: 在 HTML 3.2 中**標準化**；目前仍在使用。

### 行內元素

行內元素無法直接放置在 `body` 元素中；其必須完全巢狀於區塊及元素中。

#### 錨

`**<a****>**...**</a>**`

　
: 錨元素之所以稱為「錨」，是因為網頁設計者可以用它們來將 URL 和網頁上的一些文字「繫」（anchor）在一起。當使用者在瀏覽器中檢視網頁時，他們可以通過點擊文字來啟用連結，以存取連結中 URL 指向的頁面。

　
: 在 HTML 中，錨既可以是超級連結的來源，也可以是_目標_端。

　
: 通過使用 `href` 屬性（hypertext reference [1]（頁面存檔備份，存於網際網路檔案館）），錨可以成為到文件中另一個部分的連結，也可以通過使用一個外部 URL 來指向另一個資源（如網頁）。

　
: 或者（也可以是同時），通過使用 `name` 或 `id` 屬性，使這個元素成為目標。URL 可以通過碎片識別碼連結到這個目標。現在，任何元素都可以通過使用 `id` 屬性來變成一個錨，[2]（頁面存檔備份，存於網際網路檔案館）因此 `<a name="foo">` 不再必要。

　
: `A` 在 _HTML Tags_ 中已經存在，並且在 HTML 2.0 中**標準化**；目前仍在使用。

#### 短語元素

##### 常用的短語元素

`**<abbr****>**…**</abbr>**`

　
: 表示本元素是一個縮寫，title 屬性中可以包含全稱：

　
: `<abbr title="微型计算机">微机</abbr>`

　
: 在 HTML 4.0 中**標準化**，目前仍然在使用。

`~~**<acronym****>**...**</acronym>**~~ **(deprecated)**`

　
: 與 `abbr` 元素類似。（拼音文字中 Acronym 是指大寫的首字母組合成的詞，比如 Hyper-Text Markup Language 的 Acronym 是 HTML; Abbreviation 的概念更廣泛些，可以是將一個較長的詞後面部分去掉，用剩下的部分表示詞的意思。中文中沒有類似的區別）:

　
: `<acronym title="Hyper-Text Markup Language">HTML</acronym>`

　
: 在 HTML 4.0 中**標準化**，目前仍然在使用，在 HTML5 中**不支援**。

`**<dfn****>**…**</dfn>**`

　
: 表示本元素是一個詞條的定義。

　
: **DFN** 在 _HTML Internet Draft 1.2_ 中已經存在，在 HTML 3.2 中完全**標準化**，目前仍然在使用。

`**<em****>**…**</em>**`

　
: _強調_本元素，傳統上顯示為斜體。

　
: **EM** 在 _HTML Internet Draft 1.2_ 中已經存在，在 HTML 2.0 中完全**標準化**，目前仍然在使用。

`**<strong****>**…**</strong>**`

　
: **加重**一個詞條，（傳統上顯示為粗體）。

　
: 有助聽功能的瀏覽器可能會使用不同的聲音來表述加重的詞。

　
: **STRONG** 在 _HTML Internet Draft 1.2_ 已經存在，在 HTML 2.0 中完全**標準化**，目前仍然在使用。

##### 電腦術語元素

這些與元素主要用於方便顯示電腦軟體編碼和與使用者互動（<code>）；顯示原始碼變數（<var>）；使用者輸入（<kbd>）；以及終端輸出（<samp>）。

`**<code****>**…**</code>**`

　
: 顯示一段代碼。通常用等寬字型顯示：`Code snippet.`

　
: **CODE** 在 _HTML Internet Draft 1.2_ 中出現，並且在 HTML 2.0 最終**標準化**； 目前仍在使用。

`**<samp****>**…**</samp>**`

　
: 顯示一段程式或指令碼輸出的樣本。

　
: **SAMP** 在 _HTML Internet Draft 1.2_ 中出現，並且在 HTML 2.0 最終**標準化**； 目前仍在使用。

`**<kbd****>**…**</kbd>**`

　
: 鍵盤 - 顯示使用者輸入的文字。

　
: **KBD** 在 _HTML Internet Draft 1.2_ 中出現，並且在 HTML 2.0 最終**標準化**； 目前仍在使用。

`**<var****>**…**</var>**`

　
: 顯示一個變數。

　
: **VAR** 在 _HTML Internet Draft 1.2_ 中出現，並且在 HTML 2.0 最終**標準化**； 目前仍在使用。

##### 視覺效果

視覺效果的元素僅僅對可視瀏覽器起作用，因此不推薦使用，如果可能應該使用層疊樣式表。部分元素在 HTML 4 / XHTML 1.0 中被宣布過期或者無效的，其它的在當前的 XHTML 2.0 草案 XHTML 2.0（頁面存檔備份，存於網際網路檔案館）中被定義為無效的。當前的 HTML 5 草案 HTML 5 中，**b**, **i** 和 **small** 還是有效的.

`**<b****>**…**</b>**`

　
: 在可能的情況下，將字型設定成**粗體**。（等效的 CSS 是：`{font-weight: bold}`。）`<strong>...</strong>` 在可視的瀏覽器中有相同的效果，但是有更強的語意。

　
: **B** 在 _HTML Internet Draft 1.2_ 中定義，並且在 HTML 2.0 中**標準化**，目前仍在使用。

### 圖形和物件

`**<img****/>**`

　
: `src` 屬性指定圖像的 URL。`alt` 屬性提供圖像的替代文字。IMG 由馬克・安德森所提出並實作在 NCSA Mosaic 網頁瀏覽器。

　
: **IMG** 在 _HTML Internet Draft 1.2_ 中定義，並且在 HTML 2.0 中**標準化**，目前仍在使用。

## 非標準元素

`~~**<blink****>**...**</blink>**~~ **(deprecated)**`

　
: 文字閃爍特效。**BLINK** 源自於 Netscape Navigator。由於該特效可能會對急性光過敏症患者產生負面影響，在 HTML 2.0 後被列為過期或無效。

`~~**<marquee****>**...**</marquee>**~~ **(deprecated)**`

　
: 文字滾動特效。**MARQUEE** 源自於 Internet Explorer。由於該特效可能會對急性光過敏症患者產生負面影響，在 HTML 4.01 後被列為過期或無效。

## 註解

**`<!-- A Comment -->`**

在 HTML 中的 註解（以及相近的 XML, SGML, SHTML. ）語法與 SGML 相同。

不同於其它 HTML 標籤，註解不支援巢狀結構。

標籤： `<!--注解一<!--注解二-->注解三-->` 看起來會是這樣 `注解一<!--注解二` 後面拖著一段沒有被標籤包起來的文字： `注解三-->`

註解可以出現在檔案的任何地方，甚至可以在檔案類型宣告之前。
（在 `<!DOCTYPE HTML>` 之前。）
HTML 的解釋器會忽略註解，只要它們不在 HTML 標籤**內**。
這裡標籤**內**的意思並非指被一對開始標籤及結束標籤包住的區域內，
而是指在開始標籤**內**，或結束標籤、空元素標籤**內**。

然而並非所有瀏覽器、HTML 編輯器都與 HTML 語法完全相容，在某些特殊情況會造成意料之外的結果。
約有 5% 的瀏覽器、HTML 編輯器在處理註解標籤上有缺陷。（其中大部份是 IE6. ）
僅管只有少數版本有此問題。

一些有關註解的相容性問題：

* 在檔案類型宣告之前的註解、除了空白以外的字元會使 IE6 進入怪異模式。
* 為了相容在 1995 年前的瀏覽器，在 `style` 或 `script` 元素中的內容，有時會以註解的型式存在。
* BlueGriffon HTML 編輯器 1.7.x 版本，會將不在 `<style> ... {comment tags} ...</style>` 標籤內的註解顯示在螢幕上。一些 HTML 編輯器也有相同的問題。

## 參考文獻

### 參照

### 來源

## 外部連結

* HTML 4.01（1999 年 12 月 24 日）： 元素（頁面存檔備份，存於網際網路檔案館）和屬性（頁面存檔備份，存於網際網路檔案館）
* HTML5（2014 年 10 月 28 日）：元素和屬性（頁面存檔備份，存於網際網路檔案館）