思源笔记自带的有序列表和无序列表,也支持多级,但是各级的前导字符都是一样的,层次感不好,用起来别扭,我通过代码片段样式实现了一个自定义的,用了一段时间,效果非常好,现分享出来:
无序列表
/* 初始化计数器 */
.list[data-subtype="o"] {
counter-reset: o1 0 o2 0 o3 0;
}
.protyle-wysiwyg [data-node-id].li[data-subtype="o"]>.protyle-action,
.protyle-wysiwyg [data-node-id].li[data-subtype="o"]>.protyle-action:hover{
color: #007BFF; /* 修改为好看的蓝色 */
font-weight: bold; /* 加粗 */
}
.protyle-wysiwyg .li[data-subtype="o"] > .protyle-action::after {
color: #db4d52 !important; /* 修改为红橙色调 */
font-weight: bold !important; /* 加粗 */
padding: 3px 2px;
width: 24px;
display: flex;
justify-content: center;
position: absolute;
}
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o2;
content: counter(o2, lower-latin) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o3;
content: counter(o3, lower-roman) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o1;
content: counter(o1, decimal) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
/* 继续为更深的层级添加相同的模式... */
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o2;
content: counter(o2, lower-latin) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o3;
content: counter(o3, lower-roman) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o1;
content: counter(o1, decimal) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
/* ...继续为更深的层级添加相同的模式 */
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o2;
content: counter(o2, lower-latin) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o3;
content: counter(o3, lower-roman) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o1;
content: counter(o1, decimal) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
/* 最深层级 */
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o2;
content: counter(o2, lower-latin) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
.protyle-wysiwyg .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o3;
content: counter(o3, lower-roman) "." !important;
color: #db4d52 !important; /* 修改为红橙色调 */
}
[data-subtype="u"] > .li[data-subtype="u"] > .protyle-action svg {
color: transparent;
}
/* 设置无序列表标记的颜色 */
[data-subtype="u"] > .li[data-subtype="u"] > .protyle-action::before {
font-size: 1.5em;
font-family: Arial;
content: "•";
position: absolute;
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "◦";
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "▪";
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "▫";
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "◦";
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "▪";
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "•";
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "◦";
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "▪";
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "▫";
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "◦";
color: #db4d52; /* 修改颜色为红橙色调 */
}
[data-subtype="u"] > [data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] .li[data-subtype="u"] > .protyle-action::before {
content: "▫";
color: #db4d52; /* 修改颜色为红橙色调 */
}
有序列表
/* 隐藏原始编号 */
.li[data-subtype="o"] .li[data-subtype="o"] .protyle-action--order {
color: transparent !important;
}
/* 动态生成编号的颜色 */
.li[data-subtype="o"] .li[data-subtype="o"] .protyle-action::after {
color: var(--b3-theme-on-background);
}
/* 初始化计数器 */
.list[data-subtype="o"] {
counter-reset: o1 0 o2 0 o3 0 o4 0;
}
/* 第一层嵌套:阿拉伯数字 (1. 2. 3.) */
.li[data-subtype="o"] > .protyle-action::after {
counter-increment: o1;
content: counter(o1, decimal) ".";
position: absolute;
padding: 3px 2px;
width: 24px;
display: flex;
justify-content: center;
margin: -20px 0 0 -8px !important;
}
/* 第二层嵌套:中文括号 + 阿拉伯数字 ((1) (2) (3)) */
.li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o2;
content: "(" counter(o2, decimal) ")";
position: absolute;
}
/* 第三层嵌套:大写拉丁字母 (A. B. C.) */
.li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o3;
content: counter(o3, upper-alpha) ".";
position: absolute;
}
/* 第四层嵌套:小写罗马数字 (i. ii. iii.) */
.li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o4;
content: counter(o4, lower-roman) ".";
position: absolute;
}
/* 循环更深层次嵌套,按四层规则重新开始 */
/* 第一层规则:阿拉伯数字 (循环) */
.li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o1;
content: counter(o1, decimal) ".";
position: absolute;
}
/* 第二层规则:中文括号 + 阿拉伯数字 (循环) */
.li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o2;
content: "(" counter(o2, decimal) ")";
position: absolute;
}
/* 第三层规则:大写拉丁字母 (循环) */
.li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o3;
content: counter(o3, upper-alpha) ".";
position: absolute;
}
/* 第四层规则:小写罗马数字 (循环) */
.li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] .li[data-subtype="o"] > .protyle-action::after {
counter-increment: o4;
content: counter(o4, lower-roman) ".";
position: absolute;
}
用法
用法其实非常简单:
设置 → 外观 → 代码片段。
将这两份 CSS 样式放进去,就立即生效了。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于