NEWSCAN網頁設計公司LOGO
數位設計學堂背景
數位設計學堂Q & A

網頁已經進入新時代,好網站不再需要花大錢!

有網頁設計需求請與我們聯絡,NEWSCAN設計提供多種方案供您選擇。

  • #效益好≠比較貴
  • #優質附加服務,提升網站效益
  • #妥善規劃,提供多種方案選擇
線上諮詢
數位設計學堂 - 網站開發技術

HTML5 全標籤語法百科:專業應用速查指南與深度解析

執行摘要:現代 Web 語意的架構工程

HTML (HyperText Markup Language) 的演進已從單純的文件標記語言,轉變為支撐複雜網頁應用程式(Web Applications)的結構骨幹。隨著 HTML5 Living Standard 的持續迭代,現代前端開發不再僅止於「讓畫面顯示出來」,而是必須兼顧語意精確性(Semantic Precision)、可訪問性(Accessibility/a11y)、搜尋引擎優化(SEO) 以及 關鍵渲染路徑(Critical Rendering Path) 的效能優化。

本報告旨在提供一份專家級的 HTML5 標籤百科,將超過 100 個標準元素依據功能邏輯進行嚴謹分類。每一章節不僅提供標籤的定義與屬性速查,更深入探討其在 DOM(文件物件模型)中的行為、隱式 ARIA 角色(Implicit ARIA Roles)、瀏覽器解析機制,以及 2025 年以後的開發最佳實踐。本報告嚴格採用專業技術敘事風格,旨在為資深開發者、架構師及技術負責人提供權威參考。

元數據(Metadata)元素定義了文件存在的環境。這些元素通常不直接向使用者渲染可見內容,而是負責協調文件與外部資源的關係、定義字元編碼、控制瀏覽器行為以及提供機器可讀的資訊給搜尋引擎與社群爬蟲。這些標籤的配置直接影響頁面的安全性(如 CSP)、效能(如 Preload)與 SEO 排名。

1.1 根源上下文 (The Root Context)

所有 HTML 文件皆始於根元素。正確配置根元素是確保後續 CSS 繼承與輔助科技(Assistive Technology)正常運作的基礎。

標籤 完整定義 DOM 介面 隱式 ARIA 角色 核心屬性與注意事項
<html> HTML 文件的根元素 (Root Element)。除了 <!DOCTYPE> 之外,所有其他元素都必須是此元素的後代。 HTMLHtmlElement document
  • lang: 絕對必要屬性。定義頁面的主要自然語言(如 zh-TW),影響螢幕閱讀器的發音引擎選擇、CSS 字型渲染(如 CJK 標點符號處理)以及瀏覽器的翻譯提示。
  • dir: 定義文字方向(ltr 或 rtl)。
深度解析:雖然現代瀏覽器在省略 <html> 標籤時仍能透過「標籤省略規則(Tag Omission Rules)」自動補全 DOM,但在專業開發中顯式宣告是必須的。特別是 lang 屬性的缺失是 WCAG 2.1 標準中的常見失敗點,會導致螢幕閱讀器以錯誤的語音合成引擎朗讀內容(例如用英文口音朗讀中文),嚴重影響可訪問性。

1.2 文件元數據 (Document Metadata)

這些元素主要駐留於 <head> 容器內,負責在內容繪製(Paint)之前建構瀏覽環境。

<head>

定義:包含關於文件的機器可讀資訊(Metadata)的容器。

載入順序優化:<head> 內的標籤順序對效能至關重要。

  • meta charset:應置於最前,確保瀏覽器在解析後續位元組前已知曉編碼,避免重新緩衝(Re-buffering)。
  • meta viewport:觸發移動端渲染邏輯。
  • title:儘早出現以利瀏覽器分頁顯示。
  • link rel="preconnect/preload":建立早期連線。
  • style / script:阻塞性資源應根據需求排序。

<title>

定義:定義文件標題,顯示於瀏覽器標題列或分頁標籤上。

SEO 戰略價值:這是單一頁面中權重最高的 On-page SEO 因素。標題應精確概括內容,並在 55-60 字元內包含核心關鍵字。

限制:內部只能包含純文字,任何 HTML 標籤皆會被忽略並視為文字顯示。

<base>

定義:為頁面上所有相對 URL 指定基礎 URL 和/或預設目標(Target)。

風險評估:在單頁應用程式(SPA)或依賴錨點導航(#id)的頁面中使用 <base> 需極度小心,因為它可能導致內部連結被解析為絕對路徑重定向,而非原本的視圖切換。

<link>

定義:規定當前文件與外部資源之間的關係。

功能變體:

  • rel="stylesheet":載入 CSS。
  • rel="canonical":SEO 關鍵標籤,用於解決重複內容問題,指明標準網址。
  • rel="preload":高優先級提取關鍵資源(如字體、LCP 圖片),不阻塞 window.onload。
  • rel="modulepreload":預先加載 ES Module 腳本圖譜。
  • rel="icon":定義 Favicon。

<meta>

定義:表示那些不能由其他 HTML 元相關元素(如 base、link、script、style、title)表示的元數據。

關鍵屬性組合:

  • 字元編碼:<meta charset="utf-8">。現代網頁標準,防止 XSS 編碼攻擊。
  • 視口設定:<meta name="viewport" content="width=device-width, initial-scale=1">。響應式網頁設計(RWD)的觸發點,防止行動瀏覽器以桌面縮放模式渲染。
  • 內容安全策略 (CSP):<meta http-equiv="Content-Security-Policy" content="...">。防禦 XSS 的最後一道防線,限制腳本、圖片、樣式等資源的載入來源。
  • SEO 描述:<meta name="description" content="...">。雖不直接影響排名,但決定 SERP 的摘要顯示,影響點擊率(CTR)。

<style>

定義:包含文件的樣式資訊。

效能應用:將「關鍵渲染路徑 CSS(Critical CSS)」內聯於 <style> 標籤中,可消除外部 CSS 的網路請求往返時間(RTT),顯著改善首次內容繪製(FCP)。

實戰應用程式碼:企業級 <head> 配置

HTML
<!DOCTYPE html>
<html lang="zh-TW" dir="ltr">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
    
    <meta http-equiv="Content-Security-Policy" 
          content="default-src 'self'; img-src https://cdn.example.com; script-src 'self' https://trusted.analytics.com;">

    <title>HTML5 全標籤語法百科 | 專業開發者指南</title>
    <meta name="description" content="一份詳盡的 HTML5 標籤技術手冊,涵蓋語意結構、ARIA 可訪問性與高效能實踐。">
    <meta name="robots" content="index, follow, max-image-preview:large">
    
    <meta property="og:title" content="HTML5 全標籤語法百科">
    <meta property="og:type" content="article">
    <meta property="og:url" content="https://tech.example.com/html5-guide">
    <meta property="og:image" content="https://tech.example.com/assets/og-html5.jpg">
    
    <meta name="twitter:card" content="summary_large_image">

    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link rel="preload" href="/assets/fonts/inter-bold.woff2" as="font" type="font/woff2" crossorigin>

    <link rel="stylesheet" href="/css/main.min.css">
    <link rel="canonical" href="https://tech.example.com/html5-guide">
    
    <script src="/js/app.js" defer></script>
</head>
<body>
    
</body>
</html>

2. 內容分區與結構 (Content Sectioning)

此類別包含定義文件結構輪廓的元素。HTML5 引入了語意化分區元素來取代通用的 <div> 容器,這不僅讓程式碼更具可讀性,更重要的是為輔助科技建立了「導航地標(Landmarks)」。

2.1 語意化骨幹 (The Semantic Skeleton)

標籤 定義 DOM 介面 隱式 ARIA 角色 應用情境與備註
<body> 代表 HTML 文件的內容主體。 HTMLBodyElement generic 文件中僅能有一個 body。
<main> 代表 <body> 的主要內容。 HTMLElement main 唯一性:每個頁面應只有一個可見的 <main>。螢幕閱讀器提供「跳轉至主要內容」的快捷鍵即是依賴此標籤。請勿將全站導航或頁尾置於此內。
<nav> 提供導航連結的區塊。 HTMLElement navigation 並非所有連結群組都需要用 <nav>,應保留給主要導航、目錄或分頁器。過度使用會造成螢幕閱讀器使用者的導航雜訊。
<aside> 與周圍內容間接相關的區塊。 HTMLElement complementary 用於側邊欄、廣告插槽、相關文章推薦或補充資訊框(Call-out boxes)。
<header> 引導性內容或導航連結的容器。 HTMLElement banner (若為 body 子層) 通常包含標題、Logo 或搜尋表單。可存在於 article 或 section 中,此時不具備 banner 角色。
<footer> 區塊的頁尾。 HTMLElement contentinfo (若為 body 子層) 包含版權資訊、作者連結、相關文件連結。同樣可被 article 或 section 作用域化(Scoped)。

2.2 結構層級辨析

<article> vs <section>:開發者的永恆辯論

這是 HTML5 最常被混淆的概念之一。區分兩者的核心在於獨立性與可分發性。

<article> (文章/獨立單元):

定義:代表文件中一段獨立的、自包含的內容。

判斷標準:如果你將這個區塊及其內容單獨提取出來,放到 RSS Feed 中或另一個網站上,它是否仍然具有完整的意義?如果是,請使用 <article>。

場景:部落格文章、論壇貼文、新聞報導、單個產品卡片、使用者評論。

<section> (章節/通用區塊):

定義:代表文件中一個通用的獨立章節,通常具有一個標題。

判斷標準:它是否只是內容邏輯分組的一部分?如果它依賴上下文才能完整理解,則使用 <section>。

場景:文章的「介紹章節」、「聯絡資訊章節」、頁面上的「功能特色區塊」。

專家提示:如果一個區塊只是為了 CSS 樣式佈局(Layout)或腳本操作而存在,不具備語意分組意義,請繼續使用 <div>。

<h1> 至 <h6>:大綱算法的現狀

層級邏輯:這些標籤定義了由高至低的六個層級標題。

HTML5 大綱算法 (Document Outline):理論上,HTML5 允許每個 <section> 或 <article> 重新從 <h1> 開始,瀏覽器應自動計算其層級。然而,現實情況是瀏覽器與輔助科技對此算法的支援極差。

2025 最佳實踐:應嚴格遵守視覺與結構上的層級。頁面應只有一個主標題 <h1>(通常與 <title> 呼應),其餘依序使用 <h2> 至 <h6>,避免跳級(例如從 <h2> 直接跳到 <h4>),這對 SEO 與 Accessibility 至關重要。

<address>

定義:提供最近的 <article> 或 <body> 祖先元素的聯絡資訊。

常見誤用:不要用它來標記任意的郵寄地址。它專指文件作者或擁有者的聯絡方式(如 Email 連結、作者頁面連結)。

實戰應用程式碼:巢狀語意結構

HTML
<main>
    <article aria-labelledby="main-heading">
        <header>
            <h1 id="main-heading">Web Components 的未來發展</h1>
            <p>作者:<address><a href="mailto:expert@example.com" rel="author">王大明</a></address></p>
            <time datetime="2025-06-12">2025年6月12日</time>
        </header>
        
        <p class="lead">Web Components 正徹底改變我們構建 UI 的方式...</p>

        <section aria-labelledby="intro-heading">
            <h2 id="intro-heading">技術簡介</h2>
            <p>Shadow DOM 提供了強大的封裝性...</p>
        </section>

        <section aria-labelledby="usage-heading">
            <h2 id="usage-heading">實戰應用</h2>
            <p>透過 Custom Elements API...</p>
        </section>

        <aside class="terminology" aria-label="術語解釋">
            <h3>關鍵術語</h3>
            <dl>
                <dt>Shadow Boundary</dt>
                <dd>普通 DOM 與 Shadow DOM 之間的分界線。</dd>
            </dl>
        </aside>

        <footer>
            <p>標籤:<a href="/tags/js">JavaScript</a>, <a href="/tags/html">HTML5</a></p>
            <p>© 2025 技術週刊版權所有</p>
        </footer>
    </article>
</main>

3. 文字內容與分組 (Text Content & Grouping)

此類別包含用於組織段落、列表、引用及格式化區塊的元素。

3.1 區塊級容器 (Block-Level Containers)

標籤 定義與行為 特殊限制與注意事項
<p> 段落 (Paragraph)。 自動關閉機制:<p> 標籤不能包含其他區塊級元素(如 <div>, <h1>, <ul>)。若在 <p> 中放入 <div>,瀏覽器會自動強制結束該段落,導致 DOM 結構與預期不符。
<div> 通用流容器 (Division)。 無語意。僅在無其他合適語意元素時使用。通常用於 CSS 佈局包裝(Wrapper)或 JS 鉤子。
<blockquote> 區塊引用。 代表引自他處的長篇內容。應配合 cite 屬性(提供來源 URL)。預設帶有縮排樣式。
<pre> 預格式化文字。 保留原始碼中的空白與換行符號。通常與 <code> 搭配使用來顯示程式碼區塊。
<hr> 主題轉換 (Thematic Break)。 在 HTML5 中,它不再只是「水平線」,而是代表段落層級的主題轉換(例如故事中的場景切換)。

3.2 列表與圖表 (Lists & Figures)

<ul>, <ol>, <li>

  • 無序列表 (<ul>):項目的順序不改變含義(如購物清單)。
  • 有序列表 (<ol>):項目的順序至關重要(如食譜步驟、排名)。
  • 屬性:start(起始數字)、reversed(倒序)、type(編號樣式,如 a, I, 1)。
  • 列表項目 (<li>):<ul> 或 <ol> 的唯一合法直接子元素。

<dl>, <dt>, <dd>

描述列表 (Description List):用於鍵值對(Key-Value pairs)。

靈活性:一個 <dt>(術語)可以對應多個 <dd>(描述),反之亦然。

應用:名詞解釋、元數據列表、問答集(FAQ)。

<figure> & <figcaption>

定義:代表一個獨立的內容單元(Self-contained content),通常帶有一個說明標題(Caption)。

語意關聯:<figcaption> 提供了與 <figure> 內容的程式化關聯(Programmatic Association),這比單純用 <p> 在圖片下方寫字更具可訪問性。

內容:不限於圖片,可用於程式碼片段、引用、圖表、詩歌。

實戰應用程式碼:複雜分組

HTML
<figure>
    <blockquote cite="https://www.w3.org/TR/html5/">
        <p>The web is a universal platform...</p>
    </blockquote>
    <figcaption>— Tim Berners-Lee, <cite>W3C Specs</cite></figcaption>
</figure>

<h3>技術規格書</h3>
<dl>
    <dt>HTML5</dt>
    <dd>超文件標記語言的最新版本。</dd>
    
    <dt>CSS3</dt>
    <dt>JavaScript</dt>
    <dd>現代前端開發的核心技術堆疊。</dd>
</dl>

4. 行內文字語意 (Inline Text Semantics)

此類別負責處理細微的文字層級語意。這些標籤通常不會破壞行流(Flow),而是包裹單詞或短語以賦予強調、重要性或技術定義。

4.1 強調與重要性辨析

開發者常混淆視覺效果相似的標籤。HTML5 明確區分了「樣式」與「語意」。

標籤 預設樣式 語意定義 建議使用情境
<em> 斜體 語氣強調 (Stress Emphasis) 改變句子語氣的重音。例如:「我沒說過」(暗示是別人說的)。
<strong> 粗體 高度重要性 (Strong Importance) 表示內容嚴重、緊急或關鍵。如警告訊息、錯誤提示。
<i> 斜體 替代語氣 (Alternative Voice) 與周圍文字語氣不同的區塊。用於:分類學名、技術術語、外文短語、心聲、船艦名。
<b> 粗體 注意力引導 (Bring Attention) 引起注意但無額外重要性。用於:摘要中的關鍵字、產品名稱。請勿用於標題。
<s> 刪除線 不再準確 (Inaccurate) 資訊已過時或不再適用。如:「原價 $500 特價 $200」。
<del> 刪除線 已刪除 (Deleted) 文件編輯紀錄。表示從文件中被移除的內容,常配合 <ins> 使用。
<ins> 下底線 已插入 (Inserted) 文件編輯紀錄。表示新增到文件中的內容。
<mark> 黃底 標記相關性 (Relevance) 為了參考目的而標記的文字。如:搜尋結果關鍵字高亮。
<small> 小字體 附屬註解 (Side Comments) 免責聲明、版權聲明、法律條款等「細則」。

4.2 技術與資料語意

<a> (Anchor)

角色:創建超連結。

安全性關鍵:當使用 target="_blank" 開啟新分頁時,務必加上 rel="noopener noreferrer",以防止新頁面透過 window.opener 操控原頁面(Reverse Tabnabbing 攻擊)。

功能屬性:

  • download:指示瀏覽器下載資源而非導航。
  • href="tel:..." / mailto:...:觸發電話或郵件應用。

<time>

定義:代表特定的時間週期或時間點。

機器可讀性:datetime 屬性應使用 ISO 8601 格式(如 2025-11-23T14:00)。這對搜尋引擎索引活動時間、日曆整合至關重要。

<code>, <var>, <samp>, <kbd>

  • <code>:電腦程式碼片段。
  • <var>:數學表達式或程式碼中的變數(通常顯示為斜體)。
  • <samp>:電腦程式的輸出範例。
  • <kbd>:使用者輸入(鍵盤按鍵)。

<data>

定義:將給定的內容與機器可讀的翻譯聯繫起來。

用途:<data value="PROD-398">藍莓口味</data>(其中 398 是庫存 SKU)。

4.3 語言學與格式化

  • <abbr>:縮寫或首字母縮略詞。可配合 title 提供完整形式。
  • <q>:行內引用。瀏覽器會自動根據 lang 添加適當的引號。
  • <cite>:引用作品的標題(書名、論文名、畫作名)。注意:不是引用的人名。
  • <dfn>:術語的定義實例。標示該處為該術語的首次定義。
  • <ruby>, <rt>, <rp>:東亞排版注音(如日文振假名、中文注音)。<rt> 提供發音,<rp> 提供不支援時的括號回退。
  • <bdi>, <bdo>:雙向文字處理(Bi-directional)。<bdi> 用於隔離可能與周圍文字方向不同的未知文字(如使用者名稱),防止佈局崩潰。

實戰應用程式碼:豐富文字語意

HTML
<p>
    <dfn>約束驗證 API (Constraint Validation API)</dfn> 允許開發者檢查使用者輸入。
    正如 <cite>MDN Web Docs</cite> 所述:
    <q cite="https://developer.mozilla.org">此 API 功能強大。</q>
</p>

<p>
    商品:<data value="SKU-992"><strong>超級小工具</strong></data><br>
    上市日期:<time datetime="2025-11-23">11月23日</time><br>
    狀態:<s style="color:red">缺貨</s> <ins>已補貨</ins>
</p>

<p>
    安裝請輸入 <kbd>npm install</kbd> 並等待 
    <samp>Success</samp> 訊息出現。
</p>

<ruby>
  漢 <rt>ㄏㄢˋ</rt>
  字 <rt>ㄗˋ</rt>
</ruby>

5. 圖片與多媒體 (Image & Multimedia)

HTML5 將多媒體原生化,移除了對 Flash 等外掛的依賴,並引入了複雜的響應式載入機制。

5.1 圖片與效能優化

<img>

定義:嵌入圖片。

必備屬性:

  • alt:替代文字。對 Accessibility 和 SEO 絕對必要。若圖片為純裝飾,設為空字串 alt=""。
  • src:圖片來源。

現代效能屬性 (Performance Attributes):

  • loading="lazy":延遲載入。指示瀏覽器直到圖片接近視口(Viewport)時才下載。大幅節省頻寬與提升初始載入速度。
  • decoding="async":指示瀏覽器在主執行緒(Main Thread)之外解碼圖片,減少捲動卡頓。
  • fetchpriority="high":2025 年關鍵屬性。用於提升 LCP(Largest Contentful Paint)圖片的優先級,覆蓋瀏覽器的預設低優先級推測。
  • srcset & sizes:響應式圖片的核心。提供多種解析度或寬度的圖片資源,讓瀏覽器根據裝置像素密度(DPR)與佈局寬度自動選擇最合適的檔案。

<picture>

定義:提供藝術指導 (Art Direction) 或格式切換的容器。

與 srcset 的區別:srcset 讓瀏覽器決定載入哪張(基於效能);<picture> 強制瀏覽器根據 media 條件載入特定來源(例如手機版載入直式裁切圖,桌面版載入橫式全景圖)。

格式切換:利用 <source type="image/avif"> 提供次世代格式,並以 <img> 作為 JPEG 回退。

5.2 時間媒體 (Time-Based Media)

<video> & <audio>

屬性:

  • controls:顯示原生播放控制條。
  • autoplay:自動播放。現代瀏覽器政策通常要求配合 muted 屬性才允許自動播放,以防止干擾使用者。
  • playsinline:iOS 關鍵屬性,防止影片自動全螢幕播放。
  • poster:影片載入前顯示的縮圖。

可訪問性:必須包含 <track> 元素以支援字幕(Captions)與音訊描述。

<track>

功能:為媒體元素指定計時文字軌(Timed Text Tracks)。

屬性:

  • kind:subtitles(翻譯)、captions(包含音效描述,給聽障者用)、descriptions(旁白,給視障者用)、chapters。
  • src:連結 .vtt (WebVTT) 檔案。

5.3 嵌入內容

  • <iframe>:巢狀瀏覽上下文。安全性:sandbox 屬性極為重要,可限制 iframe 內的腳本執行、表單提交與彈窗行為,實現最小權限原則。
  • <object>:通用外部資源容器。可用於 SVG、PDF。
  • <embed>:非 HTML 應用程式的容器(舊時代遺物,現少用)。
  • <map> & <area>:客戶端影像地圖。定義圖片上的可點擊熱區。需配合 <img> 的 usemap 屬性。

實戰應用程式碼:極致優化的媒體標記

HTML
<picture>
    <source srcset="hero-mobile.avif" media="(max-width: 600px)" type="image/avif">
    <source srcset="hero-desktop.avif" type="image/avif">
    <source srcset="hero-desktop.jpg" type="image/jpeg">
    
    <img 
        src="hero-desktop.jpg" 
        alt="HTML5 架構詳解圖表"
        width="1200" height="600"
        loading="eager" 
        fetchpriority="high"
        decoding="sync">
</picture>

<video controls poster="preview.jpg" width="800" playsinline>
    <source src="demo.webm" type="video/webm">
    <source src="demo.mp4" type="video/mp4">
    
    <track kind="captions" src="captions-zh.vtt" srclang="zh-TW" label="繁體中文" default>
    <track kind="descriptions" src="desc-en.vtt" srclang="en" label="Audio Description">
    
    <p>您的瀏覽器不支援 HTML5 影片,請<a href="demo.mp4">下載影片</a>。</p>
</video>

6. 腳本與繪圖 (Scripting & Graphics)

這些元素引入了邏輯運算與動態渲染能力,是現代 Web App 的引擎。

6.1 腳本執行策略

<script>

類型變革:

  • Classic Script (<script src="...">):預設會阻塞 HTML 解析器(Parser-Blocking),直到下載並執行完畢。
  • Module Script (<script type="module">):啟用 ES6 Modules。預設行為類似 defer,且支援 import / export 語法。

非阻塞載入策略 (Async vs Defer):

  • async:非同步下載,下載完畢立即執行(會暫停 HTML 解析)。執行順序不保證。適用於完全獨立的腳本(如 Google Analytics)。
  • defer:非同步下載,但等到 HTML 解析完成後、DOMContentLoaded 事件觸發前依序執行。這是應用程式邏輯腳本的黃金標準,確保了 DOM 已備妥且腳本執行順序正確。

<noscript>

定義:定義在腳本被停用或不支援時顯示的替代內容。對於依賴 JS 的 SPA 網站,這是提供基礎內容給爬蟲或受限環境的重要回退機制。

6.2 圖形渲染

<canvas>

定義:點陣圖(Raster)繪圖介面。

機制:本身只是個空白畫布,需透過 JavaScript (getContext('2d') 或 WebGL) 逐像素繪製。

適用場景:高效能動畫、遊戲、即時視訊處理、複雜數據視覺化(如股票圖表)。

缺陷:內容對 DOM 不可見,搜尋引擎與螢幕閱讀器無法讀取內容。務必在標籤內部提供回退文字。

<svg> (Scalable Vector Graphics)

定義:基於 XML 的向量圖形。

優勢:每個圖形(圓、線、路徑)都是獨立的 DOM 節點。這意味著可以對其使用 CSS 樣式、添加 JS 事件監聽器(如 hover 效果)。

適用場景:圖標(Icons)、Logo、互動式地圖、簡單圖表。縮放不失真。

實戰應用程式碼:現代腳本載入

HTML
<script async src="https://analytics.provider.com/tag.js"></script>

<script type="module" src="/js/main.js"></script>

<script nomodule src="/js/legacy-bundle.js"></script>

<canvas id="stock-chart" width="800" height="400" aria-label="台積電 2025 年股價走勢圖">
    <table summary="台積電 2025 年每季股價數據">
        <tr><th>Q1</th><td>$800</td></tr>
    </table>
</canvas>

7. 表格內容 (Table Content)

表格的唯一用途是展示多維度數據(Tabular Data)。切勿使用表格進行頁面佈局(Layout),這是 90 年代的過時做法。

標籤 定義 結構與可訪問性重點
<table> 表格容器。
<caption> 表格標題。 必要性:必須是 <table> 的第一個子元素。為輔助科技使用者提供表格內容的摘要,讓他們決定是否需要深入閱讀。
<thead> 表頭群組。 包裹標題列,列印時可重複出現在每一頁頂部。
<tbody> 表身群組。 包裹數據列。
<tfoot> 表尾群組。 用於匯總數據(如總計)。
<tr> 表格列 (Row)。
<th> 表頭單元格。 關鍵屬性:scope="col" 或 scope="row"。這告訴螢幕閱讀器該標題是解釋「整欄」還是「整列」的數據,是表格可訪問性的核心。
<td> 數據單元格。
<colgroup> 欄位群組。 允許對整欄進行樣式設定(如背景色),無需在每個 td 上加 class。
<col> 定義欄位屬性。 colgroup 的子元素。
專家洞察:對於結構複雜的表格(例如有多層合併單元格),單純使用 scope 可能不足。此時應使用 headers 屬性在 td 上明確指定對應的 th id(以空格分隔),建立精確的關聯。

實戰應用程式碼:WCAG 合規數據表格

HTML
<table>
    <caption>2025 第一季各部門財務報表</caption>
    <colgroup>
        <col span="1" style="background-color: #f9f9f9; font-weight: bold;">
        <col span="2">
    </colgroup>
    <thead>
        <tr>
            <th scope="col">部門</th>
            <th scope="col">營收 (Revenue)</th>
            <th scope="col">淨利 (Profit)</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th scope="row">研發部</th>
            <td>$50,000</td>
            <td>$12,000</td>
        </tr>
        <tr>
            <th scope="row">行銷部</th>
            <td>$80,000</td>
            <td>$30,000</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <th scope="row">總計</th>
            <td colspan="2" style="text-align: center;">$172,000</td>
        </tr>
    </tfoot>
</table>

8. 表單與互動元素 (Forms & Interactive)

HTML5 大幅擴充了表單功能,引入了原生驗證(Native Validation)與多種專用輸入控制項,減少了對 JavaScript 的依賴。

8.1 表單容器與結構

<form>

屬性:

  • action:提交 URL。
  • method:GET(查詢)、POST(傳輸數據)、DIALOG(關閉模態對話框)。
  • enctype:上傳檔案時必須設為 multipart/form-data。
  • novalidate:停用瀏覽器原生驗證提示(通常用於改用 JS 自定義驗證 UI)。

<fieldset> & <legend>

用途:將相關的表單控制項分組(例如:「運送地址」與「帳單地址」)。

<legend>:分組的標題。這是 fieldset 的第一個子元素,螢幕閱讀器會在讀取組內每個輸入框時重述此標題,提供上下文。

<label>

絕對必要:每個輸入框都必須有一個關聯的 label。

關聯方式:

  • 顯式關聯:<label for="email">Email</label> <input id="email">。
  • 隱式關聯:<label>Email <input></label>。增加點擊熱區,提升 UX。

8.2 輸入控制項 (Input Controls)

<input>:HTML 的瑞士刀

屬性 type 決定了其行為與外觀。除了傳統的 text, password, radio, checkbox 外,HTML5 新增:

  • 資料類型:email (格式驗證), url, tel (觸發數字鍵盤), number (上下微調鈕)。
  • 日期時間:date, time, datetime-local, month, week。提供原生日期選擇器。
  • 功能型:color (檢色器), range (滑桿), search (搜尋樣式), file, hidden。

關鍵屬性:

  • required:必填。
  • pattern:使用 Regex 進行驗證。
  • inputmode:提示行動裝置顯示何種虛擬鍵盤(例如 numeric, decimal, email),這與 type 不同,僅影響鍵盤而不影響驗證。
  • autocomplete:對瀏覽器自動填充至關重要(如 username, current-password, one-time-code)。

<datalist> vs <select>

  • <select>:強迫使用者從清單中「選擇」一個,不能自訂。
  • <datalist>:配合 <input list="..."> 使用,提供「建議清單」與自動完成功能,但使用者仍可「輸入」清單以外的自訂值。這在「搜尋」或「標籤輸入」場景非常有用。

其他控制項

  • <textarea>:多行文字。注意內容是在標籤之間,而非 value 屬性。
  • <output>:語意化容器,用於顯示計算結果(如購物車總價)。
  • <progress>:顯示任務進度(如下載 50%)。
  • <meter>:顯示已知範圍內的測量值(如磁碟空間、溫度)。注意區分進度與測量值。

實戰應用程式碼:現代化表單

HTML
<form action="/api/profile" method="post">
    <fieldset>
        <legend>使用者偏好設定</legend>
        
        <div class="form-group">
            <label for="username">使用者名稱</label>
            <input type="text" id="username" name="username" 
                   autocomplete="username" required minlength="3">
        </div>

        <div class="form-group">
            <label for="browser">慣用瀏覽器</label>
            <input list="browsers-list" id="browser" name="browser" placeholder="請選擇或輸入">
            <datalist id="browsers-list">
                <option value="Chrome">
                <option value="Firefox">
                <option value="Safari">
                <option value="Edge">
            </datalist>
        </div>

        <div class="form-group">
            <label for="satisfaction">滿意度 (0-10)</label>
            <input type="range" id="satisfaction" name="score" 
                   min="0" max="10" step="1" 
                   oninput="result.value=this.value">
            <output name="result" for="satisfaction">5</output>
        </div>
    </fieldset>

    <div class="form-group">
        <label for="avatar">大頭貼</label>
        <input type="file" id="avatar" name="avatar" accept="image/png, image/jpeg">
    </div>
    
    <button type="submit">儲存資料</button>
</form>

9. 網頁元件與原生互動 (Web Components & Interactive)

這些元素提供了原生瀏覽器實作的 UI 模式,以往這些功能需要依賴大量的 JavaScript 函式庫。

9.1 原生互動元件

<details> & <summary>

功能:原生的「手風琴(Accordion)」或「揭示(Disclosure)」元件。

行為:<details> 內的內容預設隱藏,點擊 <summary> 後展開。

SEO:搜尋引擎可以索引隱藏在內的內容(這點優於 JS 隱藏)。

事件:觸發 toggle 事件。

<dialog>

功能:原生的模態視窗(Modal)或對話框。

API:

  • .show():顯示為非模態(仍可與背景互動)。
  • .showModal():顯示為模態(Modal),背景會加入 ::backdrop 遮罩,且自動將焦點限制在對話框內(Focus Trap),並支援按 Esc 關閉。這是可訪問性的一大福音。

9.2 Web Components 技術 (Shadow DOM)

<template>

功能:存放 HTML 片段的容器。

特性:內容是「惰性(Inert)」的——圖片不會下載、腳本不會執行,直到使用 JavaScript 將其複製(Clone)並加入 DOM 中。是 Web Components 實例化的藍圖。

<slot>

功能:Shadow DOM 中的佔位符。

用途:允許使用者將自定義標記注入到 Web Component 的特定位置(Composition),實現內容投射(Content Projection)。

實戰應用程式碼:原生模態對話框

HTML
<button id="openSettings">開啟設定</button>

<dialog id="settingsDialog">
    <form method="dialog">
        <header>
            <h2>系統設定</h2>
        </header>
        <p>請確認是否更改偏好設定?</p>
        
        <footer>
            <button value="cancel">取消</button>
            <button value="confirm" autofocus>確認</button>
        </footer>
    </form>
</dialog>

<script>
    const dialog = document.getElementById('settingsDialog');
    const btn = document.getElementById('openSettings');

    // 使用 showModal 開啟模態模式(含遮罩與焦點管理)
    btn.addEventListener('click', () => dialog.showModal());

    // 監聽關閉事件取得回傳值
    dialog.addEventListener('close', () => {
        console.log(`使用者選擇了:${dialog.returnValue}`);
    });
</script>

10. 全域屬性 (Global Attributes)

這些屬性可以應用於任何 HTML 元素,為標籤賦予額外的行為或語意。

屬性 功能描述 2025 專家建議與新特性
id 唯一識別符。 頁面內必須唯一。用於 CSS ID 選擇器、JS 鉤子與 ARIA 關聯(如 aria-labelledby)。
class 類別識別符。 用於 CSS 樣式分組。
data-* 自定義數據屬性。 儲存頁面私有數據(如 data-user-id="123"),可透過 JS dataset API 存取。
hidden 隱藏元素。 等同 display: none。新值 until-found:允許瀏覽器的「頁面搜尋」功能搜尋到此隱藏內容,並在找到時自動展開該元素(如展開手風琴)。
inert 惰性狀態。 強大新屬性。使元素及其所有子元素失去互動能力(無法點擊、無法聚焦),並從 Accessibility Tree 中移除。常用於在模態視窗開啟時,將背後的背景內容設為 inert。
contenteditable 可編輯內容。 將元素變為富文本編輯器區域。
tabindex 聚焦控制。 0(加入自然 Tab 順序)、-1(可透過 JS .focus() 聚焦但不在 Tab 順序中)。警告:避免使用正整數(如 tabindex="1"),這會破壞使用者的預期導航流。
title 工具提示。 反模式:觸控裝置無法顯示,鍵盤使用者無法存取。請勿依賴此屬性傳遞重要資訊。
translate 翻譯提示。 yes / no。告訴 Google Translate 不要翻譯此元素(例如品牌名稱、程式碼片段)。
dir 文字方向。 ltr / rtl / auto。對於多語言網站至關重要。
spellcheck 拼字檢查。 true / false。控制輸入框是否顯示紅線波浪。

11. 過時與廢棄元素 (Obsolete & Deprecated)

現代開發者必須識別並避免使用這些標籤。它們大多已被 CSS 或更語意化的標籤取代。

純表現層(請改用 CSS):

<center>, <font>, <big>, <strike>, <tt>, <basefont>, <bgcolor> 屬性。

過時佈局(請改用 Grid/Flexbox):

<frame>, <frameset>, <noframes>。

不良行為:

<marquee>(跑馬燈), <blink>(閃爍)。

已被取代:

  • <acronym> 改用 <abbr>。
  • <applet> 改用 <object> 或 <embed>。
  • <dir> 改用 <ul>。

12. 結論與未來展望

HTML5 已不僅僅是標記語言,它是構建現代 Web 體驗的語意平台。從 div 湯(Div Soup)轉向語意化分區,從 JS 驗證轉向原生表單約束,這些轉變不僅提升了程式碼的可維護性,更是實現「Web for All」(可訪問性)與「Machine Readable」(SEO)的基石。

2026 年開發者的四大黃金法則:

  • 語意優先 (Semantics First):永遠選擇最具描述性的標籤。一個 <button> 永遠優於帶有 onclick 的 <div>。
  • 擁抱原生可訪問性:正確使用地標元素(Landmarks)與原生控制項,可自動解決 80% 的可訪問性問題。
  • 效能內建於標記:熟練使用 loading="lazy", fetchpriority, content-visibility,在 HTML 層級即調度渲染路徑。
  • 組件化思維:掌握 <template> 與 <slot>,這是通往 Web Components 與框架無關(Framework-Agnostic)未來的鑰匙。

這份百科全書不僅是語法的速查表,更是現代前端工程標準的縮影。隨著 Web 標準的持續演進,持續關注如 <model>(3D 模型)或 <fencedframe>(隱私沙箱)等實驗性元素,將是保持技術競爭力的關鍵。


歡迎推廣本文,請務必連結(LINK)本文出處:NEWSCAN網頁設計公司