iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Modern Web

意識界歸來的前端系列 第 14

哪些標籤不適合設置文字內容?

  • 分享至 

  • xImage
  •  

此篇主要會透過介紹 Text content、Inline text semantics 來理解哪些標籤適合存放文字內容以及哪些標籤不適合,並演示幾個常見比較不好的寫法範例。

  • li 標籤使用 p 標籤包裹文字內容
  • footer 標籤設置文字內容

Text content

MDN-Text content:「Use HTML text content elements to organize blocks or sections of content placed between the opening and closing tags. Important for accessibility and SEO, these elements identify the purpose or structure of that content.」

白話文:「使用 text content 元素來組織放在 <body></body> 之間的區塊或內容,這對於 AccessibilitySEO 來說很重要,這些元素確定了該內容的目地或結構。」

常見的元素有下列幾個:
<div><ul><li><p><hr><figure><ol><dl>,其餘的可以到 MDN 查看。


Inline text semantics

先說這邊的 Inline text 不等於 Inline elements,只是有些共同的標籤。

MDN-Inline text semantics:「Use the HTML inline text semantic to define the meaning, structure, or style of a word, line, or any arbitrary piece of text.」

白話文:「使用 inline text 語意來定義結構含義文字樣式任意一段文字。」

常見的元素有下列幾個:
<span><a><br><code><i><b><mark><small>,其餘的可以到 MDN 查看。

看完上常見元素應該會比較理解上面提到的「結構、含義、行、文字樣式、任意一段文字」分別代表的含義了。

下方舉幾個例子:

  • 行,可以對應 br 標籤
  • 含義,可以對應 code 標籤
  • 文字樣式,可以對應 i 標籤、b 標籤

簡單來說,屬於 Text content 或 Inline text semantics 兩者元素的標籤,都可以直接設置文字內容,當元素不屬於這兩者時,會建議在符合語意的情況下添加一層 Text content 或 Inline text semantics 元素來包裹住文字內容。

下方介紹兩種常見的錯誤範例。


li 標籤使用 p 標籤包裹文字內容

下方演示常見的錯誤用法:ul > li 列表結構中,使用 p 標籤來包裹文字內容。

<!-- 不建議的寫法 -->
<h2>鐵人賽「意識界歸來的前端」系列</h2>
<ul>
    <li><p>圖片取代文字 background、img 差異</p></li>
    <li><p>多個 h1 標籤</p></li>
    <li><p>3 件關於網站架構、網站閱讀性的小事</p></li>
</ul>

因為 li 標籤本身屬於 Text content 元素,因此可以直接設置文字內容,不需要再多包一層 p 標籤。

<!-- 建議的寫法 -->
<h2>鐵人賽「意識界歸來的前端」系列</h2>
<ul>
    <li>圖片取代文字 background、img 差異</li>
    <li>多個 h1 標籤</li>
    <li>3 件關於網站架構、網站閱讀性的小事</li>
</ul>

footer 標籤設置文字內容

下方演示常見 footer 標籤內直接設置文字內容的範例。

<!-- 不建議的寫法 -->
<footer>
    這是一段文字內容。
</footer>

不建議上述的寫法,雖然沒有明確的規範說不行,但下方從其他方面來看到為什麼不建議。

因為 footer 標籤 不屬於 Text content 或 Inline text semantics 元素之一,且通常會作為父層容器用來區分不同的內容,因此建議 footer 內可以再透過一個 p 標籤或 span 標籤來將文字內容包裹住。

<!-- 建議的寫法 -->
<footer>
    <p>這是一段文字內容。</p>
</footer>

conclusion

當標籤 不屬於 Text content 或 Inline text semantics 元素之一時,就無法直接在標籤內設置文字內容,解法就是在子層 符合語意 的情況下,添加 Text contentInline text semantics 元素來包裹住文字內容。


reference


上一篇
那些關於 p 標籤、ul 標籤的坑
下一篇
如何使用無語化標籤 div、span
系列文
意識界歸來的前端30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言