ol列表序号加粗需用::marker伪元素设置font-weight: bold,因list-style-type仅控制类型不支持样式;旧浏览器可退化为counter+::before方案。

ol列表序号怎么加粗?用CSS的list-style-type不行
直接改list-style-type没用——它只控制序号类型(如decimal、lower-alpha),不控制字体样式。序号本身不是文本节点,无法像普通文字那样用font-weight直接作用。
正确做法:用counter-reset + counter-increment + ::marker
现代浏览器(Chrome 86+、Firefox 81+、Safari 15.4+)支持::marker伪元素,它是专门用来样式化列表项标记(即序号)的:
ol {
counter-reset: item;
}
ol li {
counter-increment: item;
}
ol li::marker {
font-weight: bold;
}
注意:counter-reset和counter-increment在这里其实不是必须的(ol默认就有计数器),但显式声明能避免某些旧写法干扰;真正起作用的是最后一行。
兼容老浏览器?fallback方案要手动包裹
如果必须支持IE或旧版Safari,::marker不可用,只能放弃“纯CSS序号加粗”,改用显式结构:
- 把序号抽出来用
包裹 - 用
ol li { counter-increment: item; } ol li::before { content: counter(item) ". "; font-weight: bold; } - 此时
::before是真实可样式化的元素,font-weight生效
缺点:语义性略弱,屏幕阅读器可能把序号和内容读成两段;且需确保content里的标点(如". ")与原生ol一致。
别踩坑:font-weight对::marker的支持有细节限制
::marker目前只接受有限CSS属性,font-weight虽已广泛支持,但要注意:
-
font-weight: bolder或lighter在::marker中可能无效,建议用具体值如700或bold - 某些字体本身没有粗体变体,加粗可能只是算法模拟,视觉差异小
- 不要给
ol li设font-weight,它不会继承到::marker上
最稳的方式永远是:查Can I use → 确认目标环境支持::marker → 直接上font-weight: bold。其他绕路方案,都是为妥协而加的额外维护成本。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











