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 相关文章推荐
extjs 学习笔记(一) 一些基础知识
Oct 13 Javascript
js 蒙版进度条(结合图片)
Mar 10 Javascript
jQuery中siblings()方法用法实例
Jan 08 Javascript
详解Bootstrap按钮
Jan 04 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
Jun 29 Javascript
移动适配的几种方案(三种方案)
Nov 25 Javascript
EasyUI创建人员树的实例代码
Sep 15 Javascript
jQuery使用zTree插件实现可拖拽的树示例
Sep 23 jQuery
jqueryUI tab标签页代码分享
Oct 09 jQuery
关于Vue的路由权限管理的示例代码
Mar 06 Javascript
react+redux仿微信聊天界面
Jun 21 Javascript
微信小程序按顺序同步执行的两种方式
Dec 20 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
js获取鼠标点击的位置实现思路及代码
2014/05/09 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
简单理解Python中的装饰器
2015/07/31 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
Python元组常见操作示例
2019/02/19 Python
python如何统计代码运行的时长
2019/07/24 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
python deque模块简单使用代码实例
2020/03/12 Python
人事专员工作职责
2014/02/22 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
大学新生军训方案
2014/05/03 职场文书
实习公司领导推荐函
2014/05/21 职场文书
就业协议书样本
2014/08/20 职场文书
英文演讲稿开场白
2014/08/25 职场文书
个人年终总结怎么写
2015/03/09 职场文书
MSSQL基本语法操作
2022/04/11 SQL Server
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis