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实现的立体文字渐变效果
May 17 Javascript
JavaScript中判断整字类型最简洁的实现方法
Nov 08 Javascript
jquery制作LED 时钟特效
Feb 01 Javascript
详解JavaScript中void语句的使用
Jun 04 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 Javascript
JS实现给json数组动态赋值的方法示例
Mar 19 Javascript
微信小程序下拉刷新界面的实现
Sep 28 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
Jan 16 Javascript
create-react-app 修改为多入口编译的方法
Aug 01 Javascript
浅谈js中的attributes和Attribute的用法与区别
Jul 16 Javascript
vue项目接口域名动态获取操作
Aug 13 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
国内咖啡文化
2021/03/03 咖啡文化
php中文本操作的类
2007/03/17 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
解析Python中的二进制位运算符
2015/05/13 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
遗传算法之Python实现代码
2017/10/10 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
python实现最小二乘法线性拟合
2019/07/19 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
后勤副校长自我鉴定
2013/10/13 职场文书
村长贪污检举信
2014/04/04 职场文书
七一表彰大会简报
2015/07/20 职场文书
消防安全培训工作总结
2015/10/23 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
mysql left join快速转inner join的过程
2021/06/30 MySQL
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS