caption-side: bottom 必须写在 table 元素的 CSS 中,caption 必须是 table 的直接子元素且唯一,需标准 DOCTYPE,视觉间距由 caption 的 margin-top 控制,left/right 仅 Firefox 支持。

caption-side: bottom 能让表格标题出现在底部,但必须写在 table 元素的 CSS 规则里,而不是 caption 上——写错位置就完全失效。
caption-side 必须作用于 table 元素
这个属性控制的是“表格容器如何安放它的标题”,所以它只对 table 有效。常见错误是写成 caption { caption-side: bottom; },这毫无作用。
- ✅ 正确写法:
table { caption-side: bottom; } - ✅ 局部生效:
table.data-table { caption-side: bottom; } - ❌ 错误写法:
caption { caption-side: bottom; }(浏览器直接忽略) - ❌ 错误写法:
table { display: grid; } + caption-side(破坏表格渲染上下文,Firefox 尤其敏感)
caption 必须是 table 的直接子元素且仅出现一次
HTML 规范强制要求 caption 必须作为 table 的第一个或最后一个子节点。如果它被包在 div 里、塞进 thead 中、或者页面里有两个 caption,caption-side 就会静默失效。
- ✅ 正确结构:
<table><caption>标题</caption><tr>...</tr></table> - ✅ 也可放末尾:
<table><tr>...</tr><caption>标题</caption></table> - ❌ 错误结构:
<table><thead><caption>标题</caption></thead></table> - ❌ 错误结构:
<table><div><caption>标题</caption></div></table>
IE8 支持但需要标准 DOCTYPE
IE8 是最早支持 caption-side 的 IE 版本,但它只在标准模式下工作。如果文档开头没写 <!DOCTYPE html>,而是用了过渡型或混杂模式声明,IE8 就当它不存在。
立即学习“前端免费学习笔记(深入)”;
- ✅ 必须有:
<!DOCTYPE html>(HTML5 最简声明) - ❌ 无效:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - ❌ 无效:缺 DOCTYPE 或开头有空格/注释
- ⚠️ IE7 及更早版本完全不支持,需用 JS 移动节点或放弃兼容
视觉间距靠 caption 自身 margin 控制,不是 caption-side
caption-side: bottom 只决定“逻辑位置”,实际离表格多远,得靠 caption 的 margin-top(注意:不是 margin-bottom)来调。尤其当 border-collapse: collapse 时,标题容易紧贴表格底边,看起来像没到底部。
- ✅ 推荐加样式:
caption { margin-top: 0.75em; } - ✅ 若表格有
border-bottom,可在tbody上加padding-bottom: 0.5em避免重叠 - ❌ 避免:
table { border-spacing: 0; } + caption { margin: 0; }(视觉上“粘连”) - ❌ 不要用
position: absolute或float挤走caption——它会脱离表格布局流,caption-side失效
left/right 值只在 Firefox 里能用,其他浏览器无视;真正跨浏览器可用的只有 top 和 bottom。别指望靠它做侧边标题,也别在生产环境里赌 Firefox 独占行为。



















