直接给table设font-size虽省事但有继承陷阱,应优先用CSS类分别设置th和td字号,注意rem单位受根字号影响,慎用em和clamp,旧<font>标签需评估可访问性后再处理。

table元素直接设font-size最省事但有继承陷阱
给<table>加style="font-size: 16px;"确实能统一整张表的文字大小,但它会向下继承到所有<th>、<td>,甚至嵌套在单元格里的<span>或<div>。如果表头需要更大字号,光靠这个不够——得额外覆盖。
- 优先用 CSS 类而非内联 style,避免后期改起来要逐个替换
- 别写
table { font-size: 14px; }然后指望<th>自动变大,它不会,必须单独声明 - 如果表格里混用了不同层级的文本(比如带图标的按钮),
font-size继承可能让图标文字错位
th和td分开设font-size更可控
表头和数据单元格语义不同,字号理应区分。直接对<th>和<td>写样式,比依赖继承更可靠。
-
th { font-size: 18px; font-weight: bold; }比table th更明确,避免被其他选择器干扰 - 若某列需要特殊字号(如金额列用小号数字),可用属性选择器:
td[data-type="amount"] { font-size: 14px; } - 注意
th默认是display: table-cell,但某些重置样式会把它改成block,导致font-size失效——检查 computed styles 确认
用rem单位控制表格字体时,根字号别乱动
表格不是独立世界,它的font-size仍受html { font-size }影响。设1rem = 10px能让计算简单,但千万别在表格内部再改html或body的根字号——那会影响全站。
- 推荐做法:
html { font-size: 16px; }保持不动,表格内用th { font-size: 1.25rem; }(即20px) - 如果要用响应式表格字体,
clamp(14px, 1.2vw, 18px)比媒体查询更轻量,但 IE 完全不支持,上线前得看用户浏览器分布 - 慎用
em:父级<tr>没设字号时,em会回退到浏览器默认(通常16px),结果不可控
旧项目里遇到<font>标签别手软删,先查是否影响可访问性
<font size="3">这类标签在现代 HTML 中已废弃,但有些老系统生成的表格还在用。直接删掉可能让屏幕阅读器读错字号层级,尤其当它包裹了表头或关键状态文字时。
立即学习“前端免费学习笔记(深入)”;
- 先用 DevTools 检查该标签是否设置了
aria-label或role,再决定是保留并加font-size覆盖,还是重构为语义化标签 - 如果只是单纯为了兼容旧 IE,用
font { font-size: inherit !important; }临时兜底,而不是复用<font> - 真正麻烦的是那些把
<font>和style混用的行内代码,建议批量正则替换:<font[^>]*>(.+?)</font>→<span class="legacy-font">$1</span>,再统一加样式
px单位文字可能被截断;后台管理系统里高密度表格,rem配合line-height微调比单改font-size更能提升可读性。



















