代码片段:代码块限制最大高度

本贴最后更新于 365 天前,其中的信息可能已经物是人非

代码块限制最大高度_复制按钮不跟随滚动

代码片段 1

功能介绍

  • 当代码块超过指定高度(这里设置为 800px),出现滚动条进行滚动
  • 代码语言、代码块复制按钮和代码块菜单不跟随代码块滚动条滚动

缺点:不支持显示行号滚动

CSS 代码

/* ---------------------------代码块限制最大高度------------------------------*/ /* 限制代码块高度,设置超过高度,出现滚动条 */ .protyle-wysiwyg .code-block { overflow: hidden; } .protyle-wysiwyg .code-block .hljs { max-height: 800px; overflow: auto; padding-top: 32px !important; padding-bottom: 20px !important; } /* 调整代码块命名、别名等块属性位置 */ .protyle-wysiwyg .protyle-linenumber__rows { max-height: 852px; overflow: clip; height: 100%; } .protyle-wysiwyg .code-block .protyle-attr { top: -2px; } /* 代码块复制和菜单按钮 */ .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw { top: 17px; } /* 代码块复制按钮和菜单按钮的提示文字放在下方 */ .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw::after { top: 100%; bottom: inherit; margin-top: 5px; } .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw::before { top: 100%; bottom: inherit; rotate: 180deg; margin-top: -4px; } /* 导出pdf取消限制最大高度 */ #preview .protyle-wysiwyg .code-block .hljs { max-height: none; } /* ---------------------------代码块限制最大高度------------------------------*/

代码片段 2

支持行号滚动

缺点

  • 横向滚动条只会在末尾出现
  • 代码语言、代码块复制按钮和代码块菜单跟随代码块滚动条滚动
/* ---------------------------代码块限制最大高度------------------------------*/ /* 限制代码块高度,设置超过高度,出现滚动条 */ .protyle-wysiwyg .code-block { max-height: 800px; overflow: auto; } /* 防止因代码行号和代码渲染内容导致出现多重滚动条 */ .protyle-wysiwyg .hljs, .protyle-linenumber__rows { height: max-content; } /* 调整代码块命名、别名等块属性位置 */ .protyle-wysiwyg .code-block .protyle-attr { top: -2px; } /* 代码块功能按钮:包括代码语言、复制和菜单按钮 */ .protyle-wysiwyg .code-block .protyle-action { /* 为了代码块复制按钮可以sticky,需要设置高度 */ height: 100%; /* 取消top高度,否则会出现代码块会被撑开出现滚动条 */ top: 0px !important; /* 需要禁止鼠标点击,否则浮在上面代码块上无法点击 */ pointer-events: none !important; } /* 代码块语言 */ .protyle-wysiwyg .code-block .protyle-action .protyle-action__language { margin-top: 6px; position: absolute; top: 6px; position: sticky; /* 由于父元素禁止点击,所以要子元素允许点击 */ pointer-events: all !important; align-self: flex-start; } /* 代码块复制和菜单按钮 */ .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw { /* 调整位置 */ top: 17px; /* 代码块复制按钮sticky,不跟随滚动 */ position: sticky; /* 由于父元素禁止点击,所以要子元素允许点击 */ pointer-events: all !important; } /* 代码块复制按钮和菜单按钮的提示文字放在下方 */ .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw::after { top: 100%; bottom: inherit; margin-top: 5px; } .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw::before { top: 100%; bottom: inherit; rotate: 180deg; margin-top: -4px; } /* 导出pdf取消限制最大高度 */ #preview .protyle-wysiwyg .code-block { max-height: none; } /* ---------------------------代码块限制最大高度------------------------------*/

如何使用

如何使用代码片段 (yuque.com)

  • 思源笔记

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

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

    25443 引用 • 105227 回帖
5 操作
Achuan-2 在 2024-05-10 16:37:19 更新了该帖
Achuan-2 在 2024-05-10 16:25:41 更新了该帖
Achuan-2 在 2024-05-10 14:33:46 更新了该帖
Achuan-2 在 2024-05-10 14:07:39 更新了该帖 Achuan-2 在 2024-05-10 12:37:45 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 这个三角形反了,能改吗?

    image.png

    1 回复
  • Achuan-2 1

    可以改

    .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw::before { top: 100%; bottom: inherit; rotate: 180deg; margin-top: -4px; }
  • 我这里的行号会对不齐:

    image.png

    1 回复
  • Achuan-2 1 1 评论

    我这边没有问题,尝试 f5 刷新下

    找到问题了,插件导致的 Issue #1 · frostime/sy-line-height
    JeffreyChen
  • 佬,使用这个代码片段后,向下滚动超过一段距离,代码语言、复制按钮和菜单还是会收缩消失,这个可以修改避免嘛?

    recording.gif

    另外,能否做到一直显示底部的横向滚动条呢?目前除非代码块滚动到最低端,否则底部的横向滚动条会随着纵向滚动而消失

    2 回复
  • 代码语言是会跟随滚动条滚动的

    该回帖因已过时而被折叠
    1 操作
    JeffreyChen 在 2024-05-10 15:56:42 折叠了该回帖
  • Achuan-2

    使用这个代码片段后,向下滚动超过一段距离,代码语言、复制按钮和菜单还是会收缩消失,这个可以修改避免嘛?

    我暂时没法直接解决

    如果不在乎行号滚动可以用下面这个代码(个人不喜欢开行号),除非思源改 dom 结构,把行号和代码用一个父节点包裹在一起

    /* ---------------------------代码块限制最大高度------------------------------*/ /* 限制代码块高度,设置超过高度,出现滚动条 */ .protyle-wysiwyg .code-block { overflow: hidden; } .protyle-wysiwyg .code-block .hljs { max-height: 800px; overflow: auto; padding-top: 32px !important; padding-bottom: 20px !important; } /* 防止因代码行号和代码渲染内容导致出现多重滚动条 */ /* .protyle-wysiwyg .hljs, .protyle-linenumber__rows { height: max-content; } */ /* 调整代码块命名、别名等块属性位置 */ .protyle-wysiwyg .protyle-linenumber__rows { max-height: 852px; overflow: clip; height: 100%; } .protyle-wysiwyg .code-block .protyle-attr { top: -2px; } /* 代码块复制和菜单按钮 */ .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw { top: 17px; } /* 代码块复制按钮和菜单按钮的提示文字放在下方 */ .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw::after { top: 100%; bottom: inherit; margin-top: 5px; } .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw::before { top: 100%; bottom: inherit; rotate: 180deg; margin-top: -4px; } /* 导出pdf取消限制最大高度 */ #preview .protyle-wysiwyg .code-block .hljs { max-height: none; } /* ---------------------------代码块限制最大高度------------------------------*/
    2 回复
  • 明白了,还是得思源改下代码块结构才行

  • 佬,我也想对嵌入块限制最大高度,不过遇到了按钮提示文字显示在按钮上方,而被遮挡住的问题。

    怎么修改下面这段代码片段,使得嵌入块按钮的提示文字也位于按钮下方呢

    /* 代码块复制按钮和菜单按钮的提示文字放在下方 */ .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw::after { top: 100%; bottom: inherit; margin-top: 5px; } .protyle-wysiwyg .code-block .protyle-action .b3-tooltips__nw::before { top: 100%; bottom: inherit; rotate: 180deg; margin-top: -4px; }
  • hihaojie

    大佬,原来的代码片段和新版思源(3.1.4)出现了不兼容,可否更新下 😭 。新版的代码块,启用代码片段后,上下出现一大块空白,好难受 😭

    1 回复
  • DOM 改了之后代码块用这个应该就行了:

    div:not(#preview) > .protyle-wysiwyg .code-block .hljs { max-height: 800px; }
请输入回帖内容 ...