::marker伪元素可直接美化列表项编号或符号,支持现代浏览器,适用于ol和ul的li元素,能设置颜色、字体等属性但不支持布局属性,推荐用于ol。

直接用 ::marker 伪元素就能单独美化列表项编号(或项目符号),不用额外包裹标签,也不用 JavaScript。
支持情况与基本用法
::marker 是 CSS Level 3 的标准特性,现代浏览器(Chrome 86+、Firefox 74+、Safari 15.4+、Edge 86+)均已支持。它专门作用于有序列表(<ol>)的数字/字母编号,以及无序列表(<ul>)的项目符号(如圆点、方块等)。
- 只适用于
<li>元素的直接子标记(即编号本身),不能继承,也不能选中内容文本 - 可设置颜色、字体、大小、文字方向,但不支持
display、margin、padding等布局属性 - 对
<ul>的 marker,部分浏览器(如 Safari)支持有限,建议优先用于<ol>
常见美化方式示例
以下代码可直接应用在项目中:
ol li::marker {
color: #ff6b6b;
font-weight: bold;
font-family: "Segoe UI", system-ui;
}
<p>/<em> 自定义编号后缀(如加个点或右箭头) </em>/
ol li::marker {
content: counter(list-item) ". ";
}</p><p>/<em> 改为大写字母 + 冒号 </em>/
ol.alpha li::marker {
content: counter(list-item, upper-alpha) ": ";
}</p><p>/<em> 换成图标(需字体支持,如使用 system emoji 或 icon font) </em>/
ol.icon li::marker {
content: "→ ";
color: #4a90e2;
}兼容性兜底方案
如果需要支持老版本浏览器(如 IE 或旧版 Safari),可退回到传统方法:
立即学习“前端免费学习笔记(深入)”;
- 移除原生列表样式:
list-style: none - 用
counter()配合::before手动生成编号 - 通过
position: absolute或flex控制编号位置和样式(更灵活,但略繁琐)
基本上就这些。用 ::marker 是最轻量、语义最干净的方式,只要目标环境可控,优先推荐它。










