思源笔记 CSS 片段丨列表自动加粗

背景

列表项(li) 有内容的话,我一般会加粗这个列表项,来凸显一级内容。之前一直都是手动加粗,每次都觉得太麻烦了,所以在 GPT 的帮助下,写了一个 CSS 代码,可以自动进行加粗,效果挺不错的。

CSS 片段

功能

  • 自动加粗有子项的列表项(li)
  • 【文档/列表块】自定义属性添加 list-autobold=false 可取消列表自动加粗
  • 【非顶级列表块/列表项没有子项的列表块】自定义属性添加 list-autobold=true 可自动加粗

版本 1:只要一个列表项(li)有子项,则所属的列表块(list)的最顶级列表项(li)都加粗

/* ************列表自动加粗*********** */
/* ** 版本1:只要一个列表项(li)有子项,则所属的列表块(list)的最顶级列表项(li)都加粗** */
/* ** 顶级列表自动加粗:文档/列表块自定义属性添加`list-autobold=false`取消自动加粗)** */
.protyle-wysiwyg:not([custom-list-autobold="false"])>.list:not([custom-list-autobold="false"]):has(>.li> div.protyle-action+ .p +div:not(.protyle-attr)) {

    /* 选择列表项的第一个段落进行加粗 */
    &>.li>div.protyle-action+.p {
        font-weight: bold;
    }
}
.b3-typography ul:not([custom-list-autobold="false"]):has(li>p+*){
    &>li>p {
        font-weight: bold;
    }
}

/* ** 【非顶级列表块/列表项没有子项的列表块】自定义属性添加`list-autobold=true`可自动加粗**  */
.protyle-wysiwyg .list[custom-list-autobold="true"] {

    /* 选择列表项的第一个段落进行加粗 */
    &>.li>div.protyle-action+.p {
        font-weight: bold;
    }
}
.b3-typography ul[custom-list-autobold="true"] {
    &>li>p {
        font-weight: bold;
    }
}

Clip20240717144338.png

版本 2:只加粗有子项的 li,但同一个列表,一个 li 没有子项就不会加粗。


/* ************列表自动加粗*********** */
/* ** 版本2:只加粗有子项的li,但同一个列表,一个li没有子项就不会加粗** */
/* ** 顶级列表自动加粗:文档/列表块自定义属性添加`list-autobold=false`取消自动加粗)** */
.protyle-wysiwyg:not([custom-list-autobold="false"])>.list:not([custom-list-autobold="false"]) >.li:has(> div.protyle-action+ .p +div:not(.protyle-attr)) {

    /* 选择列表项的第一个段落进行加粗 */
    &>div.protyle-action+.p {
        font-weight: bold;
    }
}

.b3-typography ul:not([custom-list-autobold="false"]) > li:has(>p+*){
    &>p {
        font-weight: bold;
    }
}

/* ** 【非顶级列表块/列表项没有子项的列表块】自定义属性添加`list-autobold=true`可自动加粗**  */
.protyle-wysiwyg .list[custom-list-autobold="true"] {

    /* 选择列表项的第一个段落进行加粗 */
    &>.li>div.protyle-action+.p {
        font-weight: bold;
    }
}
.b3-typography ul[custom-list-autobold="true"] {
    &>li>p {
        font-weight: bold;
    }
}

Clip20240717144301.png

未来有时间可能会开发一个插件(或者感兴趣的大佬可以帮忙开发),更便捷让列表自动加粗和取消加粗,计划插件应该有的功能:

  • 选择是否启用顶级列表自动加粗功能
  • 通过右键块菜单【插件-列表自动加粗】,点击即可自动加粗或者取消加粗

学习

CSS 中的 nest 嵌套语法:用于嵌套规则,可以在嵌套的规则中更方便地创建复杂的选择器,而无需重复写父选择器。

.button {
  color: blue;
  &:hover {
    color: red;
  }
}

/* &代表父选择器,也可以忽略 */

现代 CSS 解决方案:原生嵌套(Nesting) - ChokCoco - 博客园 (cnblogs.com)

过去只有在 LESS、SASS 等预处理器中,我们才能使用嵌套的写法

从 Chrome 112 开始,原生 CSS 也可以使用嵌套语法了。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22352 引用 • 89434 回帖 • 1 关注
3 操作
Achuan-2 在 2024-07-17 14:47:05 更新了该帖
Achuan-2 在 2024-07-17 14:44:25 更新了该帖
Achuan-2 在 2024-07-17 07:20:26 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
Achuan-2
给时间以生命而不是给生命以时间,如果你喜欢我的分享,欢迎给我买杯咖啡 https://www.yuque.com/achuan-2 上海