可用Unicode字符、background-image或伪元素美化列表符号:Unicode简洁但需注意字体兼容;background-image完全可控且兼容好;::marker语义清晰但支持度有限;counter可自定义有序列表编号格式。
直接用 list-style 确实容易显得单调,但其实它支持图标、图片、甚至自定义字符,关键在于选对方式、避开常见坑。
比默认黑点或数字更简洁有设计感,适合轻量级美化:
list-style-type 中直接写 Unicode,比如 ●、→、✦,注意用转义(如 \25CF)更稳妥font-family 保证兼容性,避免某些字体不渲染特殊符号彻底摆脱系统限制,图标大小、颜色、间距全可控:
list-style: none 清掉默认符号,再给 li 设 background-image + padding-left 留出图标位置background-size 和 background-position 精确对齐,比如 left center / 12px 12px
url("data:image/svg+xml,...")
::marker 是较新标准(Chrome 89+、Firefox 85+ 支持),语义清晰;::before 兼容性更好:
li::marker { content: "★ "; color: #ff6b6b; } 直接改符号样式,不影响文字li::before { content: "•"; margin-right: 8px; color: #4a6fa5; },记得设 list-style: none
::marker 不支持背景图或复杂布局,纯文本内容更稳有序列表(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-ima
ge,要语义化且现代就试 ::marker。