Next主题样式配置2-代码块显示程序语言名字
一直想在代码块上面显示这个代码块使用的程序语言的名字,但是没有找到好的方法,这两天在搜索的时候发现了一个高手的博客里面介绍了这个方法,就借鉴了过来。
因为自己的水平有限,后端基本啥也不会,所以原理就不多说了(其实看不懂),这里把步骤、代码以及一些小的修改记录如下。
首先在 next/scripts
目录下面新建一个javascript文件命名为
codeblock.js
文件,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| var attributes = [ 'autocomplete="off"', 'autocorrect="off"', 'autocapitalize="off"', 'spellcheck="false"', 'contenteditable="true"' ]
var attributesStr = attributes.join(' ')
hexo.extend.filter.register('after_post_render', function (data) { while (/<figure class="highlight ([a-zA-Z]+)">.*?<\/figure>/.test(data.content)) { data.content = data.content.replace(/<figure class="highlight ([a-zA-Z]+)">.*?<\/figure>/, function () { var language = RegExp.$1 || 'plain' var lastMatch = RegExp.lastMatch lastMatch = lastMatch.replace(/<figure class="highlight /, '<figure class="iseeu highlight /') return '<div class="highlight-wrap"' + attributesStr + 'data-rel="' + language.toUpperCase() + '">' + lastMatch + '</div>' }) } return data })
|
然后找到 next
主题下面的 highlight.styl
文件,具体位置在
next/source/css/_common/components/highlight/highlight.styl
在文件的最下面添加如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| .highlight-wrap[data-rel] { position: relative; overflow: hidden; border-radius: 5px; box-shadow: 0 10px 30px 0px rgba(0,0,0,0.4); margin: 35px 0; ::-webkit-scrollbar { height: 10px; }
::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); border-radius: 10px; }
::-webkit-scrollbar-thumb { border-radius: 10px; -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5); } &::before { color: white; content: attr(data-rel); height: 38px; line-height: 38px; background: #21252b; color: #fff; font-size: 16px; position: absolute; top: 0; left: 0; width: 100%; font-family: 'Source Sans Pro', sans-serif; font-weight: bold; padding: 0px 80px; text-indent: 15px; float: left; } &::after { content: " "; position: absolute; -webkit-border-radius: 50%; border-radius: 50%; background: #fc625d; width: 12px; height: 12px; top: 0; left: 20px; margin-top: 13px; -webkit-box-shadow: 20px 0px #fdbc40, 40px 0px #35cd4b; box-shadow: 20px 0px #fdbc40, 40px 0px #35cd4b; z-index: 3; } }
|
保存收工,这样基本就完成了。重新启动hexo博客你的代码块的上方应该就会出现代码中的语言名称。
一个小问题的解决,我这边出现了,如果大家也出现可以参考一下,在完成js文件配置以后我发现我的代码块上方有一部分代码被盖住了,下面呢出现了一部分白条,感觉整个代码块上移了一样。
通过开发者工具查看以后,调整了代码块的 margin
搞定了。修改的内容也在
highlight.styl
文件中,代码如下:
1 2 3 4 5 6 7 8 9
| $code-block { overflow: auto; margin: 34px 0px 0px 0px; padding: 0; font-size $code-font-size; color: $highlight-foreground; background: $highlight-background; line-height: $line-height-code-block; }
|
今天在写其他博文的时候发现代码有个bug,无法正确显示 JSON
文件,现在还未找到解决方法。
参考博文