前言

在糖果屋看到了这个底部运行时间,感觉还不错。
不过作者是把底部的运行时间和那个徽标一起做成了一个插件,我下载之后发现其实这个时间只是插件的附带,主要的还是加徽标方便,然后我就把这个时间单独提了出来。

正文

本来我还以为会写的比较复杂,后来发现其实是我想复杂了,就是简单的时间运算而已。
js和css文件创建和引入问题看这篇文章:Hexo博客添加自定义css和js文件

添加盒子

首先我们先在底部加一个盒子,用来盛放时间。
我们在主题的配置文件里找到footer下面的custom_text,添加如下代码:

1
2
3
4
5
6
7
8
footer:
owner:
enable: false
since: 2021
- custom_text:
+ custom_text: <div id="runtime"></div>
copyright: false # Copyright of theme and framework

添加js

新建自定义js文件

在souce目录下新建js文件夹,然后新建script.js(名字随便起),然后在主题配置文件里找到inject下的bottom引入文件:
如果已经有自定义js文件的,直接使用就可以,不需要再额外创建,毕竟代码量不大。

1
2
3
4
5
inject:
head:

bottom:
+ - <script src="/js/script.js?1"></script>

添加如下代码

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
setInterval(() => {
// let create_time = Math.round(new Date('2021-10-15 00:00:00').getTime() / 1000); //在此行修改建站时间
// 有苹果用户发现safari浏览器不能正常运行,百度了一下发现是格式化的问题,改成下面这种应该就可以了。感谢反馈。
let create_time = Math.round(new Date('2021/10/15 00:00:00').getTime() / 1000); //在此行修改建站时间
let timestamp = Math.round((new Date().getTime()) / 1000);
let second = timestamp - create_time;
let time = new Array(0, 0, 0, 0, 0);

var nol = function(h) {
return h > 9 ? h : '0' + h;
}
if (second >= 365 * 24 * 3600) {
time[0] = parseInt(second / (365 * 24 * 3600));
second %= 365 * 24 * 3600;
}
if (second >= 24 * 3600) {
time[1] = parseInt(second / (24 * 3600));
second %= 24 * 3600;
}
if (second >= 3600) {
time[2] = nol(parseInt(second / 3600));
second %= 3600;
}
if (second >= 60) {
time[3] = nol(parseInt(second / 60));
second %= 60;
}
if (second >= 0) {
time[4] = nol(second);
}
let currentTimeHtml = ""
if (time[0] != 0) {
currentTimeHtml += time[0] + ' YEAR '
}
currentTimeHtml += time[1] + ' DAYS ' + time[2] + ' : ' + time[3] + ' : ' + time[4];
document.getElementById("runtime").innerHTML = currentTimeHtml;
}, 1000);

添加css

新建自定义css文件

在souce目录下新建css文件夹,然后新建style.css(名字随便起),然后在主题配置文件里找到inject下的head引入文件:
如果已经有自定义css文件的,直接使用就行

1
2
3
4
inject:
head:
+ - <link rel="stylesheet" href="/css/style.css?1">
bottom:

添加如下代码

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
div#runtime {
width: fit-content;
color: #fff;
padding: 0 10px;
border-radius: 10px;
background-color: rgba(0, 0, 0, 0.7);
}

[data-theme="dark"] div#runtime {
color: #28b4c8;
box-shadow: 0 0 5px rgba(28, 69, 218, 0.71);
animation: flashlight 1s linear infinite alternate;
}

@-moz-keyframes flashlight {
from {
box-shadow: 0 0 5px #1478d2;
}
to {
box-shadow: 0 0 2px #1478d2;
}
}

@-webkit-keyframes flashlight {
from {
box-shadow: 0 0 5px #1478d2;
}
to {
box-shadow: 0 0 2px #1478d2;
}
}

@-o-keyframes flashlight {
from {
box-shadow: 0 0 5px #1478d2;
}
to {
box-shadow: 0 0 2px #1478d2;
}
}

@keyframes flashlight {
from {
box-shadow: 0 0 5px #1478d2;
}
to {
box-shadow: 0 0 2px #1478d2;
}
}