# highlight.line-numbers.js **Repository Path**: yangrz/highlight.line-numbers.js ## Basic Information - **Project Name**: highlight.line-numbers.js - **Description**: 自己写的 highlight.js 行号插件 - **Primary Language**: JavaScript - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: https://yangrz.gitee.io/highlight.line-numbers.js/demo.html - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 1 - **Created**: 2020-04-05 - **Last Updated**: 2022-09-06 ## Categories & Tags **Categories**: javascript-toolkits **Tags**: None ## README # highlight.line-numbers.js ### 介绍 自己写的 [highlight.js](https://highlightjs.org/) 行号插件。 演示: https://yangrz.gitee.io/highlight.line-numbers.js/demo.html ### 为何造轮子 前端代码高亮插件 [highlight.js](https://highlightjs.org/),默认是不带行号显示功能的,我的博客曾经使用的是比较流行的 [highlightjs-line-numbers.js](https://github.com/wcoder/highlightjs-line-numbers.js) 来显示行号。但是,最近我仔细观察时发现,这个 highlightjs-line-numbers.js 插件在处理空行的时候,把空行替换成了空格。可是有些时候,我们的空行是有特殊意义的,我希望插件最好不要对我的代码进行任何改动! 基于以上原因,我才决定自己写行号插件。 本人在写这个插件时,参考或直接引用了 highlightjs-line-numbers.js 的部分代码! 想了解更多,请阅读博文: https://www.yangdx.com/2020/04/144.html ### 使用方法 插入 JS 文件和代码(注意顺序): ```html ``` 添加 CSS 样式: ```css pre { position: relative; } .hljsln { display: block; margin-left: 2.4em; padding-left: 0.7em !important; } .hljsln::-webkit-scrollbar { height: 15px; } .hljsln::-webkit-scrollbar-thumb { background: #666; } .hljsln::-webkit-scrollbar-thumb:hover { background: #797979; } .hljsln::-webkit-scrollbar-thumb:active { background: #949494; } .hljsln .ln-bg { position: absolute; z-index: 1; top: 0; left: 0; width: 2.4em; height: 100%; background: #333; } .hljsln .ln-num { position: absolute; z-index: 2; left: 0; width: 2.4em; height: 1em; text-align: center; display: inline-block; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .hljsln .ln-num::before { color: #777; font-style: normal; font-weight: normal; content: attr(data-num); } .hljsln .ln-eof { display: inline-block; } ``` ### 开放接口 此插件有两个公共方法 `hljsln.initLineNumbersOnLoad()` 和 `hljsln.addLineNumbersForCode()`。 ① 一般情况下,我们使用 `hljsln.initLineNumbersOnLoad()` 就够了,它是在页面加载完成时自动给代码块增加行号。 ② 而 `hljsln.addLineNumbersForCode()` 用于直接给代码文本添加行号标签,如: ``` var html = 'xxx'; html = hljsln.addLineNumbersForCode(html); ``` 仅调用 `hljsln.addLineNumbersForCode()` 是不够的,还需要你自己给 code 标签加上 css 的样式名 `hljsln`,才能行号显示。 我自己[博客后台](https://gitee.com/yangrz/yangdx_blog)的 CKEditor 就是用的这个方法,在编辑器中也可显示行号。