CSS
在使用 <ul><ol> 时自定义数字或项目符号的颜色,大小或类型很简单。
利用css的:marker伪元素,可以很轻易的更改内容以及项目符号和数字的某些样式。
::marker伪元素它作用在任何设置了display:list-item的元素或伪元素上。

::marker是什么?

css 伪元素 ::marker 是从 CSS Pseudo-Elements Level 3 开始新增,CSS Pseudo-Elements Level 4 中完善的一个比较新的伪元素,从 Chrome 86+ 开始得到浏览器的支持。
利用它,可以给元素添加一个伪元素,用于生成一个项目符号或者数字。
正常而言,有如下结构:

  1. <ul>
  2. <li>Contagious</li>
  3. <li>Stages</li>
  4. <li>Pages</li>
  5. <li>Courageous</li>
  6. <li>Shaymus</li>
  7. <li>Faceless</li>
  8. </ul>

默认不添加任何特殊的样式,它的样式大概是这样:
CSS ::marker伪元素,修改li的项目符号颜色,字号字体 - 图1
利用 ::marker 可以对序号前面的小圆点进行改造:

  1. li {
  2. padding-left: 12px;
  3. cursor: pointer;
  4. color: #ff6000;
  5. }
  6. li::marker {
  7. content: '>';
  8. }

就可以将小圆点改造成任意想要的:
CSS ::marker伪元素,修改li的项目符号颜色,字号字体 - 图2

::marker使用说明

1、除了ulol下的li标签可直接使用::marker伪元素,其他元素使用需要设置display:list-item的属性才支持。
2、其次,对于::marker伪元素的样式,不是任何样式属性都能使用,目前只支持如下这样样式:(另外注意不允许的 background 属性是没有效果的)

  1. animation-*
  2. transition-*
  3. color
  4. direction
  5. font-*
  6. content
  7. unicode-bidi
  8. white-space

3、::marker伪元素标记不是所有浏览器都支持,包括chrome也只是在80以上版本通过启用experimental Web Platform才支持,而safari浏览器目前还不支持对content进行自定义,只支持比较原始的几种。

::marker调试

Chrome DevTools随时可以帮助检查,调试和修改应用于 ::marker 伪元素的样式。
CSS ::marker伪元素,修改li的项目符号颜色,字号字体 - 图3

总结

列表在前端项目中很常见,应用场景也十分广泛。::marker伪元素是对list-style-imagelist-style-text的补充,三者都是定义标记块的填充内容,image注重图像,text注重字符串,::marker则可以定fontcolor等样式,各具特色。