使用::marker与content自定义列表标记失效,是Safari问题还是MDN示例过时?
问题解答
这是Safari浏览器的兼容性细节问题,并非MDN示例错误或过时。
在Chrome、Firefox等多数现代浏览器中,直接通过li::marker { content: '✝ '; }就能覆盖默认列表标记,但Safari对::marker的实现有特殊要求:必须先将列表的list-style-type设置为none,自定义的content才会生效。
正确的实现代码应该是:
li { list-style-type: none; } li::marker { content: '✝ '; }
出现这个差异的原因是Safari的渲染逻辑:当列表保留默认的list-style-type(比如默认的disc,也就是你看到的*符号)时,会优先渲染内置的列表标记,忽略::marker的content设置。而其他浏览器会直接用::marker定义的内容覆盖默认标记。
另外需要注意,Safari 14.1及以上版本才支持::marker伪元素,如果你的Safari版本低于这个版本,也会出现自定义标记无法生效的情况,建议先检查浏览器版本是否符合要求。
内容的提问来源于stack exchange,提问作者user22996855
相关产品推荐
相关产品推荐

