概述

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 添加代码行号的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部