Firefox 不兼容 initial-letter。因其明确列为“暂不实现”,理由包括排版模型耦合、中文 baseline 未共识及优先级低;所有 initial-letter 规则被静默忽略,::first-letter 是唯一可行替代方案,但需严格满足 float、line-height、font-size 三要素及 HTML 结构纯净要求。

不能兼容。Firefox 从诞生至今(2026年9月)完全不支持 initial-letter,既无实验性 flag 可开启,也无计划在短期版本中实现;所有写入的 initial-letter 规则都会被静默忽略,控制台无 warning,getComputedStyle(p).initialLetter 返回空字符串。
为什么 Firefox 不会“兼容” initial-letter
这不是版本滞后问题,而是标准实现路径分歧:Firefox 团队明确将 initial-letter 列为“暂不实现”特性,理由包括排版模型与 Gecko 引擎深度耦合、中文 baseline 计算未达成共识、以及优先级低于 CSS Container Queries 等更通用能力。截至 2026 年 9 月,其兼容性数据仍为 0% —— 没有 beta 版本、没有 hidden flag、没有 polyfill 可注入。
::first-letter 是唯一可行替代方案
所有旧版 Firefox(包括 ESR 115 和已停止更新的 78.x)均稳定支持 ::first-letter,但必须满足三要素协同:
-
float: left:不加则无环绕,仅放大首字 -
line-height: 0.75(无单位):继承父级line-height: 1.6会导致首字像竖砖立着,文字只能从头顶绕 -
font-size: clamp(2rem, 4vw, 3.5rem):避免小屏撑满半屏,固定值如3em在 Firefox 旧版中易因字体度量差异导致截断
容易被忽略的 Firefox 专属陷阱
旧版 Firefox 对伪元素结构更敏感,以下情况会直接导致 ::first-letter 静默失效:
立即学习“前端免费学习笔记(深入)”;
- 父
<p>被包裹在display: flex容器中(哪怕只有一层) - 首字符前存在 HTML 注释或换行符:
<p>\n今天</p>或<p><!-- intro -->今天</p> - 段落以全角标点开头(如《、【、“),Firefox 会选中标点而非汉字,且无法跳过
- 父容器设了
text-transform: uppercase,::first-letter作用于转换后字符,中文虽无影响,但若 CMS 输出含英文首词则逻辑错乱
真正难的不是写对三行 CSS,而是确保 CMS 输出的 HTML 永远干净:首字符必须是 DOM 文本流中第一个可渲染汉字,且前面零空白、零标签、零注释——这点在 Firefox 旧版中容错率为零。


















