您现在的位置是:首页 > 点滴分享 > 经验分享 网站首页点滴分享

highlight.js 插件添加行号

本博客使用的代码高亮工具为highlight.js,但是highlight.js不支持行号显示。默认效果如下:
highlight.js默认效果
看起来虽然不是很影响,但是在其他站几乎都是带有行号的,而且看起来也比较舒服,于是就打算添加一下行号看起来虽然不是很影响,但是在其他站几乎都是带有行号的,而且看起来也比较舒服,于是就打算添加一下行号。


在搜索之后,发现了已经有大佬实现了该功能,在此记录一下。

具体实现方法如下: 1. JS代码,在highlight.js之外添加以下js代码

$("code").each(function(){
$(this).html("<ul><li>" + $(this).html().replace(/\n/g,"\n</li><li>") +"\n</li></ul>");
});

  1. 修改css文件,为行号添加样式(此处为vs.css)

.hljs {
    border: 0;
    font-family: "Consulas", "Courier New", Courier, mono, serif;
    font-size: 12px;
    background: #eee !important;
    display: block;
    padding: 1px;
    margin: 0;
    width: 100%;
    font-weight: 200;
    color: #333;
    white-space: pre-wrap
}
.hljs ul {
    list-style: decimal;
    background-color: #fff;
    margin: 0px 0px 0 40px !important;
    padding: 0px;
}
.hljs ul li {
    list-style: decimal-leading-zero;
    border-left: 1px solid #ddd !important;
    background: #fff;
    padding: 5px!important;
    margin: 0 !important;
    line-height: 14px;
    word-break: break-all;
    word-wrap: break-word;
}
.hljs ul li:nth-of-type(even) {
    background-color: #fcfcfc;
    color: inherit;
}

就这样就可以了,效果如下:

添加行号后效果图

原文链接>>>highlight.js 增加行数


##################更新节点#######################

发现上述代码的一个bug,就是当我们使用markdown的 ``来包括一些简短的code时,也会被分割,即下面这种结果:

解决方法: 将上述分割代码中的$(“code”)改为$(“pre code”)就好了。 上面的代码的问题在于所有的由<code></code>标签包裹的全部会被分割,但是我们需要显示行号的只有包含在<pre></pre>标签里面的<code></code>,所以像上面那样改一下,问题就解决了。最终结果如下:

 

文章评论

Top