贝利信息

css 字体间距无效怎么办_letter-spacing 调整与继承

日期:2026-01-19 00:00 / 作者:P粉602998670
letter-spacing 无效通常因被覆盖、继承或元素类型不支持;需检查计算值、提高优先级、避免用于替换元素,并注意与字体字距的冲突。

letter-spacing 设置后没变化?先看是否被重置或覆盖

很多情况下 letter-spacing 看似“无效”,其实是被后续样式覆盖了,比如框架 CSS、重置库(如 Normalize.css)或组件库自带的 letter-spacing: normal。浏览器默认值是 normal,它不等于 0,但视觉上常看不出差别;而一旦父元素设了 letter-spacing,子元素若未显式声明,会继承该值——这反而可能掩盖你的修改。

letter-spacing 在内联元素和替换元素中表现异常

letter-spacing 只对字符间起作用,对 这类替换元素(replaced elements)完全无效;对 等内联非替换元素才生效。更隐蔽的问题是:当文本被 display: flexdisplay: grid 包裹时,字符间距可能因盒模型行为“被压缩”或“断开”。

letter-spacing 继承机制与常见误用场景

letter-spacing 是可继承属性,但继承的是计算后的值,不是声明值。例如父元素设 letter-spacing: 0.1em,子元素字体大小为父级 0.8 倍,则子元素实际继承的是 0.1em × 父级 font-size,再按自身 font-size 换算——这容易导致预期外的缩放偏差。

letter-spacing 与 font-kerning、font-feature-settings 的冲突

现代字体(尤其是可变字体或启用 OpenType 的字体)自带字距调整(kerning)逻辑,它和 letter-spacing 是两套机制:前者是字体设计师预设的成对字符间距修正(如 “AV”、“To”),后者是全局等距拉伸。当两者共存时,浏览器默认优先应用字体 kerning,可能“吃掉”你设的 letter-spacing 效果。

实际调试时,最可靠的路径是:打开 DevTools → 找到对应元素 → 切到 Computed 标签页 → 搜索 letter-spacing → 看它是否被标记为“已继承”或“被覆盖”。很多时候问题不在写法,而在没意识到它已经被某处隐式继承或重置了。