CH1 · HTML 詳細 ROADMAP

計畫文件,不會被 Quartz 渲染。 回主 roadmap → frontend/ROADMAP.md


章節目標

HTML 不只是 <div> 堆疊。建立完整的 HTML 能力——從基礎結構到 Web Components、從語意化到 i18n、從表單到媒體、從 meta 到 HTML5 API——讓讀者具備獨立撰寫可讀、可用、可訪問、可被搜尋引擎理解的 HTML 文件的能力。


🌱 基本介紹

#主題SlugStage大綱
01HTML 是什麼01-what-is-html🌱標記語言定義、瀏覽器/解析器、文件類型宣告、為什麼 DOM 是樹
02HTML 結構基礎⛔️ fundamentals/html-structure🌿已有(跨系列)
03語意化標籤semantic🌿已有

❓ 為什麼需要

#主題SlugStage大綱
04為什麼需要語意化 HTML(不是 div 就好?)04-why-semantic-html🌱螢幕閱讀器、SEO、未來維護、CSS 選擇器、a11y 法規、為什麼 div soup 是技術債
05為什麼需要 Web Components(原生 vs React/Vue 元件)05-why-web-components🌱跨框架共用元件、Design System 底層、Shadow DOM 封裝邊界、為什麼 native 版本還沒殺死 React

🕰️ 演進

#主題SlugStage大綱
06HTML 版本史06-html-version-history🌱HTML 4 → XHTML 1.0/1.1 → HTML5 → WHATWG Living Standard
07為什麼 XHTML 曾經流行07-why-xhtml-was-popular🌱XML 嚴格格式的時代價值、可解析性、跟 Web 2.0 工具鏈的關係、為什麼後來被棄用
08Table 為什麼被 div 取代08-table-to-div-layout🌱Table 佈局時代、CSS2 時代為什麼 div 贏、語意 vs 視覺的分離
09從靜態 HTML 到 Web Components09-html-to-components🌱HTML Include 早期嘗試、Custom Elements v0/v1、Web Components 三支柱
10Microdata / RDFa 為什麼被 JSON-LD 取代10-microdata-to-jsonld🌱2008–2015 結構化資料戰爭、Google 的態度、維護性 vs 簡潔性

🧠 知識型

語意化深化

#主題SlugStage大綱
11冷門但重要的語意化標籤11-lesser-known-semantic-tags🌱<figure> / <time> / <abbr> / <details> / <address> / <search> / <mark> / <cite> / <small>
12ARIA 和原生語意的選擇時機12-aria-vs-native-semantic🌱「No ARIA is better than bad ARIA」、什麼時候一定要用 ARIA、role vs semantic

表單

#主題SlugStage大綱
13表單原生行為forms🌿已有
14表單進階14-form-advanced🌱input types(date/time/number/tel/email/url)、autofill、file upload、accept、capture
15表單 UX 最佳實踐15-form-ux🌱label 關聯、錯誤訊息時機、tab order、行動裝置 virtual keyboard

媒體與繪圖

#主題SlugStage大綱
16媒體標籤16-media-tags🌱<img> lazy/loading/srcset/sizes、<picture><video>/<audio> 屬性、fetchpriority
17Video / Audio 進階17-video-audio-advanced🌱Media Session API(鎖屏控制)、Media Source Extensions(串流)、字幕 <track>、WebVTT
18Canvas / SVG 繪圖18-canvas-svg🌱Canvas 2D vs SVG 差異、何時用哪個、Canvas 基本 API、SVG viewBox

HTML5 新能力

#主題SlugStage大綱
19HTML5 新增元素總覽19-html5-elements-overview🌱dialog / details / summary / meter / progress / datalist / output / template / slot
20原生編輯能力:contenteditable / designMode20-contenteditable🌱contenteditabledesignMode、execCommand 棄用、CMS 為什麼自搭 editor(Slate / Lexical / TipTap)

進階元件

#主題SlugStage大綱
21Web Components / Custom Elements21-web-components🌱自訂元素、生命週期、slots
22Shadow DOM22-shadow-dom🌱封裝邊界、CSS 穿透、slot projection
23Drag & Drop / Clipboard API23-drag-clipboard🌱dataTransfer、文件拖曳、剪貼簿 API 安全限制

Meta 與 SEO 基礎

#主題SlugStage大綱
24正常網站 <head> 完整清單24-head-checklist🌱charset / viewport / title / description / canonical / robots / theme-color / favicon / manifest / preload / preconnect / OG / Twitter / JSON-LD
25Schema.org + JSON-LD 實戰25-schema-jsonld🌱常見類型(Article / Product / Person / Organization / WebSite / BreadcrumbList / FAQPage)
26i18n 屬性26-i18n-attributes🌱lang / dir / hreflang / translate、雙向文字
27Meta / OG 深入⛔️ seo/06🌿跨系列

🔧 小實作注意事項

#主題SlugStage大綱
28<dialog> + popover + ::backdrop 實戰28-dialog-popover🌱2024+ 新原生能力取代 Modal library、::backdrop 樣式
29最常被誤用的 HTML 標籤合輯29-html-misuse🌱<b> vs <strong><i> vs <em><br> 的誤用、<section> vs <div>
30HTML email 注意事項30-html-email🌱為什麼要 inline CSS、table 佈局回歸、avoiding blockers、MSO 條件註解
31contenteditable 做最小 rich text editor31-min-rich-editor🌱純 contenteditable 能做到哪裡、限制在哪裡

💣 Anti-pattern

#主題SlugStage大綱
32HTML Anti-patterns32-html-anti-patterns🌱div 濫用、不必要巢狀、alt="" 誤用、tabindex 濫用、onclick 在非互動元素、重複 id

🧰 對應檢查工具

#主題SlugStage大綱
33HTML 檢查工具33-html-tooling🌱W3C Validator、HTMLHint、axe-core、Lighthouse、htmllint、Prettier HTML、Rich Results Test

章節進度統計

  • 知識主題:33 項
  • 🌿 growing:3(2 現有 + 1 跨系列)
  • 🌱 seed:29

跨系列連結

  • fundamentals/html-structure(基礎入門)
  • fundamentals/domfundamentals/bom(CH4 瀏覽器)
  • seo/(Meta / OG / Structured Data)
  • frontend/a11y/(CH12 深入 a11y)
  • → W05 CMS capstone(contenteditable、rich text editor 實戰)