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 相关文章推荐
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
Jan 11 Javascript
javascript重写alert方法的实例代码
Mar 29 Javascript
原生js和jquery实现图片轮播淡入淡出效果
Apr 23 Javascript
自定义刻度jQuery进度条及插件
Sep 02 Javascript
用JS实现轮播图效果(二)
Jun 26 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
Sep 08 Javascript
JavaScript 事件对内存和性能的影响
Jan 22 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
May 12 Javascript
vue2.0 父组件给子组件传递数据的方法
Jan 15 Javascript
基于Vue中点击组件外关闭组件的实现方法
Mar 06 Javascript
JS实现模糊查询带下拉匹配效果
Jun 21 Javascript
JS前端模块化原理与实现方法详解
Mar 17 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 array_walk() 数组函数
2011/07/12 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
JS实现留言板功能
2017/06/17 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
详解js访问对象的属性和方法
2018/10/25 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
python列出目录下指定文件与子目录的方法
2015/07/03 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
Python 异常处理的实例详解
2017/09/11 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
python中时间模块的基本使用教程
2019/05/14 Python
Python中字符串与编码示例代码
2019/05/20 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
大学生学习生活的自我评价
2013/11/01 职场文书
校班主任推荐信范文
2013/12/03 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang