只设 quotes: "“" "”" 会导致第二层嵌套 fallback 到浏览器默认英文单引号,因为 quotes 值必须为偶数个字符串、两两成对,且按 DOM 嵌套深度严格索引取值,超出定义范围即使用 UA 默认引号。

直接说结论:只设 quotes: "“" "”" 这一对,第二层嵌套就会 fallback 到浏览器默认(通常是英文单引号),不是你漏写了,是规范就这么定的——必须成对提供、偶数个字符串,且层级严格按 DOM 嵌套深度索引取值。
为什么嵌套后第二层变成英文单引号?
浏览器查 quotes 值时,按顺序取:第一对给最外层 ,第二对给它的直接子 ,第三对给孙级……超出定义范围就用 UA 默认引号(Chrome/Firefox 通常回退为 'single')。所以只写两个字符串,等于只声明了第一层,第二层根本没匹配项。
-
quotes: "“" "”"→ 仅覆盖第一层;内嵌渲染为'内容' -
quotes: "“" "”" "‘" "’"→ 第一层用 “”,第二层用 ‘’,干净利落 -
quotes: "“" "”" "‘"→ 奇数个字符串,整条声明被忽略,全部退化为浏览器默认
中文双引号嵌套的最小可靠写法
中文排版极少需要三层以上,但两层必须显式定义。推荐直接在 q 元素上写死四元组,不依赖 :lang() 或继承,避免框架重置干扰:
q {
quotes: "“" "”" "‘" "’";
}
q::before { content: open-quote; }
q::after { content: close-quote; }
这样写有三个关键点:
- 四字符串、两两成对、空格分隔,满足偶数要求
- 没加
:lang(zh)也能生效,适合多数 CMS 或静态站点 - 显式绑定伪元素,绕过浏览器内置样式表的不确定性
表格里或复杂结构中嵌套失效怎么办?
Firefox 最守规范:缺一对就严格 fallback;Chrome 和 Safari 对空值或缺失对容忍度略高,但不可依赖。真正容易被忽略的是编辑器预览环境:quotes 不作用于普通文本,也不看 HTML 标签位置(比如 是两层,但前提是外层
确实包裹了内层——DOM 深度才算数,不是表格行列算数)。
,他说“你好” quotes 完全无效;它不扫描和替换已有字符他说
你好
)被设了
quotes: none,子 q 会继承 —— 此时得在 q 上重新声明 quotes,不能只靠祖先
Chrome/Safari/Firefox 行为差异要注意什么?
lang 属性,或未启用 open-quote 支持,导致本地看是英文引号,实际浏览器打开却是中文quotes: auto —— 虽然 CSS3 加了这个值,但截至 2026 年底,各浏览器对其语言识别逻辑支持仍不稳定,中文页面大概率还是出英文引号
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











