Loading AI tools
来自维基百科,自由的百科全书
HTML中,一個HTML元素是HTML檔案的一個基本組成單元。HTML檔案採用採用樹形結構安排HTML元素。更進一步的說,一個HTML元素是一個滿足一項或多項DTD要求的元素。HTML元素可以擁有屬性和內容,可以是標題、段落、連結、列表、嵌入媒體或者其他的任何符合DTD要求的格式。
在HTML語法中,大多數元素編寫一個開始標記和結束標記,與其之間的內容。HTML標記是由元素名稱,包圍於兩側之小於號與大於號之括號所組成。其結束標記擁有一斜線位在小於號之括號後,有別於其起始標記。例如:一個段落是由p
元素所代表,其被寫成
<p>在HTML語法中,大多數元素編寫......</p>
然而,並非所有的此類元素需要結束標記,甚至是開始標記必須存在。某些元素,即所謂的void空元素,並無結束標記。典型的例子即br
元素,其表示一個顯著之換行,像是一首詩或一個住址。一個空元素的行為是預先定義的,並且它不能包含任何內容或其他元素。例如:在電影海底總動員中的牙醫師的地址將被寫成
<p>P. Sherman<br>42 Wallaby Way<br>Sydney</p>
HTML元素可以是容器或者為空。 容器元素 結構如下:
<标记>
)表示一個元素的開始,標記本身還可以包含屬性;
</tag>
。並非所有的元素都要求結束標記,有些元素的結束表示是可有可無的(如p),有些是一定不可以有的(如input)。空元素指僅包含一個標記,該標記既是開始標記同時也是結束標記。空元素可以有任意數量的屬性<标记名 />
。在XHTML規範中,標記中的斜線符號是必須的[1]。要求使用一個單獨標籤開啟與關閉元素。若要指定其為一個空元素,符號"/"包含於標記之結尾(不能與位於結束標記中的開始的符號"/"混淆)。例如:
<p>P. Sherman<br/>42 Wallaby Way<br/>Sydney</p>
英語中有時HTML元素也被稱為「tags」,嚴格的說tag是指元素的開始或者結束標記。
HTML屬性用來指示元素的附加的性質。放在開始標記中。例如:abbr
元素,其表示縮寫,預計一個title
屬性包含其開始標記。將被寫成
<abbr title="abbreviation">abbr.</abbr>
<p … >
class
foo
This is a paragraph.
</p>
<p class="foo">This is a paragraph.</p>
在HTML中,元素(和屬性)名字可以是大寫或者小寫,但在XHTML中,必須是小寫。[2]大寫是舊的用法,並且是HTML規範中說明的方法,但是小寫更為通用。
HTML元素是在自1995年以來發佈的一系列免費開放標準中定義的,最初由IETF以及隨後由W3C制訂。
1990年代的瀏覽器大戰期間,網頁瀏覽器的軟件商開始不斷的添加自訂的元素,有些被後來的標準吸收。並非所有的軟件商都支援這些非標準的元素,一般對於非標準的元素,或者是忽略,或者是導致顯示不正確。
1998年,XML(一種簡化的SGML)引入一種方法,允許任何人開發自己的元素並融合到XHTML檔案中,使用支援XML的瀏覽器(用戶代理)可以瀏覽任意元素。[3]
而後採用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的驗證變得複雜起來,這三種標準分別是:
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模組。)[4]
一個經常導致錯誤理解的原因是不嚴格的使用deprecated(過期)一詞來泛指過期的和無效的,以及今後一段時間過期的不同的狀態。
根據分離原則,HTML的功能在於給一個檔案的內容增加語意和結構的資訊。增加檔案的展示和行為的功能,例如增加CSS stylesheets和圖形來增加檔案的展示功能;通過連結到外部檔案和指令碼增加與用戶互動的行為。User agent也可以根據作者所提供的stylesheet在不同的媒介(顯示器,印表機)上展示不同效果。同時保持語意上的一致。
<html>...</html>
<head>...</head>
<body>...</body>
<base/>
href
及其它連結提供一個基本的url路徑。必須出現在任何參照外部資源的元素之前。在每個HTML檔案中,只允許出現一個base
元素。base
元素沒有內容。其另外一個可選屬性target的值可以為:_blank、_parent、_self、_top、framename,規定頁面中所有的超連結和表單在何處打開;該屬性會被每個具體連結中的target 屬性覆蓋。
<basefont/> (deprecated)
font
元素搭配使用。已經過期,推薦使用CSS.<isindex/> (deprecated)
isindex
既可以出現在檔案頭,也可以出現在檔案體內,但是只能出現一次。需要伺服器端的搜尋引擎的支援。<link/>
<link rel="stylesheet" type="text/css" href="url" title="description_of_style">
[6]<link rel="next" href="url">
head
元素可能包含任何數量之link
元素。該link
元素擁有HTML屬性,但無內容。<meta/>
HTML屬性之其他未提供的資訊。因其共通性,meta
元素指定關聯的key-value pairs。一般情況之下,meta元素傳達關於檔案之隱藏資訊。若干meta標籤可被使用,上述之全部應被巢狀在head元素中。每個 meta元素之特定目的是由其屬性來定義。
meta
元素可指定應經由實際內容之前的網頁伺服器寄送之HTTP標頭,例如:
<meta http-equiv="foo" content="bar">
foo
that has a value bar
.meta
元素指定HTML網頁的name
及關聯的content
HTML 屬性描述方面。為了防止可能發生歧義,一個可選取之第三方屬性:scheme
可被支援於指定一個定義該key及其值的含意之語意框架:例如:
<meta name="foo" content="bar" scheme="DC">
meta
元素辨識其自身為包含foo
元素,包含bar
值,從DC或都柏林核心資源描述框架.<object>...</object>
head
元素中,但也可能用來擷取外部資料,並將之與目前的檔案關聯。<script>...</script>
<style>...</style>
<style type="text/css"> ... </style>
@import
指令:
<style> @import url; </style>
[8]<title>...</title>
在視覺化瀏覽器中,可顯示元素可呈現為區塊或內行。雖然所有元素是檔案序列之一部分,但是區塊元素 出現在其父元素中:
反言之,內行元素被視為檔案文字流之部分;其無法擁有邊距、寬度或高度設置,並且跨行。
區塊元素(或稱區塊層級元素)擁有矩形結構。在預設情況下,這些元素將佔據父元素的整個寬度,因而不允許任何其他元素佔據已被其所佔的同一水平空間。
區塊元素的矩形結構經常稱之為盒模型,並由幾個部分所組成。每個元素包含以下內容:
上述部分僅指CSS彩現的具體實施,並與HTML元素本身無關。
<p>...</p>
<h1>...</h1>
<h2>...</h2>
<h3>...</h3>
<h4>...</h4>
<h5>...</h5>
<h6>...</h6>
<dl>...</dl>
DL
在HTML Tags中已經存在,並且在HTML 2.0中標準化;目前仍在使用。<dt>...</dt>
<dd>...</dd>
<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>
{list-style-type: foo}
。其預設項目符號為一個空心圓。UL
在HTML Tags中已經存在,並且在HTML 2.0中標準化;目前仍在使用。<li>...</li>
<dir>...</dir> (deprecated)
<ul>
替代,故不建議使用。DIR
在HTML Tags中已經存在,並於HTML 2.0中標準化;在HTML 4.0 Transitional中不建議使用;在HTML 4.0 Strict中已失效。<address>...</address>
<blockquote>...</blockquote>
cite
屬性可能提供來源,且必須是完全合格之統一資源標誌符。BLOCKQUOTE
在HTML Internet Draft 1.2中已經存在,並且在HTML 2.0中標準化;目前仍在使用。如需更多資訊,請參見blockquote元素。<center>...</center> (deprecated)
<div>
或其他元素之方式替代,故不建議使用。<del>...</del>
<div>...</div>
<hr/>
<ins>...</ins>
<noscript>...</noscript>
<pre>...</pre>
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>
SCRIPT
本身並非區塊或內行元素;其本身不應全部顯示,但其可包含說明以動態生成區塊或內行內容兩者。行內元素無法直接放置在body
元素中;其必須完全巢狀於區塊及元素中。[12]
<a>...</a>
href
屬性(hypertext reference [1](頁面存檔備份,存於互聯網檔案館)),錨可以成為到文件中另一個部分的連結,也可以通過使用一個外部URL來指向另一個資源(如網頁)。name
或id
屬性,使這個元素成為目標。URL可以通過碎片識別碼連結到這個目標。現在,任何元素都可以通過使用id
屬性來變成一個錨,[2](頁面存檔備份,存於互聯網檔案館)因此<a name="foo">
不再必要。A
在HTML Tags中已經存在,並且在HTML 2.0中標準化;目前仍在使用。<abbr>…</abbr>
<acronym>...</acronym> (deprecated)
abbr
元素類似。(拼音文字中Acronym是指大寫的首字母組合成的詞,比如Hyper-Text Markup Language的Acronym是HTML; Abbreviation的概念更廣泛些,可以是將一個較長的詞後面部分去掉,用剩下的部分表示詞的意思。中文中沒有類似的區別):
<acronym title="Hyper-Text Markup Language">HTML</acronym>
<dfn>…</dfn>
<em>…</em>
<strong>…</strong>
這些與元素主要用於方便顯示電腦軟件編碼和與用戶互動(<code>);顯示原始碼變數(<var>);用戶輸入(<kbd>);以及終端輸出(<samp>)。
<code>…</code>
Code snippet.
<samp>…</samp>
<kbd>…</kbd>
<var>…</var>
視覺效果的元素僅僅對可視瀏覽器起作用,因此不推薦使用,如果可能應該使用層疊樣式表。部分元素在HTML 4 / XHTML 1.0中被宣佈過期或者無效的,其它的在當前的XHTML 2.0草案XHTML 2.0(頁面存檔備份,存於互聯網檔案館)中被定義為無效的。當前的HTML 5草案HTML 5中,b, i和small還是有效的.
<b>…</b>
{font-weight: bold}
。)<strong>...</strong>
在可視的瀏覽器中有相同的效果,但是有更強的語意。<img/>
src
屬性指定圖像的URL。alt
屬性提供圖像的替代文字。IMG由馬克·安德森所提出並實作在NCSA Mosaic網頁瀏覽器[14]。<blink>...</blink> (deprecated)
<marquee>...</marquee> (deprecated)
<!-- A Comment -->
在HTML中的 註解(以及相近的XML, SGML, SHTML. )語法與SGML相同。
不同於其它HTML標籤,註解不支援巢狀結構。
標籤: <!--注解一<!--注解二-->注解三-->
看起來會是這樣 注解一<!--注解二
後面拖着一段沒有被標籤包起來的文字: 注解三-->
註解可以出現在檔案的任何地方,甚至可以在檔案類型宣告之前。
(在<!DOCTYPE HTML>
之前。)
HTML的解釋器會忽略註解,只要它們不在HTML標籤內。
這裏標籤內的意思並非指被一對開始標籤及結束標籤包住的區域內,
而是指在開始標籤內,或結束標籤、空元素標籤內。
然而並非所有瀏覽器、HTML編輯器都與HTML語法完全相容,在某些特殊情況會造成意料之外的結果。 約有5%的瀏覽器、HTML編輯器在處理註解標籤上有缺陷。(其中大部份是IE6 ) 儘管只有少數版本有此問題。
一些有關註解的相容性問題:
style
或script
元素中的內容,有時會以註解的型式存在。<style> ... {comment tags} ...</style>
標籤內的註解顯示在螢幕上。一些HTML編輯器也有相同的問題。