应使用 color 配合 list-style-type 让标记继承文字色,而非依赖不兼容的 ::marker;li 设置 color 即可改变内置标记颜色,兼容所有主流浏览器。
直接给 ::marker 设置 color 在部分浏览器(尤其是旧版 Safari 和某些版本的 Firefox)中确实不生效,这不是你写错了,而是 CSS 规范支持和浏览器实现存在差异。真正稳定、广泛兼容的方式是:**不依赖 ::marker 伪元素,改用 color 配合 list-style-type,让标记颜色自动继承父级文字色**。
当使用内置的 list-style-type(如 disc、circle、square、decimal、lower-alpha 等)时,列表项前的标记默认继承 li 或其父容器的 color 值 —— 这是 CSS2.1 就定义的行为,兼容性极好。
li 设置 color: #ff6b6b;,圆点或数字就会变成对应颜色::marker,也无需额外包裹 span::marker 是 CSS Pseudo-Elements Level 4 的新特性,虽然现代 Chrome/Edge 支持良好,但:
color 不稳定::marker 的 color 支持较晚(约 Firefox 89+),且可能受 list-style-position 影响list-style-ima
ge,::marker 会被忽略如果必须用图标、特殊符号或背景图形,推荐更可控的方式:
list-style: none; 移除默认标记li::before 生成内容,配合 color 或 background-color
li::before { content: "•"; color: #4ecdc4; margin-right: 8px; }
如果页面有嵌套列表(如 ul > ul),可一层层设置 color:
ul { color: #333; } → 一级标记灰色ul ul { color: #5a67d8; } → 二级标记紫色list-style-type 标记会自动继承对应层级的 color