使用::marker可自定义列表标记样式,如颜色、字体大小;支持color、font-size等属性,通过counter()结合::before实现高级编号格式。
使用 css 的 ::marker 伪元素可以轻松自定义有序列表(ol
)和无序列表(ul
)中的项目符号或编号样式。这个伪元素专门用于控制列表项前的标记内容,比如颜色、大小、字体等。
基本语法与支持属性
::marker 可以应用于 li
、summary
等生成标记的元素。目前支持的 CSS 属性有限,主要包括:
- color:改变标记颜色
- content(部分浏览器支持):不能直接设置,但可通过其他方式间接影响
- font-size、font-family:调整字号和字体
- text-shadow:添加文字阴影效果
注意:不支持所有 CSS 属性,例如不能用 background-color
或 padding
直接作用于 ::marker。
修改颜色和字体大小
以下示例将有序列表的数字变为红色,并增大字号:
立即学习“前端免费学习笔记(深入)”;
这样每个 <li>
前的编号就会呈现为红色加粗的大号字体。
自定义无序列表的项目符号
对于 ul
,可以用 ::marker 改变圆点的颜色或大小:
ul li::marker { color: blue; font-size: 1.5em; }
这会让每个项目符号(如圆点)变成蓝色并放大。
结合 counter() 实现高级编号格式
虽然不能直接通过 content
修改标记文本,但可以通过 CSS 计数器 配合 ::before 来实现更灵活的效果,同时隐藏默认标记:
<pre class="brush:php;toolbar:false;"> ol { list-style: none; /* 关闭默认标记 */ counter-reset: custom-counter; } <p>ol li { counter-increment: custom-counter; }</p><p>ol li::before { content: "[" counter(custom-counter) "] "; color: green; font-weight: bold; margin-right: 8px; }
这种方式能完全自定义编号格式,比如 [1]、[2],甚至加入前缀或图标。
基本上就这些。合理使用 ::marker 能在不破坏语义结构的前提下美化列表外观,适合大多数现代浏览器环境。对旧版浏览器需考虑降级方案。不复杂但容易忽略细节。