求一个折叠样式的代码片段(变态版)

本贴最后更新于 432 天前,其中的信息可能已经时过境迁

总需求:

202410151257.png

有点复杂,以有序列表为例:


1. 折叠时,去除数字方框阴影

202410151252.png

另:无序列表的折叠阴影不用去除

202410151302.png

2. 只显示“‣”

20241015.png

3. 鼠标悬浮“‣”时,去除方框阴影、“折叠/展开”字样

202410151254.png

4. 折叠标题,去除方框(任我行主题,可以理解为“去除折叠状态标识”)

202410151305.png

  • 思源笔记

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

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

    28443 引用 • 119762 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    11152 引用 • 50647 回帖 • 52 关注

相关帖子

被采纳的回答
  • css 代码如下

    /* 有序列表,折叠时,去除数字方框阴影; 无序列表的折叠阴影不用去除 */
    .protyle-wysiwyg [data-node-id].li[data-subtype="o"][fold="1"]>.protyle-action:after{
        background-color: transparent!important;
    }
    /* 只显示“‣” */
    .protyle-gutters button[data-type="NodeList"] svg,
    .protyle-gutters button[data-type="NodeListItem"] svg
    {
        display:none;
    }
    /* 鼠标悬浮“‣”时去除方框引用 */
    .protyle-gutters button:hover svg{
        background-color: transparent;
    }
    /* 折叠标题,去除方框(任我行主题,可以理解为“去除折叠状态标识”) */
    .protyle-wysiwyg div[fold="1"]:not(div[data-type="NodeListItem"]){
        background-color: transparent;
        border:none;
    }
    /*  鼠标悬浮“‣”时,去除“折叠/展开”字样,css无法实现,见下面的js代码 */
    

    鼠标悬浮“‣”时,去除“折叠/展开”字样,css 无法实现,js 代码如下

    // 鼠标悬浮“‣”时,去除“折叠/展开”字样
    (()=>{
        whenElementExist(".layout__center").then((element)=>{
            element.addEventListener('mouseover', async (e)=>{
                if(e.target.closest('button[aria-label="折叠/展开"]')){
                     const tooltip = await whenElementExist("#tooltip");
                     tooltip.remove();
                }
            });
        });
        function whenElementExist(selector) {
            return new Promise(resolve => {
                const checkForElement = () => {
                    let element = null;
                    if (typeof selector === 'function') {
                        element = selector();
                    } else {
                        element = document.querySelector(selector);
                    }
                    if (element) {
                        resolve(element);
                    } else {
                        requestAnimationFrame(checkForElement);
                    }
                };
                checkForElement();
            });
        }
    })();
    

    另外,你需求里提到的一级标题,我想你本意应该不是仅针对一级标题的样式吧,所以这里的样式和 js 会应用到 h1-h6 所有标题。

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • JOYCELEEEEE

    还是想挣扎一下:

    因此,暂时无法简单的支持,只能用其他样式或标记代替这个箭头按钮来标记折叠状态。

    对折叠的列表,能实现鼠标悬浮时,“‣”变为红色吗?

    1 回复
  • 其他回帖
  • HugZephyr 2 评论

    我 3000 多积分的时候, 大佬还是 5000 多

    现在我终于到 5000 了, 然而大佬已经 1 万 2 了

    image.png

    1 回复
    莫慌,过段时间忙了,你赶超的机会来了 😄
    wilsons
    @wilsons 我拿命超
    HugZephyr
  • JOYCELEEEEE

    大佬,还有点小问题:

    1.我想只在折叠状态下隐藏“‣”后面的标识(上面的代码在非折叠的状态下也把后面的标识隐藏了)

    202410151653.png

    2.折叠状态下,需要常驻显示“‣”(上面的代码只有鼠标悬浮时才显示“‣”,没法辨别折叠状态)

    202410151653.png

    PS:其实需求就是把列表折叠样式(即方框阴影)改为箭头“‣”

    3.标题样式

    之前表述没完全,标题折叠也只需显示“‣”

    202410151719.png

    另:折叠状态下,上面的片段似乎会覆盖以下片段,大佬看看能解决不:

    /* 设置统一的样式 */
    .protyle-wysiwyg [data-node-id][data-type="NodeHeading"]::before {
        position: absolute;
        top: -0.8em;
        color: #55555a4d;
    }
    
    .protyle-wysiwyg [data-node-id].h1::before {
        content: ".";
    }
    
    .protyle-wysiwyg [data-node-id].h2::before {
        content: "..";
    }
    
    .protyle-wysiwyg [data-node-id].h3::before {
        content: "...";
    }
    
    .protyle-wysiwyg [data-node-id].h4::before {
        content: "....";
    }
    
    .protyle-wysiwyg [data-node-id].h5::before {
        content: ".....";
    }
    
    .protyle-wysiwyg [data-node-id].h6::before {
        content: "......";
    }
    
    
    
    
    1 回复
  • wilsons 1 1 评论

    抱歉,之前的回复有问题,并不是因为省略号超出折叠元素范围导致的,而是因为折叠时标题前面的圆形图标和省略号是选择符是同一个元素,且圆形图标的优先级更高,覆盖了省略号导致的。

    所以,我现在在折叠模式下,用标题后面的文字元素再添加个样式来模拟标题元素的省略号,这样就弥补了折叠时标题省略号丢失问题。

    代码如下,添加到思源 css 代码片段中即可。

    .protyle-wysiwyg [data-node-id][data-type="NodeHeading"][fold="1"] > [contenteditable="true"]::before {
        position: absolute;
        top: -0.8em;
        color: #55555a4d;
    }
    
    .protyle-wysiwyg [data-node-id][fold="1"].h1 > [contenteditable="true"]::before {
        content: ".";
    }
    
    .protyle-wysiwyg [data-node-id][fold="1"].h2 > [contenteditable="true"]::before {
        content: "..";
    }
    
    .protyle-wysiwyg [data-node-id][fold="1"].h3 > [contenteditable="true"]::before {
        content: "...";
    }
    
    .protyle-wysiwyg [data-node-id][fold="1"].h4 > [contenteditable="true"]::before {
        content: "....";
    }
    
    .protyle-wysiwyg [data-node-id][fold="1"].h5 > [contenteditable="true"]::before {
        content: ".....";
    }
    
    .protyle-wysiwyg [data-node-id][fold="1"].h6 > [contenteditable="true"]::before {
        content: "......";
    }
    
    感恩!
    JOYCELEEEEE
  • 查看全部回帖

推荐标签 标签

  • Access
    1 引用 • 3 回帖 • 13 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 517 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    29 引用 • 202 回帖 • 54 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    9 引用 • 75 回帖 • 1 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 9 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 191 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 9 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 259 关注
  • Excel
    32 引用 • 29 回帖 • 1 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    316 引用 • 547 回帖 • 4 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    16 引用 • 143 回帖 • 6 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    11 引用 • 15 回帖 • 1 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    269 引用 • 666 回帖 • 1 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1449 引用 • 10092 回帖 • 489 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 75 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖 • 1 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 87 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • 千千插件

    千千块(自定义块 css 和 js)
    可以用 ai 提示词来无限创作思源笔记

    32 引用 • 69 回帖 • 1 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 261 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 80 回帖 • 1 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 687 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 99 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 144 回帖