ObsidianMD列表样式疑问:.cm-list-n仅支持3级,.HyperMD-list-line-4为何生效?
Obsidian MD 多级列表CSS样式问题解析
1. .cm-list-n 仅支持到3级的原因
Obsidian基于CodeMirror编辑器,而CodeMirror原生对列表层级的.cm-list-n类只做了3级定义,超过3级后会循环复用cm-list-1、cm-list-2、cm-list-3这三个类——这是编辑器底层的固有机制,不是Obsidian单独设置的。你用开发者工具看到第4级列表用cm-list-1就是这个原因,所以.cm-list-4根本匹配不到任何元素,代码自然无效。
2. .HyperMD-list-line-4 有效的原因
.HyperMD-list-line-n是Obsidian自己扩展的类,它会严格跟随列表的实际嵌套层级递增,不会循环复用。不管你嵌套多少级,都会有对应的.HyperMD-list-line-n类(n等于实际层级数)。
你提到的优先级问题其实不成立——核心是.cm-list-4不存在,而.HyperMD-list-line-4真实存在于第4级列表的元素上,所以你的CSS规则能精准命中目标,自然生效。
3. 自定义多级列表样式的正确姿势
如果要给4级及以上的列表设置样式,直接用.HyperMD-list-line-n系列类即可,示例:
/* 第4级列表符号 */ .HyperMD-list-line-4 .list-bullet:before { content: '\2024'; } /* 第5级列表符号 */ .HyperMD-list-line-5 .list-bullet:before { content: '\25E6'; }
这样不管嵌套多少层,都能对应到正确的列表层级设置样式。
内容的提问来源于stack exchange,提问作者psj.dev
相关产品推荐
相关产品推荐

