Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Hexo 博客美化代码块

Hexo 博客美化代码块

作者头像
ihoey
发布于 2018-10-31 08:36:06
发布于 2018-10-31 08:36:06
4.6K00
代码可运行
举报
文章被收录于专栏:梦魇小栈梦魇小栈
运行总次数:0
代码可运行

最近有人问我博客的代码块是怎么做的,如下面的代码块,然后好久没有写文章了,趁着周末有时间就水一篇吧~

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var arr = 'abcdaabc';

var info = arr
    .split('')
    .reduce((p, k) => (p[k]++ || (p[k] = 1), p), {});

console.log(info); //{ a: 3, b: 2, c: 2, d: 1 }

hexo 会有各种生命周期和事件,平时可能不会用到,但是能很好的利用的话,可以提高不少效率。比如文章多到一定程度之后,每次创建新文章都会被淹没在文件夹里面,在博客根目录下创建一个 scripts 文件夹,放一个 events.js 文件。这样每次通过hexo new post 创建新文章就会自动用 code 打开了~

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var exec = require('child_process').exec;

// new 后自动打开编辑器
hexo.on('new', function (data) {
  console.log('code ' + data.path);
  exec('code ' + data.path);
});

又或者是在 hexo deploy 之后想做一些事情的时候也可以用到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try {
  hexo.on('deployAfter', function () { //当deploy完成后执行备份
    doSomething();
  });
} catch (e) {
  console.log("产生了一个错误<( ̄3 ̄)> !,错误详情为:" + e.toString());
}

代码块也是利用了 hexoapi,是在主题目录下面的 scripts 文件夹,我创建了一个 codeblock.js 文件。监听 after_post_render 事件,(这个事件并不是每次都触发,hexo 会做缓存,在没有缓存的情况下才会执行。)通过事件回调替换文章渲染出来的内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
})

然后在 highlight.js 的基础上调整下样式,包裹上一层类 mac Panel 的效果。

blog/themes/next/source/css/_custom 目录下新建一个 .styl 的样式文件 ,文件内容如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.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;
  }
}

然后在同目录 custom.styl 文件中引入新建的样式文件即可

最后修改主题的代码样式配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
highlight_theme: night eighties

OK,大功告成~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-272,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Handsome主题美化代码
原文地址:https://blog.ascv.cn/archives/554.html
傲绝
2023/03/08
1.2K0
NEZHA监控面板美化
打开哪吒监控面板控制后台后,选择设置,主题选择默认Default,然后将下面的自定义代码粘贴进去即可
KINDYEAR
2022/07/12
2.8K0
NEZHA监控面板美化
博客前端美化记录(持续更新)
程序:Typecho 主题:Cuteen Version:4.1 作者:@Veen zhao
Y5neKO
2022/01/13
7360
博客前端美化记录(持续更新)
Typecho美化主题教程
但是现在我们会发现,整个网站的标签都变成了这样,那我们如何只让他在文章中出现呢? 在第一个代码块ol前面加上#post即可使用了。
回忆大大
2021/08/09
1.5K0
前端技能小结——css篇
去掉type=number的箭头 input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{ -webkit-appearance: none; } input[type="number"]{ -moz-appearance: textfield; } input{ -webkit-user-select: text !important; -webkit-tap-hightlig
流眸
2019/08/09
3610
Green_Preformatted Text_Styles
<pre> 是HTML中的一个标签,用于定义预格式化文本块(Preformatted Text)。<pre> 标签会保留文本中的空白字符(包括空格、制表符和换行符),并按照实际编写时的格式进行显示。
Dabenshi
2024/04/03
680
Green_Preformatted Text_Styles
备份哪吒探针主题
自定义了哪吒探针主题,备份下css。一、样式<style>.nav-bar {padding:0;}.nav-menu li a {background-color:#2f405a;}.info-body ul {font-size:12px;width:auto;align-content:center;justify-items:stretch;}.info-body ul li {margin:.2em;padding:.2em;}ul {padding-inline-start:0;}.server
无敌小菜鸟
2022/11/04
1.8K0
备份哪吒探针主题
Green_Preformatted Text_Styles
<pre> 是HTML中的一个标签,用于定义预格式化文本块(Preformatted Text)。<pre> 标签会保留文本中的空白字符(包括空格、制表符和换行符),并按照实际编写时的格式进行显示。
Dabenshi
2023/08/24
1610
Matery主题友链实现随机排列
将/source/_data/friends.json 复制至/source/friends目录下
闲花手札
2021/08/24
6230
Butterfly主题美化
在butterfly/source/css/创建一个universe.css文件。
ymktchic
2022/01/18
1.6K0
Butterfly主题美化
Hexo修改友链界面
之前看到友链界面的修改需要动大量源码,就没有弄。后来逐渐开始摸索、修改。自己表示很满意,按照各路大神的教程来操作也并不难。效果展示可以点击我的友链页面查看。
花猪
2022/02/16
8890
vue操作dom元素的三种方法
vue中的ref是把当前dom元素 “ 抽离出来 ” ,只要通过 this.$refs就可以获取到
我不是费圆
2020/09/22
2.5K0
Hexo-Butterfly主题修改记录-2
添加跳动的心 首先在博客引入这个开源css \themes\butterfly\layout\includes\footer.pug,找到此段代码:
十玖八柒
2022/08/01
1.7K0
Hexo-Butterfly主题修改记录-2
友联样式美化
新建文件 博客根目录\source\_data\link.yml ,没有 _data 文件夹的话也请自己新建 打开 博客根目录\source\_data\link.yml ,输入
公爵
2022/09/28
5260
WordPress网站备案关站屏蔽首页html单页源码
把下方的html源码放到WordPress根目录的index.html文件(如果没有就创建)。然后去网站配置文件把首页设置为index.html
AlexTao
2019/12/12
2.4K0
60个非常实用的CSS代码片段,千万要收藏好了!
如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑:
winty
2020/06/22
1.6K0
60个非常实用的CSS代码片段,千万要收藏好了!
CSS3知识点整理&&一些demo
1.圆角效果 border-radius:border-radius: 5px 4px 3px 2px; /* 四个半径值分别是左上角、右上角、右下角和左下角,顺时针 */ border-radius: 100%;就是一个圆了。
牧云云
2022/03/10
6680
CSS3知识点整理&&一些demo
vuepress中实现代码折叠、高亮
最近在vuepress中撰写UI框架文档时发现在组件中插入演示代码没高亮,虽然在文档markdown中写代码有高亮但就无法实现折叠了,而且vuepress没有提供折叠代码的配置,因此实现一个折叠组件外加代码高亮的插件就十分有必要。
EchoROne
2022/08/15
2.1K0
vuepress中实现代码折叠、高亮
Hexo之Next主题美化代码
我分别美化了几个不同版本的Next主题,这里把美化代码公布出来,第一种Next版本小于7.3可使用
王瑞MVP
2022/12/28
2.1K0
7b2主题评论气泡
这个功能来自于https://github.com/515184405/barrage,版权归他所有。
小狐狸说事
2022/12/01
3050
相关推荐
Handsome主题美化代码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验