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 相关文章推荐
Mootools 1.2教程(3) 数组使用简介
Sep 14 Javascript
jQuery的学习步骤
Feb 23 Javascript
jquery多选项卡效果实例代码(附效果图)
Mar 23 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
Jan 31 Javascript
png在IE6 下无法透明的解决方法汇总
May 21 Javascript
深入解析JavaScript的闭包机制
Oct 20 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
Mar 22 Javascript
vue.js打包之后可能会遇到的坑!
Jun 03 Javascript
支付宝小程序tabbar底部导航
Nov 06 Javascript
vue组件之间通信方式实例总结【8种方式】
Feb 22 Javascript
微信小程序访问豆瓣电影api的实现方法
Mar 31 Javascript
JS实现电商商品展示放大镜特效
Jan 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 错误之引号中使用变量
2009/05/04 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
JS实现简易计算器
2020/02/14 Javascript
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
python中几种自动微分库解析
2019/08/29 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
加拿大时装零售商:Influence U
2018/12/22 全球购物
一些PHP的面试题
2015/05/06 面试题
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
艺术节开幕词
2015/01/28 职场文书
朋友聚会开场白
2015/06/01 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
Java 在线考试云平台的实现
2021/11/23 Java/Android