HTML 標籤 (Tag)
一份 HTML 文件 (HTML document) 是由一堆標籤 (tag) 結構所組成,所謂的標籤是一個個用尖括弧 <tagname>...</tagname>
包圍住的 HTML 元素 (HTML element),不同的 HTML 標籤包圍著表示不同語意 (semantic) 內容的區塊,而瀏覽器 (web browser) 懂得如何解讀 HTML 標籤來呈現最終的網頁畫面。
HTML 文件本質上只是純文字檔案,一份 HTML 文件會長得像這樣子:
<!DOCTYPE html>
<html>
<head>
<title>網頁標題</title>
</head>
<body>
<h1>這是一級標題</h1>
<p>這是一個段落</p>
</body>
</html>
從上面 HTML 文件可以發現,每一個 HTML 標籤包圍的內容中,可以再包含其他的 HTML 標籤,所以說 HTML 文件的結構是屬於一種階層樹狀 (巢狀) 的結構:
+-------+
| html |
+---+---+
|
+--------+------+
| |
+--+---+ +---+--+
| head | | body |
+--+---+ +---+--+
| |
+---+---+ +----+----+
| title | | |
+-------+ +---+--+ +--+--+
| h1 | | p |
+---+--+ +--+--+
| |
text text
其中 DOCTYPE, <html>, <head>, <body> 是每份 HTML 文件中都會用到的標籤。
HTML 元素 (Element)
我們用不同的 HTML 標籤來描述一個網頁裡面不同的區塊中的內容及語意,例如描述一段文字、一個標題、一張圖片、一部影片或一個超連結等。
例如下面這段文字:
My cat is very cute.
如果我們想讓它自成一個段落,那麼可以在它前後分別加上段落標籤 <p>
,它就變成一個段落元素 (HTML paragraph element) 了:
<p>My cat is very cute.</p>
我們再繼續來說明清楚「標籤」、「內容」和「元素」這幾個名詞實際上分別是指什麼?
標籤 (Tag):
完整的標籤包含:
- 起始標籤 (opening tag):也就是一對尖括弧
< >
裡面再放入元素名稱,如上面例子的名稱 p 表示段落元素<p>
,起始標籤代表這個 HTML 元素從這裡開始。 - 結束標籤 (closing tag):與起始標籤寫法一樣,只是在元素名稱前面多了個斜線
/
,結束標籤代表這個 HTML 元素的尾端,如上面例子的</p>
表示段落元素的結尾。
內容 (Content):
標籤中間包圍的就是這個元素的內容,以上面的例子來說,內容就是 My cat is very cute.
這一句文字。
元素 (Element):
起始標籤 + 內容 + 結束標籤 所組成的區塊我們稱之為一個 HTML 元素,<p>My cat is very cute.</p>
這一整串就表示一個 HTML 段落元素。
巢狀元素 (Nesting Element)
前面有提到 HTML 文件結構是一種巢狀結構,而 HTML 元素裡面可以放進其他的 HTML 元素,我們稱之為巢狀元素 (nesting element)。
例如下面這個句子:
<p>My cat is very cute.</p>
如果我們想 "強調" very cute,我們可以把 very cute 這幾個字加上強調的 strong 標籤 (在瀏覽器中會被顯示為粗體字):
<p>My cat is <strong>very cute.</strong></p>
在瀏覽器中呈現的結果如下:
My cat is very cute.
要特別注意,巢狀標籤是一層接著一層的包覆,不同層的起始和結束標籤間不可以互相錯置。例如下面的寫法是錯誤的:
<p>My cat is <strong>very cute.</p></strong>
因為 strong 標籤是被用在 p 元素的內容中,所以整個 strong 元素包含它的起始和結束標籤,都必須「被包」在 p 標籤裡面,才能形成一個正確的巢狀關係。
空元素 (Empty Element / Void Element)
有些 HTML 元素是不允許有內容的,我們稱之為空元素。
此外,空元素是沒有結束標籤的元素,像是圖片元素 <img>
,例如我們可以用 img 標籤來顯示一張圖片:
<img src="/images/myphoto.png">
我們用 img 標籤的 src 屬性來指定圖檔的所在位址,但 img 元素本身沒有結束標籤,也沒有裡面的內容,因為圖片元素是直接把圖檔嵌在 HTML 網頁上。
HTML 標籤屬性 (Attribute)
HTML 標籤中還有所謂的屬性 (Attribute),屬性是用來提供該標籤的額外資訊,屬性出現在起始標籤中,語法如下:
<tag attribute1="value2" attribute2="value2">
一個屬性是由屬性名稱、等號以及用雙引號包住的屬性值所組成,不同的屬性則是用空格分隔開。
像是前面提到的例子 <img src="/images/myphoto.png">
,其中 src 就是 img 的屬性。
其實,屬性值你可以用雙引號 (double quotes "") 也可以用單引號 (single quotes '') 來包住,單雙引號對 HTML 屬性值是沒有差別的。這特性也可以被利用在如果屬性值中有引號,例如 <option value=""abc">
這樣寫會造成瀏覽器解讀錯誤,誤將 value 當作是空的,但你可以改成這樣 <option value='"abc'>
寫就不會錯了。
HTML 英文字大小寫有差別嗎?
HTML 的「標籤名稱」或「屬性名稱」的寫法是英文大小寫都可以 (case insensitive),但常見且建議是固定使用小寫 (lowercase)。
推薦的標準寫法 <img src="123">
不推薦這種寫法 <IMG SRC="123">
HTML 標籤可以換行嗎?
標籤名稱、屬性名稱和屬性質之間的多餘空白或換行會被瀏覽器忽略,你可以用這個特性來做 HTML code 的編排,讓 HTML 程式碼比較容易閱讀。
例如:
<tag
attribute1="value2"
attribute2 = "value2"
>
和下面這樣子寫是一樣的:
<tag attribute1="value2" attribute2="value2">
但注意雙引號間的屬性值不能亂空白,標籤名稱或屬性名稱之間也不能亂空白,像下面這個就是錯誤的語法:
<t ag attribute1="val ue2" attr ibute2="value2">