直接改list-style-type即可更换ul项目符号,稳定值为disc、circle、square、none;自定义图标需用background-image+list-style:none,颜色大小单独控制须用::before伪元素。
直接改 list-style-type 就行,但得注意浏览器默认值、继承关系和自定义符号的限制。
这个 CSS 属性控制的就是 ul 里每个 li 前面那个点或符号的样式。常见可选值有:disc(实心圆,默认)、circle(空心圆)、square(实心方块),还有 none(彻底去掉)。
ul 上会作用于整个列表;写在 li 上理论上也生效,但不推荐——容易被父级覆盖,且语义不清div)设了 list-style-type,子 ul 会继承,得显式重置list-style-type 不支持任意图标或图片,只接受预定义关键字;想用自定义图形得换方案靠 list-style-image 或更可靠的 background-image 方案。
list-style-image 看起来最直白,但实际问题多:对图片尺寸没控制权、无法调整位置、IE 低版本兼容差,而且一旦图片加载失败就回退成默认圆点,不可控。
立即学习“前端免费学习笔记(深入)”;
background-image + padding-left + background-position 组合:能精调图标大小、间距、对齐background-repeat: no-repeat,否则图标会重复li 设 list-style: none,否则默认符号和背景图会叠在一起li { list-style: none; background-image: url("arrow.svg"); background-repeat: no-repeat; background-position: 0 0.3em; padding-left: 18px;}
原生 list-style-type 的符号颜色跟文字颜色一致,大小随 font-size 缩放,没法单独调。
所以如果设计要求“灰色小圆点 + 黑色文字”,或者“符号比文字小一号”,就必须放弃 list-style-type,走伪元素路线。
li::before 生成内容,比如 content: "•" 或 Unicode 符号(如 2022)color、font-size、margin-right 等display: inline-block 或调整 vertical-align,否则基线可能对不齐本质是单位和渲染精度问题。用像素(px)定位背景图或伪元素时,缩放或不同 DPR 屏幕容易偏移。
em 或 rem 配合文字大小自动缩放px 值,比如用 background-position: 0.2em 0.35em
top 和 left 也建议用 em,而不是固定像素::before 偏移,可以加 transform: translateZ(0) 强制硬件加速(小概率有效)content 设个默认 fallback 字符,万一字体加载失败也不至于空白。