概述
Highlight.js 是一个用 JavaScript 编写的语法高亮器。它既可以在纯浏览器端,也可以在服务端使用。它几乎可以处理任何标记,不依赖任何其他框架,并且具有语言自动检测功能。
浏览器端
highlight.js 最基本的用法,就是在页面上仅引用插件库脚本和一个主题,然后调用 highlightAll():
<linkrel="stylesheet"href="/path/to/styles/default.min.css">
<scriptsrc="/path/to/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
上述调用将会检索所有 <pre><code> 标签并对其中内容进行代码高亮处理,它会尝试自动检测语言。如果语言自动检测失败,又或者你想明确指定语言,那么可以使用 class 进行手动指定:
<pre><codeclass="language-html">...</code></pre>
纯文本代码块
对于纯文本,若要想应用 Highlight.js 主题样式,而又不对文本内容进行高亮显示,请使用 plaintext 语言:
<pre><codeclass="language-plaintext">...</code></pre>
跳过高亮处理
使用 nohighlight class 可以完全跳过本插件所有的处理,保持 code 标签原本的样式:
<pre><codeclass="nohighlight">...</code></pre>
详细介绍文档:http://highlight.cndoc.wiki/doc
Highlightjs显示代码行号处理办法
Highlightjs默认是不包括显示代码行号(Line Number)这一特性的,不过可以通过简单的JS代码和CSS样式表实现对Highlightjs的行号显示功能。
//numbering for pre>code blocks
$(function(){
$('pre code').each(function(){
var lines = $(this).text().split('\n').length - 1;
var $numbering = $('<ul/>').addClass('pre-numbering');
$(this)
.addClass('has-numbering')
.parent()
.append($numbering);
for(i=1;i<=lines;i++){
$numbering.append($('<li/>').text(i));
}
});
});
实际上很简单,首先找到代码块$('pre code')。然后取得内容并按照换行符split,我们可以得到代码块的行数。最后,我们构建一个包含从数字1到行数n的行号列表,然后把这个列表追加到</pre>和</code>的闭合标签之间。
此外通过添加适当的css样式将行号列表渲染到代码的左手边缘。使用时请结合页面样式对下面的css做出相应修改。
pre {
position: relative;
margin-bottom: 24px;
border-radius: 3px;
border: 1px solid #C3CCD0;
background: #FFF;
overflow: hidden;
}
code {
display: block;
padding: 12px 24px;
overflow-y: auto;
font-weight: 300;
font-family: Menlo, monospace;
font-size: 0.8em;
}
code.has-numbering {
margin-left: 21px;
}
.pre-numbering {
position: absolute;
top: 0;
left: 0;
width: 20px;
padding: 12px 2px 12px 0;
border-right: 1px solid #C3CCD0;
border-radius: 3px 0 0 3px;
background-color: #EEE;
text-align: right;
font-family: Menlo, monospace;
font-size: 0.8em;
color: #AAA;
}
通过上面的js代码和css样式表,即可完成简单易用的Highlightjs行号显示。
以上所述是小编给大家介绍的JS库 Highlightjs 添加代码行号的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
发表评论 取消回复