
本文介绍一种简洁、可维护的方式,通过 CSS 继承机制将 font-size: 10px 统一应用于表格()及其所有单元格(/)内嵌的任意子元素(如 、、 等),避免逐个类名覆盖或滥用 !important。
本文介绍一种简洁、可维护的方式,通过 css 继承机制将 `font-size: 10px` 统一应用于表格(`
`)及其所有单元格(`| `/` |
`)内嵌的任意子元素(如 ``、``、` ` 等),避免逐个类名覆盖或滥用 `!important`。 在实际开发中,常遇到这样的需求:表格整体需使用小号字体(如 10px),但表头(<th>)或单元格(<code><td>)内部可能嵌套多种元素(如 <code><span></span>、<div>、<code><input>、<button></button> 等),而这些子元素往往自带或被其他样式规则设置了更大的 font-size(如 14px 或 18px),导致视觉不统一。 直接为每个子标签单独写选择器(如 .table_span, .table_div)不仅冗余,还违背“从通用到特例”的 CSS 设计原则。更优雅的解法是利用 CSS 继承 + 通配符选择器,让所有后代元素自动继承父级字体设置。
✅ 推荐方案:全局定义 + 强制继承
只需两步即可实现全表字体归一化:
- 在
<table> 上设置基础 <code>font-size 和 line-height; - 强制
<th> 和 <code><td> 内所有子元素继承该字体。<pre class="brush:php;toolbar:false;">/* 推荐:作用于所有 table 元素(可加 class 限定作用域) */
table {
border-collapse: collapse;
width: 100%;
font-size: 10px; /* 核心:设定基准字号 */
line-height: 1.2em; /* 建议同步设置行高,提升可读性 */
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
th,
td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
font-family: inherit; /* 显式继承字体族,避免意外回退 */
}
th {
background-color: #f2f2f2;
}
/* 关键:让 th 和 td 内所有子元素无条件继承字体设置 */
th *,
td * {
font-size: inherit !important; /* 强制继承,覆盖外部干扰 */
font-family: inherit;
}</pre>
<blockquote><p>? 注意:<code>th * 和 td * 是后代选择器(非子选择器 >),能匹配任意层级嵌套的元素(如 td > div > span),确保深度内容也被纳入控制。
⚠️ 常见误区与修复建议
|