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 相关文章推荐
javascript中用星号表示预录入内容的实现代码
Jan 08 Javascript
深入分析js中的constructor和prototype
Apr 07 Javascript
基于javascript 闭包基础分享
Jul 10 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
Nov 23 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
Aug 25 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
Sep 03 Javascript
JavaScript实现前端实时搜索功能
Mar 26 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
Sep 12 Javascript
vue单页缓存存在的问题及解决方案(小结)
Sep 25 Javascript
CKeditor4 字体颜色功能配置方法教程
Jun 26 Javascript
Vue-cli3项目引入Typescript的实现方法
Oct 18 Javascript
微信小程序实现上传照片代码实例解析
Aug 04 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
ftp类(myftp.php)
2006/10/09 PHP
php Undefined index和Undefined variable的解决方法
2008/03/27 PHP
PHP 实用代码收集
2010/01/22 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
javascript this用法小结
2008/12/19 Javascript
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现测试磁盘性能的方法
2015/03/12 Python
深入浅析python继承问题
2016/05/29 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
python下载微信公众号相关文章
2019/02/26 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
安全生产年活动总结
2014/08/29 职场文书
自荐信格式范文
2015/03/04 职场文书
2016大一新生军训感言
2015/12/08 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python