JS库 Highlightjs 添加代码行号的实现代码


Posted in Javascript onSeptember 13, 2017

Highlightjs是一款优秀的代码高亮Js组件,可以很方便地对各种语言编写的代码添加语法高亮样式。

然而,Highlightjs默认是不包括显示代码行号(Line Number)这一特性的,不过可以通过简单的JS代码和CSS样式表实现对Highlightjs的行号显示功能。

参考博文链接: syntax-highlighting-with-highlightjs

Javascript代码:

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

Javascript 相关文章推荐
基于JQuery的Select选择框的华丽变身
Aug 23 Javascript
window.opener用法和用途实例介绍
Aug 19 Javascript
简单常用的幻灯片播放实现代码
Sep 25 Javascript
js实现幻灯片效果(基于jquery插件)
Nov 05 Javascript
jquery 字符串切割函数substring的用法说明
Feb 11 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
Jul 13 Javascript
使用JavaScript实现链表的数据结构的代码
Aug 02 Javascript
原生js实现简单的模态框示例
Sep 08 Javascript
vue-cli中vue本地实现跨域调试接口
Jan 16 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
Aug 14 Javascript
vue proxy 的优势与使用场景实现
Jun 15 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
Nov 07 Javascript
详解动画插件wow.js的使用方法
Sep 13 #Javascript
JS库之Highlight.js的用法详解
Sep 13 #Javascript
详解wow.js中各种特效对应的类名
Sep 13 #Javascript
强大的JavaScript响应式图表Chartist.js的使用
Sep 13 #Javascript
JS库之Waypoints的用法详解
Sep 13 #Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 #Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
Sep 13 #Javascript
You might like
php采集中国代理服务器网的方法
2015/06/16 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
2017/04/13 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
面包屑导航详解
2017/12/07 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
python palywright库基本使用
2021/01/21 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
三好学生先进事迹材料
2014/08/28 职场文书
数学备课组工作总结
2015/08/12 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server