博客园Markdown编辑器修改代码配色、添加代码行号
1|0修改Markdown代码框
UPD 2020-03-15
五天前这个主题的作者更新了1.2.6版本,新版本中改善了对MD代码框的支持,本教程的部分内容已非必要。
1|1初始效果
前几天换了博客的主题,开始用博客园的md编辑器写博客,然而md编辑器的代码高亮支持有些糟糕。
在新主题下<pre>标签与<code>标签背景颜色不统一,代码没有行号,高亮也没有原编辑器的好看。在网上找的的各种解决方案要不就是太丑要不就是因为博客园版本迭代而跑不起来。于是就开始一顿魔改。
1|2修改配色
去highligh.js官网找一个配色下载CSS贴进去即可,下面是我用的
1|3修改pre
由于有另一个js在写pre的样式,无法保证页脚js与这个js的加载顺序,就创建了个interval,每秒执行一次,直到修改完成。
后来想了下也可以直接用CSS来改变颜色,加上!important就好:
1|4添加行号
审查元素可以发现代码已经在后台被渲染好了,包上了各种奇奇怪怪的class。
一开始的想法是提取<code>的innerHTML,在第一行和每个换行符的后面添加行号。然而改完之后发现,复制代码的功能崩了。。。复制出来的代码是带行号的。
博客园的复制代码用的是clipboard.js,复制代码的按钮有一个属性是data-clipboard-target ,这个属性指向要复制innerText的元素。
于是魔改的思路就是,在原本的<code>左侧新增一个只写行号的<code>,再将原本指向<code-box>的data-clipboard-target改为指向原有的<code>。
因为button是由clipboard.js创建的,同样无法决定js加载顺序,只好再建一个interval。
注意因为要并排放两个<code>,要把原来code.hljs的display属性从block改为inline-block:
js代码:
1|5最终效果
1|6完整代码
https://github.com/woolen-sheep/cnblogs-markdown-code-linenumbers
__EOF__

本文链接:https://www.cnblogs.com/y-m-y/p/12237693.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构