Google Code Prettify 是 Google 的一款代码高亮插件,它由 js 代码和 css 代码构成,用来高亮显示 HTML 页面中的源代码。

Google Code Prettify 支持的语言数量比较多、比较全,支持自动识别代码语言,不需要手动指定,渲染效果也不错。最重要的是,非常轻巧,加载速度远比 SyntaxHighlighter 快得多,而且可以直接使用 Markdown 的语法写代码。

GitHub 地址:https://github.com/google/code-prettify

1
主题

google-code-prettify 提供了 5 个 css 主题可供选择,而且支持自定义 style。相关的 demo 及 style 文件参见:https://rawgit.com/google/code-prettify/master/styles/index.html。

2
文件

google-code-prettify 需要两个文件,prettify.js 和 prettify.css,去官网下载。把这两个放到 head 模板中,如下:

<link href="http://alfred-sun.github.io/assets/google-code-prettify/prettify.css" rel="stylesheet" type="text/css" media="all">
<script type="text/javascript" src="http://alfred-sun.github.io/assets/google-code-prettify/prettify.js"></script>

考虑到加载速度,最好 js 写到文档末尾,body 闭合标签之前,css 写到头部之后,还需要在合适位置(如:$(document).ready) 添加如下代码,用于识别并高亮代码块,这个需要使用 jQuery:

$(function() {
   window.prettyPrint && prettyPrint();
});

到这里,我们就可以使用 <pre></pre> 标签进行高亮了。

3.1. 基本用法

Google 的高亮插件使用比较方便,只需要在 <pre> 的标签上加入 prettyprint 即可。

<pre class="prettyPrint">
   // code here
</pre>

3.2. 行号设置

google-code-prettify 默认每五行显示一次行号,如果想要显示所有的行号,我们只需要在 google-code-prettify 对应主题的 css 文件中找到下面一样把它注释掉即可:

li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }

设置完成后,插入代码块样式:

3.3. Markdown

如果用 Markdown 来生成 HTML 的话,需事先给相关的标签追加必要的 class;Markdown 产生的代码块必然含义 <pre> 元素,那么可以用 jQuery 在 Prettyprinter 运行前处理下 HTML 样式:

$(function() {
   $('pre').addClass('prettyprint linenums').attr('style', 'overflow:auto');
});

这样就没有问题了,可以直接用 markdown 的前置 4 空格来写代码了。其中 addClass(‘prettyprint linenums’) 的 linenums 是添加行号的意思。默认只显示第 5、10、15… 行,可以在 css 文件中 li 的格式添加 list-style-type: decimal,以显示全部行号。

3.4. Bootstrap 代码框滚动

如果博客中有用 Bootstrap,其中对 pre 有如下几句:

white-space:pre;
white-space:pre-wrap;
word-break:break-all;
word-wrap:break-word;

这会使得 pre 中的代码自动换行,而不是溢出形成滚动条。如果不希望如此,可以注释掉。看个人喜好。

如果是滚动条,默认的滚动太难看而且还有个 Bug(stripe 的高亮背景色无法固定,随着滚动条位置改变而改变,可以考虑去掉 stripe,或者禁用横向滚动条),可以修改一下样式,看一下:CSS 自定义浏览器滚动条样式。

下面讲一下如何在 leanote 博客中使用 Google Code Prettify,并实现代码框左右滚动的效果。

4.1. css+js 文件

需要两个文件,prettify.js 和 prettify.css,把这两个放到 highlight.html 模板中,如下:

<link href="http://alfred-sun.github.io/assets/google-code-prettify/prettify.css" rel="stylesheet" type="text/css" media="all">
<script type="text/javascript" src="http://alfred-sun.github.io/assets/google-code-prettify/prettify.js"></script>

leanote 完整 highlight.html:

<!--http://leanote.com/js/google-code-prettify/prettify.css-->
<link href="{{$.prettifyCssUrl}}" type="text/css" rel="stylesheet">

<!--自定义 css 文件,需要上传-->
<link href="{{$.themeBaseUrl}}/customHilight.css" type="text/css" rel="stylesheet">

<!--http://leanote.com/js/google-code-prettify/prettify.js-->
<script src="{{$.prettifyJsUrl}}"></script>
<script>
   $("pre").addClass("prettyprint linenums");
   $('pre').addClass('prettyprint linenums').attr('style', 'overflow:auto');
   $(function() {
       window.prettyPrint && prettyPrint();
   });
</script>

4.1. bootstrap 文件

由于 leanote 应用了 bootstrap 的样式,其内置的 pre 代码会自动换行,而不是溢出形成滚动条,因此我们需要自定义样式(以下为完整 customHilight.css 文件内容):

/*自定义 ol 列表数字距离*/
code.prettyprint ol.linenums, pre.prettyprint ol.linenums{
   padding: 0 0 0 25px !important;
}

/*代码框左右滚动*/
pre.prettyprint {
   white-space: pre !important;
 word-wrap: break-word !important;
 overflow:auto !important;
}
pre{
   word-break: unset !important;
   word-wrap:unset !important;
   white-space:unset !important;
}
pre code{
   white-space:unset !important;
}
code.prettyprint .linenums, pre.prettyprint .linenums{
   white-space: pre;
 word-wrap: break-word;
 overflow:auto;
}

最后,清空浏览器缓存,就可以看到 leanote 博客代码框左右滚动的效果。完整效果,欢迎点击文章右下角"阅读原文"查看。

·end·

—如果喜欢,快分享给你的朋友们吧—

我们一起愉快的玩耍吧

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

Google Code Prettify 代码高亮插件使用小结的更多相关文章

  1. google code-prettify 代码高亮插件使用方法

    找代码高亮插件选了好久,还是这个使用起来比较方便. 先上链接:插件下载地址 官方使用方法地址 建议看官方的资料,我这里仅仅简要描述一下使用方法: 引入方法: 测试引入是否成功:herf 换成 自己放置 ...

  2. 7个高性能JavaScript代码高亮插件

    本文由码农网 – 小峰原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 对于喜欢写技术博客的同学来说,一定对代码高亮组件非常熟悉.一款优秀的JavaScript代码高亮插件,将会帮助你渲染 ...

  3. [转]7个高性能JavaScript代码高亮插件

    对于喜欢写技术博客的同学来说,一定对代码高亮组件非常熟悉.一款优秀的JavaScript代码高亮插件,将会帮助你渲染任何一种编程语言,包括一些关键字的着色,以及每行代码的缩进等.今天我们要来分享一些高 ...

  4. MarkdownPad2代码高亮插件兼容移动端样式

    如果不知道MarkdownPad2使用代码高亮插件可以查看前一篇文章<MarkdownPad2使用代码高亮插件> 先看移动端效果图: 移动端点击查看效果 或者手机扫如下二维码: 我们经常阅 ...

  5. 轻量级jQuery语法高亮代码高亮插件jQuery Litelighter。

    <!DOCTYPE html><html><head><meta charset="UTF-8" /><title>jQ ...

  6. 代码高亮插件Codemirror使用方法及下载

    代码高亮插件Codemirror使用方法及下载 - 老男孩的日志 - 网易博客 代码高亮插件Codemirror使用方法及下载   2013-10-31 16:51:29|  分类: 默认分类 |   ...

  7. WordPress代码高亮插件SyntaxHighlighter终极使用详解

    子曰: 工欲善其事,必先利其器.作为码农一枚,再加上站长这个已经不再光鲜的称呼,岂能没有一款经济实用.操作简单.而且功能必须强大.样式也必须好看的Wordpress代码高亮插件?!作为一个视代码如生命 ...

  8. Word中使用代码高亮插件

    Word中使用代码高亮插件 1.下载并安装:SyntaxHighlighter4Word.zip 解压,然后双击bin\word2010\Kong.SyntaxHighlighter.Word2010 ...

  9. 代码高亮插件推荐——SyntaxHighlighter++

    SyntaxHighlighter++这个插件的最大的优点就是可以在编辑器的下方有一个输入框,里面可以输入代码,然后插入到文章中.就不用编辑文章的时候,在可视化和文本之间来回切换了.非常适合不熟悉ht ...

  10. OLW (Open Live Writer)安装代码高亮插件方法(简明)

    1.首先下载OLW代码高亮插件,请点击--->OLW代码高亮插件 2.在你安装OLW的目录下(顺便说一下默认的安装目录为C:\Users\你的用户名\AppData\Local\OpenLive ...

随机推荐

  1. nodejs,,一些基本操作--server。js

    1.解决中文乱码问题: const http = require('http') const server = http.createServer((req, res) => { // 设置字符 ...

  2. ChatGPT搭建AI网站实战

    1.概述 ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务.作为一款智能化的聊天机器人,ChatGPT有着广泛的应用场景,如在线客服.智能助手.个性化推 ...

  3. AlphaFold2无痛安装教程(超级详细)

    目录 介绍 环境 安装 CMAKE安装 hmmer安装 HHsuite安装 Kalign安装 OpenMM安装 PDBfixer安装 Python依赖包安装 AlphaFold安装 AlphaFold ...

  4. MATLAB计算变异函数并绘制经验半方差图

      本文介绍基于MATLAB求取空间数据的变异函数,并绘制经验半方差图的方法.   由于本文所用的数据并不是我的,因此遗憾不能将数据一并展示给大家:但是依据本篇博客的思想与对代码的详细解释,大家用自己 ...

  5. [Spring MVC]@RequestMapping 与 @RequestMapping+@RequestResponse的区别

    假定:返回格式均为JSON,JSON实体对象myJson的属性有:data.message.code.status. 二者的区别在于: @RequestMapping:会在最外层包裹 data属性,将 ...

  6. dfs实现

    1.思路:从图中的未访问的一个顶点开始,沿着一条路一直走到底,然后这条路尽头的节点,在从另外一条路走到底,不断递归此过程,直到所有遍历完成特点:不撞南墙不回头2.具体实现:当从一个未知的顶点出发,将这 ...

  7. JQuery点击复制文本框内容的方法插件

    [导读] 文章介绍了两种常用的点击复制文本框内容方法,一种是but IE only,同样的这个也是我们经常使用的.优点是体积小,仅有十来行代码,但缺点也很明显,只支持IE及以IE为内核的浏览器,另一种 ...

  8. golang 必会之 pprof 监控系列(5) —— cpu 占用率 统计原理

    golang pprof 监控系列(5) -- cpu 占用率 统计原理 大家好,我是蓝胖子. 经过前面的几节对pprof的介绍,对pprof统计的原理算是掌握了七八十了,我们对memory,bloc ...

  9. Spring中事务嵌套这么用一定得注意了!!

    前言 最近项目上有一个使用事务相对复杂的业务场景报错了.在绝大多数情况下,都是风平浪静,没有问题.其实内在暗流涌动,在有些异常情况下就会报错,这种偶然性的问题很有可能就会在暴露到生产上造成事故,那究竟 ...

  10. Split to Be Slim: 论文复现

    摘要:在本论文中揭示了这样一种现象:一层内的许多特征图共享相似但不相同的模式. 本文分享自华为云社区<Split to Be Slim: 论文复现>,作者: 李长安 . Split to ...