HTML5语义化与Web Component组件化应深度融合:语义化定义内容角色,组件化封装行为样式;自定义元素需具明确语义,命名遵循短横线规则并匹配语义角色,内部结构延续HTML5语义层级,善用aria属性增强可访问性,并在生命周期中响应语义变化。

HTML5 语义化和 Web Component 组件化不是两条平行线,而是能自然咬合的结构层与封装层:语义化负责“说什么”,组件化负责“怎么说”——前者定义内容角色与层级关系,后者封装行为、样式与复用逻辑。关键在于让自定义元素本身具备语义意图,而非仅作视觉容器。
语义化是组件设计的起点
写一个组件前,先问:它在页面中承担什么语义角色?是主内容区()、独立文章()、导航区块(
- 比如封装一个用户资料卡,若它出现在文章侧边栏且与主文相关,适合命名为 ,内部用
- 若该卡片用于首页推荐列表,每张都可被单独订阅或分享,则更宜基于 扩展,如 ,并在类中继承 HTMLElement 后主动设置 aria-labelledby 或 tabindex 属性
- 避免起名如 或 ——这类名称无语义,也不符合 customElements.define() 要求的短横线规则;应选 或
组件内嵌套需延续语义层级
自定义元素不是语义黑洞。它的 shadow DOM 可隔离样式,但不能切断语义流。外部结构仍需按 HTML5 规则组织,组件内部也应使用恰当语义标签,而非全用
anything-to-html
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
下载
。
- 组件内部模板中,标题用
(非 ),时间用