[HTML]dd 裡面不能故放入dd標籤
Contents
在除錯一個版面問題時花了將近一整天,最後發現是在 <dd> 標籤內部又嵌套了另一個 <dd> 標籤,這是 HTML 規範不允許的寫法。記錄一下正確用法,避免再踩同樣的雷。
<dl>、<dt>、<dd> 的正確結構
<dl>(Description List)是 HTML 的定義列表元素,結構規則如下:
<dl>:定義列表的容器<dt>:定義術語(Definition Term)<dd>:定義描述(Definition Description),緊跟在<dt>之後
|
|
<dd> 不能包含 <dd>
根據 HTML 規範,<dd> 的內容模型(Content Model)是 Flow Content,不包含 <dt> 或 <dd> 本身。以下是錯誤的寫法:
|
|
正確的巢狀列表做法
如果需要在定義項目下列出多個子項目,應該在 <dd> 內使用普通的列表元素:
|
|
一個 <dt> 對應多個 <dd>
HTML 規範允許一個術語對應多個描述,以下是合法的:
|
|
常見錯誤整理
| 錯誤寫法 | 說明 |
|---|---|
<dd> 內嵌套 <dd> |
不符合規範,瀏覽器解析行為不可預期 |
<dd> 內嵌套 <dt> |
同樣不合法 |
<dl> 內直接放文字 |
必須透過 <dt> 或 <dd> 包裝 |
<dt> 和 <dd> 不成對 |
語意上不完整,雖不會報錯但不建議 |
瀏覽器對於不合法的 HTML 通常會嘗試自動修正,但修正結果因瀏覽器而異,容易造成排版跑版且難以除錯。養成寫合法 HTML 的習慣,可以省去很多排查時間。