可用Unicode字符、background-image或伪元素美化列表符号:Unicode简洁但需注意字体兼容;background-image完全可控且兼容好;::marker语义清晰但支持度有限;counter可自定义有序列表编号格式。

直接用 list-style 确实容易显得单调,但其实它支持图标、图片、甚至自定义字符,关键在于选对方式、避开常见坑。
用 Unicode 字符替代默认符号
比默认黑点或数字更简洁有设计感,适合轻量级美化:
- 在
list-style-type中直接写 Unicode,比如●、→、✦,注意用转义(如\25CF)更稳妥 - 配合
font-family保证兼容性,避免某些字体不渲染特殊符号 - 慎用太花哨的符号,小字号下易糊,建议在 14px 以上测试显示效果
用 background-image 换掉原生符号
彻底摆脱系统限制,图标大小、颜色、间距全可控:
- 把
list-style: none清掉默认符号,再给li设background-image+padding-left留出图标位置 - 用
background-size和background-position精确对齐,比如left center / 12px 12px - SVG 图标可直接 base64 写进 CSS,免额外请求,例如
url("data:image/svg+xml,...")
用伪元素 ::marker 或 ::before 精准控制
::marker 是较新标准(Chrome 89+、Firefox 85+ 支持),语义清晰;::before 兼容性更好:
立即学习“前端免费学习笔记(深入)”;
- 用
li::marker { content: "★ "; color: #ff6b6b; }直接改符号样式,不影响文字 - 若需兼容老浏览器,改用
li::before { content: "•"; margin-right: 8px; color: #4a6fa5; },记得设list-style: none - 注意
::marker不支持背景图或复杂布局,纯文本内容更稳
数字序号也可以美化 —— 使用 counter-reset 和 counter-increment
有序列表(ol)的数字不只是“1、2、3”,能加前缀、换进制、套样式:
- 重置计数器:
ol { counter-reset: item; },每个li增加:li { counter-increment: item; } - 用
content: counter(item, lower-roman) ". "输出 “i. ”、“ii. ” 等,支持decimal、upper-alpha等多种格式 - 还能组合字符串:
content: "Step " counter(item) ": ";,实现“Step 1:”这类带文字的编号
不复杂但容易忽略细节,关键是根据项目兼容要求和设计需求选对方法:要简洁就用 Unicode,要灵活就上伪元素,要兼容就用 background-image,要语义化且现代就试 ::marker。










