【已解决】CSS 代码片段修改:长代码块、嵌入块与表格块添加滚动条

本贴最后更新于 407 天前,其中的信息可能已经时异事殊

想对下面的这个 CSS 代码片段进行修改

该代码片段取自[思源笔记经验分享] 为长代码块、长嵌入块与长表格添加块内滚动条 - 链滴 (ld246.com),感谢大佬

/* 滚动条轨道样式 */
.protyle-wysiwyg div.code-block[data-node-id]::-webkit-scrollbar-track,
.protyle-wysiwyg [data-node-id][data-type="NodeTable"] table::-webkit-scrollbar-track {
    background-color: var(--b3-border-color);
    border-radius: 8px;
}

/* 为嵌入块与代码块添加纵向滚动条 */
.protyle-wysiwyg [data-node-id][data-type="NodeBlockQueryEmbed"],
.protyle-wysiwyg div.code-block[data-node-id] {
    overflow-y: auto;
    max-height: 50vh;
}

/* 为表格块添加纵向滚动条 */
.protyle-wysiwyg [data-node-id][data-type="NodeTable"] table {
    position: relative;
    overflow-y: auto;
    max-height: 50vh;
}

.protyle-wysiwyg [data-node-id][data-type="NodeTable"] table>thead {
    position: sticky;
    top: 1px;
    outline: 1px solid var(--b3-theme-primary);
    z-index: 1;
}

然而在最新版思源 v2.10.13 中,该代码片段会导致代码块出现两个纵向滚动条,其中靠右边的滚动条会使代码块整体框体向下移动,出现大片空白区域。当代码区域已显示最低端、不小心继续向下滚动鼠标滚轮时,就会触发右侧滚动条,出现大片空白

image.png

请问各位大佬,怎么修改上面这段 CSS,可以避免代码块整体框体的向下移动呢?

期待的效果是消除靠右侧的滚动条,并避免整体框体的下移

已尝试直接删除 overflow-y: auto,然而这会导致左侧行号显示异常,溢出到代码块以外

image.png

  • 思源笔记

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

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

    22930 引用 • 92197 回帖 • 1 关注
  • Q&A

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

    8407 引用 • 38307 回帖 • 156 关注
1 操作
QMike 在 2023-11-08 11:44:58 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • QMike 1 赞同

    顶一下,呜呜呜

  • 我自己对着这个改过,感觉还好
    任意块通过自定义属性 src:1 添加滚动条

    .protyle-wysiwyg [data-node-id][custom-scr="1"] {
        overflow-y: auto;
        max-height: 50vh;
    }
    
    1 回复
  • 好像不太行,一方面这需要手动加上自定义属性 scr: 1,不太方便;另外实测还是会出现两个纵向滚动条、并有一样的空白区域 😂

    1 回复
  • 好像还真是,我的也寄了,应该和这个版本 2.10.13 有关系

  • 经群里面 Roy 佬的指点,在代码片段中添加如下代码便可正常显示

    .protyle-linenumber, .protyle-linenumber__rows{
    	height:100%;
    }
    

    再次感谢佬~

  • 嵌入块和代码块的 CSS 选择器还要再加一点东西,不然右上角的按钮和书签会被遮住

    image.png

    image.png

    /* 为嵌入块与代码块添加纵向滚动条 */
    .protyle-wysiwyg [data-node-id][data-type="NodeBlockQueryEmbed"] .protyle-wysiwyg__embed ,
    .protyle-wysiwyg div.code-block[data-node-id] .hljs
    
    1 回复
  • 谢谢佬的提醒,的确存在这个问题

    不过测试了一下,将嵌入块和代码块的 CSS 选择器修改为这个形式后,会导致两个问题:

    • 嵌入块、代码块框体再次出现整体下移和大片空白的情况(即使加上了修正代码)
    • 代码整体略微上移,不能与行号对齐

    PixPin20240327102104.png

    现在一种解决方法是加入如下 CSS 代码片段以正常显示代码块、嵌入块的命名、别名等

    
    /*代码块折叠状态下,属性(命名、别名)位置*/
    .protyle-wysiwyg [data-node-id][fold="1"]:not(.li):not([data-type="NodeHeading"]) .protyle-attr {
        opacity: 1;
        font-weight: bold;
        transform: translate(-80px,130%);
    }
    /*代码块展开状态下,属性(命名、别名)位置*/
    .code-block > .protyle-attr {
        transform: translate(-80px,130%);
    }
    
    /*嵌入块展开状态下,属性(命名、别名)位置*/
    .protyle-wysiwyg [data-node-id][data-type="NodeBlockQueryEmbed"] .protyle-attr {
        transform: translate(-80px,130%);
    }
    

    效果如下:

    image.png

    不过右上角三个按钮的悬浮提示依然无法正常显示

    1 操作
    QMike 在 2024-03-27 11:27:29 更新了该回帖
请输入回帖内容 ...

推荐标签 标签

  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 529 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 3 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 160 关注
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 3 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    92 引用 • 899 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    105 引用 • 127 回帖 • 369 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    223 引用 • 474 回帖 • 1 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1706 回帖
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 1 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 3 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    107 引用 • 153 回帖 • 1 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 173 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    51 引用 • 25 回帖 • 2 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1795 回帖
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 3 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 48 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    53 引用 • 40 回帖
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 789 关注
  • V2Ray
    1 引用 • 15 回帖
  • 安全

    安全永远都不是一个小问题。

    200 引用 • 816 回帖
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    20 引用 • 7 回帖 • 1 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 371 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    149 引用 • 257 回帖 • 1 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖 • 1 关注