本文简要介绍如何在Hexo博客的Butterfly主题中,为每篇文章顶部添加一个动态波浪效果。

效果图:

Butterfly主题顶部添加波浪效果-1

教程开始

修改主题目录文件:/themes/butterfly/layout/includes/header/index.pug

找到以下代码:

1
2
3
header#page-header(class=`${headerClassName + isFixedClass}` style=bg_img)
include ./nav.pug
if top_img !== false

在代码后面添加代码(添加时删除+号)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
header#page-header(class=`${headerClassName + isFixedClass}` style=bg_img)
include ./nav.pug
if top_img !== false
+ section.main-hero-waves-area.waves-area
+ svg.waves-svg(xmlns='http://www.w3.org/2000/svg', xlink='http://www.w3.org/1999/xlink', viewBox='0 24 150 28', preserveAspectRatio='none', shape-rendering='auto')
+ defs
+ path#gentle-wave(d='M -160 44 c 30 0 58 -18 88 -18 s 58 18 88 18 s 58 -18 88 -18 s 58 18 88 18 v 44 h -352 Z')
+ g.parallax
+ use(href='#gentle-wave', x='48', y='0')
+ use(href='#gentle-wave', x='48', y='3')
+ use(href='#gentle-wave', x='48', y='5')
+ use(href='#gentle-wave', x='48', y='7')
if globalPageType === 'post'
include ./post-info.pug

在/source/css文件夹中创建wave.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

/* Animation */

.parallax > use {
animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite;
}
.parallax > use:nth-child(1) {
animation-delay: -2s;
animation-duration: 7s;
fill: #ffffffbd;
}
.parallax > use:nth-child(2) {
animation-delay: -3s;
animation-duration: 10s;
fill: #ffffff82;
}
.parallax > use:nth-child(3) {
animation-delay: -4s;
animation-duration: 13s;
fill: #ffffff36;
}
.parallax > use:nth-child(4) {
animation-delay: -5s;
animation-duration: 20s;
fill: #ffffff;
}
/* 黑色模式背景 */
[data-theme="dark"] .parallax > use:nth-child(1) {
animation-delay: -2s;
animation-duration: 7s;
fill: #18171dc8;
}
[data-theme="dark"] .parallax > use:nth-child(2) {
animation-delay: -3s;
animation-duration: 10s;
fill: #18171d80;
}
[data-theme="dark"] .parallax > use:nth-child(3) {
animation-delay: -4s;
animation-duration: 13s;
fill: #18171d3e;
}
[data-theme="dark"] .parallax > use:nth-child(4) {
animation-delay: -5s;
animation-duration: 20s;
fill: #0d0d10;
}

@keyframes move-forever {
0% {
transform: translate3d(-90px, 0, 0);
}
100% {
transform: translate3d(85px, 0, 0);
}
}
/*Shrinking for mobile*/
@media (max-width: 768px) {
.waves-svg {
height: 40px;
min-height: 40px;
}
}

.waves-svg {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
overflow: hidden;
line-height: 0;
height: 40px;
min-height: 40px;
}

然后在_config.butterfly.yml配置文件中的 [inject.head] 或者自定义 css 中 引入以下 css

1
2
3
inject:
head:
- <link rel="stylesheet" href="/css/wave.css"> # 自定义css 波浪线