前言
添加这两个标签的是因为自己想为博客增加一个博客功能,奈何 哔哔 等具有发布动态功能的项目都要去添加 leancould ,但自己又不想去注册它(主要它要绑定支付宝)。于是,退而求其次,自己搞个时间线也就能发布动态了(和归档那部分的时间戳类似),缺点就是要在 PC 端以发布博客的形式发布微动态。时间线和外链两个外挂标签是对于 volantis 在 butterfly 的适配,本文主要记录配置的流程。
快速开始
添加 js 脚本文件
进入博客主题目录下的「\scripts\tag 」,创建相应的 js 脚本:
「timeline.js」
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
|
"use strict";
function postTimeline(args, content) { if (args.length > 0) { return `<div class="timeline"><p class='p h2'>${args}</p>${content}</div>`; } else { return `<div class="timeline">${content}</div>`; } }
function postTimenode(args, content) { args = args.join(" ").split(","); var time = args[0]; return `<div class="timenode"><div class="meta"><p>${hexo.render.renderSync({ text: time, engine: "markdown", })}</p></div><div class="body">${hexo.render .renderSync({ text: content, engine: "markdown" }) .split("\n") .join("")}</div></div>`; }
hexo.extend.tag.register("timeline", postTimeline, { ends: true });
hexo.extend.tag.register("timenode", postTimenode, { ends: true });
|
「link.js」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| "use strict";
hexo.extend.tag.register("link", function (args) { args = args.join(" ").split(","); let text = ""; let url = ""; let img = ""; if (args.length > 1) { text = args[0].trim(); url = args[1].trim(); } else { return; } if (args.length > 2) { img = args[2].trim(); return `<div><a class='link-card' title='${url}' href='${url}'><div class='left'><img src=${img}></div><div class='right'><p class='text'>${text}</p><p class='url'>${url}</p></div></a></div>`; } else { return `<div><a class='link-card' title='${url}' href='${url}'><div class='left'><i class='fas fa-link'></i></div><div class='right'><p class='text'>${text}</p><p class='url'>${url}</p></div></a></div>`; } });
|
添加 css 渲染文件
进入博客主题目录下的「\source\css 」,创建「tag-diy.css」文件(若存在则添加以下代码即可),并添加以下代码:
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
#post a.link-card { text-decoration: none; margin: 0.2rem auto; background: var(--tab-botton-bg); display: -ms-inline-flexbox; display: inline-flex; -ms-flex-align: center; align-items: center; cursor: pointer; text-align: left; font-size: 0.575rem; min-width: 200px; max-width: 361px; color: var(--tab-botton-color); border-radius: 8px; } @media screen and (max-width: 425px) { #post a.link-card { max-width: 100%; } } @media screen and (max-width: 375px) { #post a.link-card { width: 100%; } } #post a.link-card:hover { box-shadow: 0 4px 8px 0px rgba(0, 0, 0, 0.1); } #post a.link-card div.left, #post a.link-card div.right { pointer-events: none; } #post a.link-card div.left { width: 48px; height: 48px; margin: 12px; overflow: hidden; -ms-flex-negative: 0; flex-shrink: 0; position: relative; } #post a.link-card div.left i { font-size: 32px; line-height: 48px; margin-left: 4px; } #post a.link-card div.left img { display: block; position: absolute; border-radius: 8px/4; top: 50%; left: 50%; transform: translate(-50%, -50%); } #post a.link-card div.right { overflow: hidden; margin-right: 12px; } #post a.link-card p { margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } #post a.link-card p.text { font-weight: bold; } #post a.link-card p.url { -ms-flex-negative: 0; flex-shrink: 0; color: var(--search-input-color); font-size: 0.7125rem; }
span.p.h2, p.p.h2 { font-size: 1.375rem; color: var(--font-color); padding-top: 0.8rem; border-bottom: 1px solid var(--hr-border); } div.timenode { position: relative; } div.timenode:before, div.timenode:after { content: ""; z-index: 1; position: absolute; background: rgba(68, 215, 182, 0.5); width: 2px; left: 7px; } div.timenode:before { top: 0px; height: 6px; } div.timenode:after { top: 26px; height: calc(100% - 26px); } div.timenode:last-child:after { height: calc(100% - 26px - 16px); border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; } div.timenode .meta { position: relative; color: var(--tab-botton-color); font-size: 0.375rem; line-height: 32px; height: 32px; left: 27px; } div.timenode .meta:before, div.timenode .meta:after { content: ""; position: absolute; top: 8px; z-index: 2; left: -27px; } div.timenode .meta:before { background: rgba(68, 215, 182, 0.5); width: 16px; height: 16px; border-radius: 8px; } div.timenode .meta:after { background: #44d7b6; margin-left: 2px; margin-top: 2px; width: 12px; height: 12px; border-radius: 6px; transform: scale(0.5); transition: all 0.28s ease; -moz-transition: all 0.28s ease; -webkit-transition: all 0.28s ease; -o-transition: all 0.28s ease; } div.timenode .meta p { font-weight: bold; margin: 0 0 0 24px; } div.timenode .body { margin: 4px 0 16px 24px; padding: 16px; border-radius: 8px; background: var(--blockquote-bg); } div.timenode .body p:first-child { margin-top: 0; } div.timenode .body p:last-child { margin-bottom: 0; } div.timenode:hover .meta { color: var(--text-highlight-color); } div.timenode:hover .meta:before { background: rgba(255, 87, 34, 0.5); } div.timenode:hover .meta:after { background: #ff5722; transform: scale(1); }
|
引入样式文件配置
在主题配置文件「_config.butterfly.yml」的 inject 标签中引入上述 css 渲染文件:
1 2 3
| inject: head: - <link rel="stylesheet" href="/css/tag-diy.css">
|
使用语法
使用方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| {% timeline 时间线标题 %}
{% timenode 时间节点(标题) %}
正文内容
{% endtimenode %}
{% timenode 时间节点(标题) %}
正文内容
{% endtimenode %}
{% endtimeline %}
|
样例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| {% timeline 说说 %}
{% timenode 2021-01-25 [嘀嘀嘀](https://caczhtus.github.io) %}
『出师表』
{% endtimenode %}
{% timenode 2021-01-24 [嘀嘀嘀](https://caczhtus.github.io) %}
今天是2021-1-24
{% endtimenode %}
{% endtimeline %}
|
使用方法
样例
1
| {% link Caczhtus, https://caczhtus.gitee.io/, https://cdn.jsdelivr.net/gh/Caczhtus/Caczhtus-imgs/images/other/ic_2.jpg %}
|
后记
参考文章
- https://volantis.js.org/
- Hexo 博客之 butterfly 主题优雅魔改系列