表格字体未被body样式覆盖,是因为table、td、th或内联样式显式声明了字体,或更高优先级选择器(如id、行内样式)中断了继承链;最稳妥做法是显式设置table, th, td, caption的font-family。

表格字体为什么没被 BODY 样式覆盖?
直接给 BODY 设置 font-family 通常能影响表格,但前提是表格里没有更具体的样式干预。常见失效原因包括:TABLE、TD、TH 或内联 style 显式声明了字体;或者用了 !important 覆盖;还有可能是 CSS 优先级更高(比如 ID 选择器或行内样式)。浏览器默认会把 BODY 字体继承下去,但继承链一旦被中断,就停在那层。
font-family 必须写在哪些选择器上才稳?
最可靠的方式不是只靠 BODY,而是显式作用于表格结构元素:
-
table, th, td, caption—— 覆盖所有表格相关容器和单元格 - 加
!important不推荐,但若第三方组件注入了强样式,可临时用th, td { font-family: "Segoe UI", sans-serif !important; } - 避免只写
table,因为font-family不会自动“穿透”到子元素的渲染层(尤其某些旧版 IE 或 Shadow DOM 场景)
用 CSS reset 或 inherit 能否一劳永逸?
可以,但要注意副作用:
-
td, th { font-family: inherit; }是安全的,它强制继承父级字体,比重复声明更轻量 - 全局
* { font-family: ... }会污染表单控件(如select下拉箭头字体错位)、code块等,不建议 - 如果项目用了 Normalize.css 或 modern-normalize,它们已重置了
td/th的字体继承行为,此时只需确保BODY有定义即可
遇到 font-size 乱掉怎么办?
字体族设对了,但大小不一致,往往是因为:
-
TD里嵌套了P、SPAN等元素,而这些元素自带默认字号(如 Chrome 中td p默认是 13.33px) -
em或rem单位在表格中易受祖先缩放影响,改用px或clamp()更可控 - 移动端 Safari 对
font-size: smaller在TH中渲染异常,统一用具体值(如14px)更稳妥
复杂点在于:表格不是块级流布局,它的字体继承行为在不同渲染引擎下略有差异,尤其是含 colgroup 或 thead/tbody 分离结构时——这时候光靠 BODY 就不够了,得逐层确认继承源头。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











