必须是的首个且唯一子元素,紧贴其开始标签后;嵌套于等内部或用模拟均破坏语义与可访问性。

caption 必须是
的第一个子元素
不是“放在表格上方就行”,而是 DOM 位置必须严格满足:紧贴 <table> 开始标签之后、且是它的直接子节点。浏览器和屏幕阅读器靠这个结构识别语义归属,放错位置等于没写。
<ul><li>✅ 正确:<code><table>
<caption>销售汇总</caption>
<thead>...
<li>❌ 错误:<code><table>
<thead><caption>销售汇总</caption></thead>(<code><caption></caption> 不是 <thead> 的合法子元素)
<li>❌ 更隐蔽错误:<code><div class="title">销售汇总</div>
<table>...(视觉像标题,但语义为零)
<h3>caption 不能嵌套在任何表格内部容器里</h3>
<p><code><caption></caption> 只能挂载在 <table> 上,不能塞进 <code><thead>、<code><tbody>、<code><tfoot> 或任意 <code><tr> 里。一旦嵌套,DOM 结构断裂,<code>table.caption 属性返回 null,PDF 渲染工具(如 dompdf)直接跳过。
实际项目里最容易被绕开的是 DOM 位置校验——开发者看到“标题显示出来了”就以为 OK,但一接入无障碍测试或生成 PDF 就暴露问题。真正起效的不是“看起来像标题”,而是浏览器解析出的父子关系是否严格匹配规范。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!