::marker 的 font-size 不生效,因 css 规范限制其可继承属性极少,且尺寸由 content、line-height 和 font-family 共同决定;推荐用 transform: scale() 配合 transform-origin: center left 实现可靠缩放。
为什么 ::marker 的 font-size 不生效
直接对 ::marker 设置 font-size 在多数浏览器(尤其是 Chrome 100+ 和 Safari)中会被忽略,根本原因是:CSS 规范明确限制了 ::marker 可继承的属性极少,font-size 不在默认继承列表中,且部分浏览器尚未完全实现该伪元素的完整样式控制能力。
更关键的是,::marker 的尺寸本质上由其内容(如 ●、▶ 或自定义字符串)和所在行的 line-height / font-family 共同决定,而非独立缩放。
真正有效的缩放方式:用 transform: scale()
这是目前兼容性最好、行为最可控的方法。它绕过渲染引擎对 ::marker 样式属性的限制,直接操作绘制层。
-
scale()值建议用小数(如0.75、1.3),避免整数导致模糊 - 需搭配
transform-origin: center left防止符号位置偏移(因默认原点在左上角) - Chrome ≥ 104、Firefox ≥ 110、Safari ≥ 16.4 均支持,旧版 Safari 可能需加
-webkit-transform
li::marker {
transform: scale(0.8);
transform-origin: center left;
}
替代方案:改用 list-style-image + SVG
当需要精确控制大小、颜色甚至动画时,SVG 是更可靠的选择——它本质是内联图像,不受 ::marker 属性限制。