对我的paperbox(现在这个主题,landscape plus基础修改而来的,我引用了)做基于自己喜好的改造;

Part1: 主题图片替换~

原版

原版本身就是一个改版啦,具体介绍如下https://github.com/sun11/hexo-theme-paperbox

关于作者的贡献:https://www.sun11.me/blog/2016/hexo-theme-paperbox/

原版图片

要改的地方还挺多的,这边列一下,要改的地方还不少;比如这个时间表示、特别是,我觉得背景太难看了;其次那个小方块也是太难看了,怎么做一个自己喜欢的呢

前端知识太少;方法蠢笨,Orz。但是原版作者啥也没写,所以还是记录下吧

如果遇到啥问题,其实都可以通过看别人的代码结构来得到,具有非常相似的结构

hexo-theme-paperbox

hexo-theme-landscape-f

hexo-theme-landscape

Hexo官方主题landscape-plus优化

计划


速度

  • 加速访问 [见hexo博客搭建优化,这个和paperbox没有关系,所以不放在这里写]

主题图变化

  • 修改成自己喜欢的图片

cube优化

  • cube改版!
  • cube不会自动滚动了

添加时间

  • 有个Update比较好~

标签改一下

  • 太丑了;太小了

字体问题

  • 同上

代码高亮

  • 感觉代码不是很好看,说不定就会改了

search

  • 加上search框

主题基础架构

由于我刚接触hexo不久,所以呢~不是特别了解,我是多了解一点就多写一点

_config.yml

就像是全局变量,访问方便;也可以理解为全局配置;里面所有配置的意思我还没吃透,用哪个写哪个

_config.yml

source/

资源文件,图片,css,js都在里面吧,比如你要修改啥啥的样式,就在这里操作的比较多

layout/

后缀基本就是.ejs,这文件,emmmm,以前没好好学js,当事人表示现在非常后悔;我理解的就是模板文件,如果你要修改你的网站模样,肯定要涉及的

language/

image-20190929192618478

这个主要是不同语言文件使用的不同语言;可以用<%= __('updated') %>来访问其值

别的不懂了,用到的也少

主题图变化

图片存放位置:/source/css/images

修改样式位置:source/css/_variables.styl这个文件,就是css的全局变量文件

修改选项:banner-url = "images/firefly.jpg"

背景图片默认居中;所以基本上就是图片的正中位置会被显示;注意剪裁一下;为了防止图片加载时间过长,建议参考yelee的gitbook进行压缩和渐进式调整;

http://moxfive.xyz/2016/05/17/image-compression/

前面看到图片放在images下,直接引用全局变量就行啦~然后加载是这样的,在source/css/_partial/header.styl里面,

1
2
3
4
5
6
7
8
9
#banner
position: absolute
top: 0
left: 0
width: 100%
height: 100%
background: url(banner-url) center color-grey
background-size: cover
z-index: -1

cube优化

原版感觉有点不搭

image-20190906190551460

修改之后

image-20190906190619006

哈哈哈,是不是感觉有点花哨;但是我觉得还是比较契合这个背景图;另外,六面都有含义的~~不管聪不聪明你肯定知道含义23333;P图P得太烂了,好惨Orz

这里主要记录下修改的地方和过程

(啊,我这个主题cube不会自动滚动了,后期排查一下)

样式修改

每个面的透明程度和边框颜色修改位置:source/css/_partial/header.styl建议在chrome上调试颜色之后再修改,方便些

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//133行左右
// CSS Animated Cube
#contenedor
...
ul
...
li
box-sizing: border-box
background: rgba(240, 240, 240, 0.06) //最后一个是透明程度,值越小越透明
border: 1px solid rgba(255, 250, 66, 0.38) //边框颜色
//display: block
display: flex;
justify-content: center;
align-items: center;
list-style-type: none
position: absolute
width: 100%
height: 100%
font-size: 1.5em
color: rgba(0,0,0,0.5) //这个是字体颜色
letter-spacing: 1px
text-align: center
line-height: 100px
user-select: none

填充图片

为了填充图片居中,我在上面代码中修改了几个字段,一个是lidisplay属性改成了flex,还有添加了justify-content: center; align-items: center;

图片参数放在主题下的_config.yml

layout模板修改

cube的代码在layout/_partial/header.ejs

1
2
3
4
5
6
7
8
9
<div id="contenedor">
<ul class="cube">
<li class="cara"><img src="<%= theme.logo_time %>" style="height:50%; width:50%;opacity:0.8" /></li>
<li class="cara">也可以填充文字</li>
<li class="cara">啥都行</li>
<li class="cara">...</li>
<li class="cara">...</li>
<li class="cara">...</li>
</ul>

所以我把图片放在imgs下,并在主题的_config.yml下,加入了路径;<%= _config_variables %>可以直接访问_config.yml的定义

1
logo_time: /img/cube/time.png

其实你也可以修改每个面的background,但是这样的话6个面要区分开来

cube加载时转动

cube不会自己转了,不知道为什么,现在也不知道,但是我翻了翻原博客发现我们的style好像有一些些不一样,所以,我就copy了以下,修改如下,其实就是让它适配多个浏览器并且配置了spincube,也就是旋转方式;

source/css/_partial/header.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
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
.cara:nth-child(1) {
-webkit-transform: translateZ(50px);
-moz-transform: translateZ(50px);
-o-transform: translateZ(50px);
-ms-transform: translateZ(50px);
transform: translateZ(50px);
}
.cara:nth-child(2) {
-webkit-transform: rotateX(-90deg) translateZ(50px);
-moz-transform: rotateX(-90deg) translateZ(50px);
-o-transform: rotateX(-90deg) translateZ(50px);
-ms-transform: rotateX(-90deg) translateZ(50px);
transform: rotateX(-90deg) translateZ(50px);
}
.cara:nth-child(3) {
-webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(50px);
-moz-transform: rotateX(90deg) rotateZ(-90deg) translateZ(50px);
-o-transform: rotateX(90deg) rotateZ(-90deg) translateZ(50px);
-ms-transform: rotateX(90deg) rotateZ(-90deg) translateZ(50px);
transform: rotateX(90deg) rotateZ(-90deg) translateZ(50px);
}
.cara:nth-child(4) {
-webkit-transform: rotateY(-90deg) translateZ(50px);
-moz-transform: rotateY(-90deg) translateZ(50px);
-o-transform: rotateY(-90deg) translateZ(50px);
-ms-transform: rotateY(-90deg) translateZ(50px);
transform: rotateY(-90deg) translateZ(50px);
}
.cara:nth-child(5) {
-webkit-transform: rotateY(90deg) rotateZ(90deg) translateZ(50px);
-moz-transform: rotateY(90deg) rotateZ(90deg) translateZ(50px);
-o-transform: rotateY(90deg) rotateZ(90deg) translateZ(50px);
-ms-transform: rotateY(90deg) rotateZ(90deg) translateZ(50px);
transform: rotateY(90deg) rotateZ(90deg) translateZ(50px);
}
.cara:nth-child(6) {
-webkit-transform: rotateY(180deg) translateZ(50px);
-moz-transform: rotateY(180deg) translateZ(50px);
-o-transform: rotateY(180deg) translateZ(50px);
-ms-transform: rotateY(180deg) translateZ(50px);
transform: rotateY(180deg) translateZ(50px);
}
.animar {
-webkit-transition: all 1s;
-moz-transition: all 1s;
-o-transition: all 1s;
-ms-transition: all 1s;
transition: all 1s;
}

.noanimar {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
-ms-transition: none;
transition: none;
}
@-moz-keyframes spincube {
16% {
-webkit-transform: rotateX(90deg);
-moz-transform: rotateX(90deg);
-o-transform: rotateX(90deg);
-ms-transform: rotateX(90deg);
transform: rotateX(90deg);
}
33% {
-webkit-transform: rotateY(-90deg) rotateZ(90deg);
-moz-transform: rotateY(-90deg) rotateZ(90deg);
-o-transform: rotateY(-90deg) rotateZ(90deg);
-ms-transform: rotateY(-90deg) rotateZ(90deg);
transform: rotateY(-90deg) rotateZ(90deg);
}
50% {
-webkit-transform: rotateY(90deg);
-moz-transform: rotateY(90deg);
-o-transform: rotateY(90deg);
-ms-transform: rotateY(90deg);
transform: rotateY(90deg);
}
66% {
-webkit-transform: rotateX(-90deg) rotateZ(-90deg);
-moz-transform: rotateX(-90deg) rotateZ(-90deg);
-o-transform: rotateX(-90deg) rotateZ(-90deg);
-ms-transform: rotateX(-90deg) rotateZ(-90deg);
transform: rotateX(-90deg) rotateZ(-90deg);
}
83% {
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
-o-transform: rotateY(180deg);
-ms-transform: rotateY(180deg);
transform: rotateY(180deg);
}
}
@-webkit-keyframes spincube {
16% {
-webkit-transform: rotateX(90deg);
-moz-transform: rotateX(90deg);
-o-transform: rotateX(90deg);
-ms-transform: rotateX(90deg);
transform: rotateX(90deg);
}
33% {
-webkit-transform: rotateY(-90deg) rotateZ(90deg);
-moz-transform: rotateY(-90deg) rotateZ(90deg);
-o-transform: rotateY(-90deg) rotateZ(90deg);
-ms-transform: rotateY(-90deg) rotateZ(90deg);
transform: rotateY(-90deg) rotateZ(90deg);
}
50% {
-webkit-transform: rotateY(90deg);
-moz-transform: rotateY(90deg);
-o-transform: rotateY(90deg);
-ms-transform: rotateY(90deg);
transform: rotateY(90deg);
}
66% {
-webkit-transform: rotateX(-90deg) rotateZ(-90deg);
-moz-transform: rotateX(-90deg) rotateZ(-90deg);
-o-transform: rotateX(-90deg) rotateZ(-90deg);
-ms-transform: rotateX(-90deg) rotateZ(-90deg);
transform: rotateX(-90deg) rotateZ(-90deg);
}
83% {
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
-o-transform: rotateY(180deg);
-ms-transform: rotateY(180deg);
transform: rotateY(180deg);
}
}
@-o-keyframes spincube {
16% {
-webkit-transform: rotateX(90deg);
-moz-transform: rotateX(90deg);
-o-transform: rotateX(90deg);
-ms-transform: rotateX(90deg);
transform: rotateX(90deg);
}
33% {
-webkit-transform: rotateY(-90deg) rotateZ(90deg);
-moz-transform: rotateY(-90deg) rotateZ(90deg);
-o-transform: rotateY(-90deg) rotateZ(90deg);
-ms-transform: rotateY(-90deg) rotateZ(90deg);
transform: rotateY(-90deg) rotateZ(90deg);
}
50% {
-webkit-transform: rotateY(90deg);
-moz-transform: rotateY(90deg);
-o-transform: rotateY(90deg);
-ms-transform: rotateY(90deg);
transform: rotateY(90deg);
}
66% {
-webkit-transform: rotateX(-90deg) rotateZ(-90deg);
-moz-transform: rotateX(-90deg) rotateZ(-90deg);
-o-transform: rotateX(-90deg) rotateZ(-90deg);
-ms-transform: rotateX(-90deg) rotateZ(-90deg);
transform: rotateX(-90deg) rotateZ(-90deg);
}
83% {
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
-o-transform: rotateY(180deg);
-ms-transform: rotateY(180deg);
transform: rotateY(180deg);
}
}
@keyframes spincube {
16% {
-webkit-transform: rotateX(90deg);
-moz-transform: rotateX(90deg);
-o-transform: rotateX(90deg);
-ms-transform: rotateX(90deg);
transform: rotateX(90deg);
}
33% {
-webkit-transform: rotateY(-90deg) rotateZ(90deg);
-moz-transform: rotateY(-90deg) rotateZ(90deg);
-o-transform: rotateY(-90deg) rotateZ(90deg);
-ms-transform: rotateY(-90deg) rotateZ(90deg);
transform: rotateY(-90deg) rotateZ(90deg);
}
50% {
-webkit-transform: rotateY(90deg);
-moz-transform: rotateY(90deg);
-o-transform: rotateY(90deg);
-ms-transform: rotateY(90deg);
transform: rotateY(90deg);
}
66% {
-webkit-transform: rotateX(-90deg) rotateZ(-90deg);
-moz-transform: rotateX(-90deg) rotateZ(-90deg);
-o-transform: rotateX(-90deg) rotateZ(-90deg);
-ms-transform: rotateX(-90deg) rotateZ(-90deg);
transform: rotateX(-90deg) rotateZ(-90deg);
}
83% {
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
-o-transform: rotateY(180deg);
-ms-transform: rotateY(180deg);
transform: rotateY(180deg);
}
}

其实还有很多大佬有过研究哒,我如果这个效果不行,我就会用他们的,感觉很好懂:

CSS3 3D立方体效果-transform也不过如此github源码实例demo之3D transform立方体效果

CSS: 3D Transforms and Animations效果图