44 |
45 |
46 |
47 |
48 | 📺
49 | 励
50 | 志
51 | 短
52 | 片
53 |
54 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/layout/musics.ejs:
--------------------------------------------------------------------------------
1 |
7 |
8 | <%- partial('_partial/bg-cover') %>
9 |
10 |
11 |
12 |
13 |
14 |
15 | <% if (theme.musics && theme.musics.enable) { %>
16 | <%- partial('_widget/musics') %>
17 |
18 |
19 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
71 |
72 | <% } %>
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/layout/post.ejs:
--------------------------------------------------------------------------------
1 | <% if (theme.verifyPassword.enable) { %>
2 |
3 |
14 | <% } %>
15 |
16 | <%- partial('_partial/post-cover') %>
17 |
18 | <%
19 | var isTocEnable = theme.toc.enable && String(page.toc) !== 'false';
20 | var containerClass = isTocEnable ? 'post-container' : 'container';
21 | %>
22 |
23 |
24 |
25 | <% if (isTocEnable) { %>
26 | <%- partial('_partial/post-detail-toc.ejs') %>
27 | <% } else { %>
28 | <%- partial('_partial/post-detail.ejs') %>
29 | <% } %>
30 |
31 |
32 |
33 | <% if (theme.mathjax.enable && page.mathjax) { %>
34 |
35 |
40 | <% } %>
41 |
--------------------------------------------------------------------------------
/layout/tag.ejs:
--------------------------------------------------------------------------------
1 | <%- partial('_partial/bg-cover') %>
2 |
3 |
4 |
5 | <%- partial('_widget/tag-cloud') %>
6 |
7 | <%
8 | var hashCode = function (str) {
9 | if (!str && str.length === 0) {
10 | return 0;
11 | }
12 |
13 | var hash = 0;
14 | for (var i = 0, len = str.length; i < len; i++) {
15 | hash = ((hash << 5) - hash) + str.charCodeAt(i);
16 | hash |= 0;
17 | }
18 | return hash;
19 | };
20 | %>
21 |
22 |
23 |
24 | <% page.posts.sort('date').reverse().forEach(post => { %>
25 | <%
26 | var tagArr = [];
27 | if (post.tags && post.tags.length > 0) {
28 | post.tags.forEach(tag => {
29 | tagArr.push(tag.name);
30 | });
31 | }
32 | var tags = tagArr.join(', ');
33 | %>
34 |
74 | <% }); %>
75 |
76 |
77 |
78 |
79 | <% if (page.total > 1) { %>
80 | <%- partial('_partial/paging') %>
81 | <% } %>
82 |
--------------------------------------------------------------------------------
/layout/tags.ejs:
--------------------------------------------------------------------------------
1 | <%- partial('_partial/bg-cover') %>
2 |
3 |
4 |
5 | <%- partial('_widget/tag-cloud') %>
6 |
7 | <% if (site.tags && site.tags.length > 0) { %>
8 | <%- partial('_widget/tag-wordcloud') %>
9 | <% } %>
10 |
11 |
12 |
--------------------------------------------------------------------------------
/scripts/tags/button.js:
--------------------------------------------------------------------------------
1 | /**
2 | * button.js | https://theme-next.js.org/docs/tag-plugins/button
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = ctx => function(args) {
8 | args = args.join(' ').split(',');
9 | const url = args[0];
10 | const text = (args[1] || '').trim();
11 | let icon = (args[2] || '').trim();
12 | const title = (args[3] || '').trim();
13 |
14 | if (!url) {
15 | ctx.log.warn('URL can NOT be empty.');
16 | }
17 | if (icon.length > 0) {
18 | if (!icon.startsWith('fa')) icon = 'fa fa-' + icon;
19 | icon = `
`;
20 | }
21 |
22 | return `
0 ? ` title="${title}"` : ''}>${icon}${text}`;
23 | };
24 |
--------------------------------------------------------------------------------
/scripts/tags/index.js:
--------------------------------------------------------------------------------
1 | /* global hexo */
2 |
3 | 'use strict';
4 |
5 | const postButton = require('./button')(hexo);
6 |
7 | hexo.extend.tag.register('button', postButton);
8 | hexo.extend.tag.register('btn', postButton);
9 |
10 | const postNote = require('./note')(hexo);
11 |
12 | hexo.extend.tag.register('note', postNote, true);
13 | hexo.extend.tag.register('subnote', postNote, true);
14 |
--------------------------------------------------------------------------------
/scripts/tags/note.js:
--------------------------------------------------------------------------------
1 | /**
2 | * note.js | https://theme-next.js.org/docs/tag-plugins/note
3 | */
4 |
5 | 'use strict';
6 |
7 | module.exports = ctx => function(args, content) {
8 | const keywords = ['default', 'primary', 'info', 'success', 'warning', 'danger', 'no-icon'];
9 | const className = [];
10 | for (let i = 0; i < 2; i++) {
11 | if (keywords.includes(args[0])) {
12 | className.push(args.shift());
13 | } else {
14 | break;
15 | }
16 | }
17 |
18 | content = ctx.render.renderSync({ text: content, engine: 'markdown' });
19 | if (args.length === 0) {
20 | return `
${content}
`;
21 | }
22 | return `
${ctx.render.renderSync({ text: args.join(' '), engine: 'markdown' })}
23 | ${content}
24 | `;
25 | };
26 |
--------------------------------------------------------------------------------
/source/css/barrager.css:
--------------------------------------------------------------------------------
1 | .barrage {
2 | position: fixed;
3 | bottom: 70px;
4 | right: -500px;
5 | display: inline-block;
6 | width: 500px;
7 | z-index: 99999
8 | }
9 |
10 | .barrage_box {
11 | background-color: rgba(0, 0, 0, .5);
12 | padding-right: 8px;
13 | height: 40px;
14 | display: inline-block;
15 | border-radius: 25px;
16 | transition: all .3s;
17 | }
18 |
19 | .barrage_box .portrait {
20 | display: inline-block;
21 | margin-top: 4px;
22 | margin-left: 4px;
23 | width: 32px;
24 | height: 32px;
25 | border-radius: 50%;
26 | overflow: hidden;
27 | }
28 |
29 | .barrage_box .portrait img {
30 | width: 100%;
31 | height: 100%;
32 | }
33 |
34 | .barrage_box div.p a {
35 | margin-right: 2px;
36 | font-size: 14px;
37 | color: #fff;
38 | line-height: 40px;
39 | margin-left: 18px;
40 | }
41 |
42 | .barrage_box div.p a:hover {
43 | text-decoration: underline;
44 | }
45 |
46 | .barrage_box .close {
47 | visibility: hidden;
48 | opacity: 0;
49 | text-align: center;
50 | width: 25px;
51 | height: 25px;
52 | margin-left: 20px;
53 | border-radius: 50%;
54 | background: rgba(255, 255, 255, .1);
55 | margin-top: 8px;
56 | background-image: url(/medias/barrager/close.png);
57 | }
58 |
59 | .barrage_box:hover .close {
60 | visibility: visible;
61 | opacity: 1;
62 | }
63 |
64 | .barrage_box .close a {
65 | display: block;
66 | }
67 |
68 | .barrage_box .close .icon-close {
69 | font-size: 14px;
70 | color: rgba(255, 255, 255, .5);
71 | display: inline-block;
72 | margin-top: 5px;
73 | }
74 |
75 | .barrage .z {
76 | float: left !important;
77 | }
78 |
79 | .barrage a {
80 | text-decoration: none;
81 | }
--------------------------------------------------------------------------------
/source/css/bb.css:
--------------------------------------------------------------------------------
1 | div.timenode {
2 | position: relative;
3 | }
4 |
5 | div.timenode:before,
6 | div.timenode:after {
7 | content: '';
8 | z-index: 1;
9 | position: absolute;
10 | background: rgba(68, 215, 182, 0.5);
11 | width: 2px;
12 | left: 7px;
13 | }
14 |
15 | div.timenode:before {
16 | top: 0px;
17 | height: 6px;
18 | }
19 |
20 | div.timenode:after {
21 | top: 26px;
22 | height: calc(100% - 26px);
23 | }
24 |
25 | div.timenode:last-child:after {
26 | height: calc(100% - 26px - 16px);
27 | border-bottom-left-radius: 2px;
28 | border-bottom-right-radius: 2px;
29 | }
30 |
31 | div.timenode .meta,
32 | div.timenode .body {
33 | max-width: calc(100% - 24px);
34 | }
35 |
36 | div.timenode .meta {
37 | position: relative;
38 | color: var(--color-meta);
39 | font-size: 0.875rem;
40 | line-height: 32px;
41 | height: 32px;
42 | }
43 |
44 | div.timenode .meta:before,
45 | div.timenode .meta:after {
46 | content: '';
47 | position: absolute;
48 | top: 8px;
49 | z-index: 2;
50 | }
51 |
52 | div.timenode .meta:before {
53 | background: rgba(68, 215, 182, 0.5);
54 | width: 16px;
55 | height: 16px;
56 | border-radius: 8px;
57 | }
58 |
59 | div.timenode .meta:after {
60 | background: #44d7b6;
61 | margin-left: 2px;
62 | margin-top: 2px;
63 | width: 12px;
64 | height: 12px;
65 | border-radius: 6px;
66 | transform: scale(0.5);
67 | transition: all 0.28s ease;
68 | -moz-transition: all 0.28s ease;
69 | -webkit-transition: all 0.28s ease;
70 | -o-transition: all 0.28s ease;
71 | }
72 |
73 | div.timenode .meta p {
74 | font-weight: bold;
75 | margin: 0 0 0 24px;
76 | }
77 |
78 | div.timenode .body {
79 | margin: 4px 0 16px 24px;
80 | padding: 16px;
81 | border-radius: 8px;
82 | background: var(--color-block);
83 | display: inline-block;
84 | }
85 |
86 | div.timenode .body:empty {
87 | display: none;
88 | }
89 |
90 | div.timenode .body > *:first-child {
91 | margin-top: 0.25em;
92 | }
93 |
94 | div.timenode .body > *:last-child {
95 | margin-bottom: 0.25em;
96 | }
97 |
98 | div.timenode .body .highlight {
99 | border: 1px solid #e4e4e4;
100 | }
101 |
102 | div.timenode:hover .meta {
103 | color: var(--color-text);
104 | }
105 |
106 | div.timenode:hover .meta:before {
107 | background: rgba(255, 87, 34, 0.5);
108 | }
109 |
110 | div.timenode:hover .meta:after {
111 | background: #ff5722;
112 | transform: scale(1);
113 | }
114 |
115 | div.timenode .body {
116 | margin: 0 0 0 24px;
117 | padding: 16px;
118 | border-radius: 8px;
119 | background: #f6f6f6;
120 | display: inline-block;
121 | }
122 |
123 | div.timenode time {
124 | margin-left: 20px;
125 | }
126 |
--------------------------------------------------------------------------------
/source/css/gallery.css:
--------------------------------------------------------------------------------
1 | .gallery-wrapper{
2 | padding-top: 30px;
3 | }
4 | .gallery-wrapper .gallery-box{
5 | padding: 5px !important;
6 | }
7 |
8 | .gallery-wrapper .gallery-item {
9 | display: block;
10 | overflow: hidden;
11 | background-color: #fff;
12 | padding: 5px;
13 | padding-bottom: 0;
14 | position: relative;
15 | -moz-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
16 | -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
17 | box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
18 | }
19 |
20 | .gallery-cover-box{
21 | width: 100%;
22 | padding-top: 60%;
23 | text-align: center;
24 | overflow: hidden;
25 | position: relative;
26 | background: center center no-repeat;
27 | -webkit-background-size: cover;
28 | background-size: cover;
29 | }
30 |
31 | .gallery-cover-box .gallery-cover-img {
32 | display: inline-block;
33 | width: 100%;
34 | position: absolute;
35 | left: 50%;
36 | top: 50%;
37 | transform: translate(-50%,-50%);
38 | }
39 | .gallery-item .gallery-name{
40 | font-size: 14px;
41 | line-height: 24px;
42 | text-align: center;
43 | color: #666;
44 | margin: 0;
45 | }
46 |
47 | .waterfall {
48 | column-count: 3;
49 | column-gap: 1em;
50 | }
51 | .photo-wrapper{
52 | padding-top: 20px;
53 | }
54 | .photo-item {
55 | display: block;
56 | padding: 10px;
57 | padding-bottom: 0;
58 | margin-bottom: 14px;
59 | font-size: 0;
60 | -moz-page-break-inside: avoid;
61 | -webkit-column-break-inside: avoid;
62 | break-inside: avoid;
63 | background: white;
64 | -moz-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
65 | -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
66 | box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
67 | }
68 | .photo-item img {
69 | width: 100%;
70 | }
71 | .photo-item .photo-name{
72 | font-size: 14px;
73 | line-height: 30px;
74 | text-align: center;
75 | margin-top: 10px;
76 | margin-bottom: 10px;
77 | border-top: 1px solid #dddddd;
78 | }
79 |
80 | /*适配移动端布局*/
81 | @media only screen and (max-width: 601px) {
82 | .waterfall {
83 | column-count: 2;
84 | column-gap: 1em;
85 | }
86 | }
--------------------------------------------------------------------------------
/source/css/indexcover.css:
--------------------------------------------------------------------------------
1 | .carousel-control {
2 | width: 45px;
3 | height: 45px;
4 | line-height: 55px;
5 | border-radius: 45px;
6 | background: transparent;
7 | cursor: pointer;
8 | z-index: 100;
9 | display: flex;
10 | justify-content: center;
11 | align-items: center;
12 | }
13 |
14 | #prev-cover {
15 | position: absolute;
16 | top: 48%;
17 | left: 8px;
18 | }
19 |
20 | #next-cover {
21 | position: absolute;
22 | top: 48%;
23 | right: 8px;;
24 | }
25 |
26 | #prev-cover i {
27 | margin-right: 3px;
28 | }
29 |
30 | #next-cover i {
31 | margin-left: 3px;
32 | }
33 |
34 | .carousel-control:hover {
35 | background-color: rgba(0, 0, 0, .4);
36 | }
37 |
38 | .carousel-control i {
39 | color: #fff;
40 | font-size: 2.4rem;
41 | }
--------------------------------------------------------------------------------
/source/css/my-gitalk.css:
--------------------------------------------------------------------------------
1 | .gitalk-card {
2 | margin: 1.25rem auto;
3 | }
4 |
5 | .gitalk-card .card-content {
6 | padding: 1px 20px 20px 20px;
7 | }
8 |
9 | #gitalk-container .gt-no-init a {
10 | color: #42b983;
11 | text-decoration: underline;
12 | }
13 |
14 | #gitalk-container .gt-container .gt-btn,
15 | #gitalk-container .gt-btn-login,
16 | #gitalk-container .gt-container .gt-header-controls .gt-btn {
17 | border: 1px solid #4caf50;
18 | background-color: #4caf50;
19 | box-shadow: 0 2px 2px 0 rgba(76, 175, 80, 0.14), 0 3px 1px -2px rgba(76, 175, 80, 0.2), 0 1px 5px 0 rgba(76, 175, 80, 0.12);
20 | }
21 |
22 | #gitalk-container .gt-container .gt-link {
23 | color: #42b983;
24 | text-decoration: underline;
25 | }
26 |
27 | #gitalk-container .gt-container .gt-btn-preview {
28 | color: #4caf50;
29 | background-color: #fff !important;
30 | box-shadow: 0 2px 2px 0 rgba(76, 175, 80, 0.14), 0 3px 1px -2px rgba(76, 175, 80, 0.2), 0 1px 5px 0 rgba(76, 175, 80, 0.12);
31 | }
32 |
33 | #gitalk-container .gt-container .gt-header-textarea {
34 | background-color: #f6f9fc;
35 | border: 1px solid rgba(0, 0, 0, 0.05);
36 | }
37 |
38 | #gitalk-container .gt-container .gt-svg svg {
39 | fill: #42b983;
40 | }
41 |
42 | #gitalk-container .gt-container .gt-header-controls-tip,
43 | #gitalk-container .gt-container a,
44 | #gitalk-container .gt-container .gt-comment-username {
45 | color: #42b983;
46 | }
47 |
48 | #gitalk-container .gt-container .gt-ico-text {
49 | margin-left: 0.08rem;
50 | }
51 |
52 | #gitalk-container .gt-container .gt-comment-body {
53 | color: #34495e !important;
54 | }
55 |
56 | #gitalk-container .gt-container .gt-header-preview {
57 | border: 1px solid rgba(0, 0, 0, 0.02);
58 | background-color: #f9f9f9;
59 | }
60 |
61 | .markdown-body p {
62 | margin: 2px 2px 10px;
63 | font-size: 1.05rem;
64 | line-height: 1.78rem;
65 | }
66 |
67 | .markdown-body blockquote p {
68 | text-indent: 0.2rem;
69 | }
70 |
71 | .markdown-body a {
72 | padding: 0 2px;
73 | color: #42b983;
74 | font-weight: 500;
75 | text-decoration: underline;
76 | }
77 |
78 | .markdown-body img {
79 | max-width: 100%;
80 | height: auto;
81 | cursor: pointer;
82 | }
83 |
84 | .markdown-body ol li {
85 | list-style-type: decimal;
86 | }
87 |
88 | .markdown-body ol,
89 | ul {
90 | display: block;
91 | padding-left: 2em;
92 | word-spacing: 0.05rem;
93 | }
94 |
95 | .markdown-body ul li,
96 | ol li {
97 | display: list-item;
98 | line-height: 1.8rem;
99 | font-size: 1rem;
100 | }
101 |
102 | .markdown-body ul li {
103 | list-style-type: disc;
104 | }
105 |
106 | .markdown-body ul ul li {
107 | list-style-type: circle;
108 | }
109 |
110 | .markdown-body table, th, td {
111 | padding: 12px 13px;
112 | border: 1px solid #dfe2e5;
113 | }
114 |
115 | .markdown-body table, th, td {
116 | border: 0;
117 | }
118 |
119 | table tr:nth-child(2n), thead {
120 | background-color: #fafafa;
121 | }
122 |
123 | .markdown-body table th {
124 | background-color: #f2f2f2;
125 | min-width: 80px;
126 | }
127 |
128 | .markdown-body table td {
129 | min-width: 80px;
130 | }
131 |
132 | .markdown-body h1 {
133 | font-size: 1.85rem;
134 | font-weight: bold;
135 | line-height: 2.2rem;
136 | }
137 |
138 | .markdown-body h2 {
139 | font-size: 1.65rem;
140 | font-weight: bold;
141 | line-height: 1.9rem;
142 | }
143 |
144 | .markdown-body h3 {
145 | font-size: 1.45rem;
146 | font-weight: bold;
147 | line-height: 1.7rem;
148 | }
149 |
150 | .markdown-body h4 {
151 | font-size: 1.25rem;
152 | font-weight: bold;
153 | line-height: 1.5rem;
154 | }
155 |
156 | .markdown-body h5 {
157 | font-size: 1.1rem;
158 | font-weight: bold;
159 | line-height: 1.4rem;
160 | }
161 |
162 | .markdown-body h6 {
163 | font-size: 1rem;
164 | line-height: 1.3rem;
165 | }
166 |
167 | .markdown-body p {
168 | font-size: 1rem;
169 | line-height: 1.5rem;
170 | }
171 |
172 | .markdown-body hr {
173 | margin: 12px 0;
174 | border: 0;
175 | border-top: 1px solid #ccc;
176 | }
177 |
178 | .markdown-body blockquote {
179 | margin: 15px 0;
180 | border-left: 5px solid #42b983;
181 | padding: 1rem 0.8rem 1rem 0.8rem;
182 | color: #666;
183 | background-color: rgba(66, 185, 131, .1);
184 | }
185 |
186 | .markdown-body pre {
187 | padding: 1.2em;
188 | margin: .5em 0;
189 | background: #272822;
190 | overflow: auto;
191 | border-radius: 0.3em;
192 | tab-size: 4;
193 | }
194 |
195 | .markdown-body code {
196 | padding: 1px 1px;
197 | font-size: 0.92rem;
198 | color: #e96900;
199 | background-color: #f8f8f8;
200 | border-radius: 2px;
201 | }
202 |
203 | .markdown-body pre code {
204 | padding: 0;
205 | color: #e8eaf6;
206 | background-color: #272822;
207 | }
208 |
209 | .markdown-body pre[class*="language-"] {
210 | padding: 1.2em;
211 | margin: .5em 0;
212 | }
213 |
214 | .markdown-body code[class*="language-"],
215 | pre[class*="language-"] {
216 | color: #e8eaf6;
217 | }
218 |
219 | .markdown-body [type="checkbox"]:not(:checked), [type="checkbox"]:checked {
220 | position: inherit;
221 | margin-left: -1.3rem;
222 | margin-right: 0.4rem;
223 | margin-top: -1px;
224 | vertical-align: middle;
225 | left: unset;
226 | visibility: visible;
227 | }
228 |
229 | .markdown-body b,
230 | strong {
231 | font-weight: bold;
232 | }
233 |
234 | .markdown-body dfn {
235 | font-style: italic;
236 | }
237 |
238 | .markdown-body small {
239 | font-size: 85%;
240 | }
241 |
242 | .markdown-body cite {
243 | font-style: normal;
244 | }
245 |
246 | .markdown-body mark {
247 | background-color: #fcf8e3;
248 | padding: .2em;
249 | }
250 |
--------------------------------------------------------------------------------
/source/css/my.css:
--------------------------------------------------------------------------------
1 | /* Here is your custom css styles. */
2 |
--------------------------------------------------------------------------------
/source/css/post.css:
--------------------------------------------------------------------------------
1 | #articleContent h1::before,
2 | #articleContent h2::before,
3 | #articleContent h3::before,
4 | #articleContent h4::before,
5 | #articleContent h5::before,
6 | #articleContent h6::before {
7 | display: block;
8 | content: " ";
9 | height: 100px;
10 | margin-top: -100px;
11 | visibility: hidden;
12 | }
13 |
14 | #articleContent :focus {
15 | outline: none;
16 | }
17 |
18 | .toc-fixed {
19 | position: fixed;
20 | top: 64px;
21 | }
22 |
23 | .toc-widget {
24 | width: 345px;
25 | padding-left: 20px;
26 | }
27 |
28 | .toc-widget .toc-title {
29 | padding: 35px 0 15px 17px;
30 | font-size: 1.5rem;
31 | font-weight: bold;
32 | line-height: 1.5rem;
33 | }
34 |
35 | .toc-widget ol {
36 | padding: 0;
37 | list-style: none;
38 | }
39 |
40 | #toc-content {
41 | padding-bottom: 30px;
42 | overflow: auto;
43 | }
44 |
45 | #toc-content ol {
46 | padding-left: 10px;
47 | }
48 |
49 | #toc-content ol li {
50 | padding-left: 10px;
51 | }
52 |
53 | #toc-content .toc-link:hover {
54 | color: #42b983;
55 | font-weight: 700;
56 | text-decoration: underline;
57 | }
58 |
59 | #toc-content .toc-link::before {
60 | background-color: transparent;
61 | max-height: 25px;
62 |
63 | position: absolute;
64 | right: 23.5vw;
65 | display: block;
66 | }
67 |
68 | #toc-content .is-active-link {
69 | color: #42b983;
70 | }
71 |
72 | #floating-toc-btn {
73 | position: fixed;
74 | right: 15px;
75 | bottom: 76px;
76 | padding-top: 15px;
77 | margin-bottom: 0;
78 | z-index: 998;
79 | }
80 |
81 | #floating-toc-btn .btn-floating {
82 | width: 48px;
83 | height: 48px;
84 | }
85 |
86 | #floating-toc-btn .btn-floating i {
87 | line-height: 48px;
88 | font-size: 1.4rem;
89 | }
90 |
--------------------------------------------------------------------------------
/source/css/reward.css:
--------------------------------------------------------------------------------
1 | #reward {
2 | margin: 40px 0;
3 | text-align: center;
4 | }
5 |
6 | #reward .reward-link {
7 | font-size: 1.4rem;
8 | line-height: 38px;
9 | }
10 |
11 | #reward .btn-floating:hover {
12 | box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2), 0 5px 15px rgba(0, 0, 0, 0.2);
13 | }
14 |
15 | #rewardModal {
16 | width: 320px;
17 | height: 350px;
18 | }
19 |
20 | #rewardModal .reward-title {
21 | margin: 15px auto;
22 | padding-bottom: 5px;
23 | }
24 |
25 | #rewardModal .modal-content {
26 | padding: 10px;
27 | }
28 |
29 | #rewardModal .close {
30 | position: absolute;
31 | right: 15px;
32 | top: 15px;
33 | color: rgba(0, 0, 0, 0.5);
34 | font-size: 1.3rem;
35 | line-height: 20px;
36 | cursor: pointer;
37 | }
38 |
39 | #rewardModal .close:hover {
40 | color: #ef5350;
41 | transform: scale(1.3);
42 | -moz-transform:scale(1.3);
43 | -webkit-transform:scale(1.3);
44 | -o-transform:scale(1.3);
45 | }
46 |
47 | #rewardModal .reward-tabs {
48 | margin: 0 auto;
49 | width: 210px;
50 | }
51 |
52 | .reward-tabs .tabs {
53 | height: 38px;
54 | margin: 10px auto;
55 | padding-left: 0;
56 | }
57 |
58 | .reward-content ul {
59 | padding-left: 0 !important;
60 | }
61 |
62 | .reward-tabs .tabs .tab {
63 | height: 38px;
64 | line-height: 38px;
65 | }
66 |
67 | .reward-tabs .tab a {
68 | color: #fff;
69 | background-color: #ccc;
70 | }
71 |
72 | .reward-tabs .tab a:hover {
73 | background-color: #ccc;
74 | color: #fff;
75 | }
76 |
77 | .reward-tabs .wechat-tab .active {
78 | color: #fff !important;
79 | background-color: #22AB38 !important;
80 | }
81 |
82 | .reward-tabs .alipay-tab .active {
83 | color: #fff !important;
84 | background-color: #019FE8 !important;
85 | }
86 |
87 | .reward-tabs .reward-img {
88 | width: 210px;
89 | height: 210px;
90 | }
91 |
--------------------------------------------------------------------------------
/source/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/favicon.png
--------------------------------------------------------------------------------
/source/js/gallery-encrypt.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | function decryptAES(password) {
4 |
5 | try {
6 |
7 | var decryptionError = String(document.getElementById('decryptionError').innerHTML);
8 | var noContentError = String(document.getElementById('noContentError').innerHTML);
9 |
10 | } catch (e) {
11 |
12 | decryptionError = 'Incorrect Password!';
13 | noContentError = 'No content to display!';
14 |
15 | }
16 |
17 | try {
18 |
19 | let content = CryptoJS.AES.decrypt(document.getElementById('encrypt-blog').innerHTML.trim(), password);
20 | content = content.toString(CryptoJS.enc.Utf8);
21 | content = decodeBase64(content);
22 | content = unescape(content);
23 | if (content === '') {
24 |
25 | throw new Error(noContentError); // ???
26 |
27 | } else {
28 |
29 | document.getElementById('encrypt-blog').style.display = 'inline';
30 | document.getElementById('encrypt-blog').innerHTML = '';
31 |
32 | // Use jquery to load some js code
33 | try {
34 |
35 | $('#encrypt-blog').html(content);
36 |
37 | // NO Style Change here
38 |
39 | // NO Style Change here
40 |
41 | } catch (e) {
42 |
43 | const errorInfo = '
'
44 | + 'Some errors occurred, check the original file please.'
45 | + 'Detailed exceptions are shown in console.'
46 | + '
';
47 | console.error(e);
48 | $('#encrypt-blog').html(errorInfo);
49 |
50 | }
51 |
52 | document.getElementById('hbe-security').style.display = 'none';
53 | if (document.getElementById('toc-div')) {
54 |
55 | document.getElementById('toc-div').style.display = 'inline';
56 |
57 | }
58 |
59 | }
60 |
61 | // Call MathJax to render
62 | if (typeof MathJax !== 'undefined') {
63 |
64 | try {
65 |
66 | MathJax.Hub.Queue(
67 | ['resetEquationNumbers', MathJax.InputJax.TeX,],
68 | ['PreProcess', MathJax.Hub,],
69 | ['Reprocess', MathJax.Hub,]
70 | );
71 |
72 | } catch (e) {
73 |
74 | console.log('Can\'t render with MathJax');
75 |
76 | }
77 |
78 | }
79 |
80 | } catch (e) {
81 |
82 | alert(decryptionError);
83 | console.log(e);
84 | return false;
85 |
86 | }
87 |
88 | return true;
89 |
90 | }
91 |
92 | function htmlDecode(str) {
93 |
94 | let s = '';
95 | if (str.length == 0) {
96 |
97 | return '';
98 |
99 | }
100 |
101 | s = str.replace(/>/g, '&');
102 | s = s.replace(/</g, '<');
103 | s = s.replace(/>/g, '>');
104 | s = s.replace(/ /g, ' '); // ??? why not ' '
105 | s = s.replace(/'/g, '\'');
106 | s = s.replace(/"/g, '"');
107 | s = s.replace(/
/g, '\n');
108 | return s;
109 |
110 | }
111 |
112 | function decodeBase64(content) {
113 |
114 | content = CryptoJS.enc.Base64.parse(content);
115 | content = CryptoJS.enc.Utf8.stringify(content);
116 | return content;
117 |
118 | }
119 |
120 | function setCookie(cookieName, cookieValue, expireMinutes) {
121 |
122 | const expireTime = new Date(new Date().getTime() + 1000 * 60 * expireMinutes);
123 | document.cookie = `${cookieName}=${escape(cookieValue)}${expireMinutes == null ? '' : `;expires=${expireTime.toGMTString()}`}`;
124 |
125 | }
126 |
127 | function getCookie(cookieName) {
128 |
129 | if (document.cookie.length > 0) {
130 |
131 | let idx = document.cookie.indexOf(`${cookieName}=`);
132 | if (idx != -1) {
133 |
134 | idx = idx + cookieName.length + 1;
135 | let idy = document.cookie.indexOf(';', idx);
136 | if (idy == -1) {
137 |
138 | idy = document.cookie.length;
139 |
140 | }
141 | return unescape(document.cookie.substring(idx, idy));
142 |
143 | }
144 |
145 | }
146 | return '';
147 |
148 | }
149 |
150 | function GetUrlRelativePath() {
151 |
152 | const url = document.location.toString();
153 | const arrUrl = url.split('//');
154 |
155 | const start = arrUrl[1].indexOf('/');
156 | let relUrl = arrUrl[1].substring(start);
157 |
158 | if (relUrl.indexOf('?') != -1) {
159 |
160 | relUrl = relUrl.split('?')[0];
161 |
162 | }
163 | return relUrl;
164 |
165 | }
166 |
167 | function GenerateCookieName() {
168 |
169 | const COOKIE_NAME = 'HBE-PASSWORD';
170 | return COOKIE_NAME + GetUrlRelativePath();
171 |
172 | }
173 |
174 | // Since you decided to use jQuery.
175 | $(document).ready(
176 | function () {
177 | let password = String(getCookie(GenerateCookieName()));
178 | console.log(`Get password from Cookie:${password}`);
179 |
180 | if (password != '') {
181 |
182 | if (!decryptAES(password)) {
183 | // Delete cookie
184 | setCookie(COOKIE_NAME, password, -5);
185 | } else {
186 |
187 | document.getElementById('encrypt-blog').removeAttribute('style');
188 |
189 | $("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150});
190 | }
191 | }
192 | document.getElementById('pass').onkeypress = function (keyPressEvent) {
193 |
194 | password = String(document.getElementById('pass').value);
195 | if (keyPressEvent.keyCode === 13) {
196 |
197 | const result = decryptAES(password);
198 |
199 | if (result) {
200 | document.getElementById('encrypt-blog').removeAttribute('style');
201 |
202 | $("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150});
203 |
204 | setCookie(GenerateCookieName(), password, 30);
205 | }
206 | }
207 | };
208 | $('#btn_decrypt').on('click', function () {
209 |
210 | password = String(document.getElementById('pass').value);
211 |
212 | const result = decryptAES(password);
213 |
214 | if (result) {
215 |
216 | document.getElementById('encrypt-blog').removeAttribute('style');
217 |
218 | $("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150});
219 |
220 | setCookie(GenerateCookieName(), password, 30);
221 | }
222 | });
223 | }
224 | );
--------------------------------------------------------------------------------
/source/js/jquery.barrager.js:
--------------------------------------------------------------------------------
1 | /**
2 | *@name jquery.barrager.js
3 | *@version 1.1
4 | *@author yaseng@uauc.net
5 | *@url https://github.com/yaseng/jquery.barrager.js
6 | */
7 | (function($) {
8 | $.fn.barrager = function(barrage) {
9 | barrage = $.extend({
10 | close: true,
11 | max: 10,
12 | speed: 16,
13 | color: '#ffffff',
14 | }, barrage || {});
15 |
16 | const time = new Date().getTime();
17 | const barrager_id = 'barrage_' + time;
18 | const id = '#' + barrager_id;
19 | const div_barrager = $("
").appendTo($(this));
20 | const this_height = $(window).height() * 0.35;
21 | const this_width = $(window).width() + 100;
22 | const array = [
23 | (this_height / 5) + $(window).height() * 0.5,
24 | 2*(this_height / 5) + $(window).height() * 0.5,
25 | 3*(this_height / 5) + $(window).height() * 0.5,
26 | 4*(this_height / 5) + $(window).height() * 0.5,
27 | 5*(this_height / 5) + $(window).height() * 0.5
28 | ]
29 | const bottom =array[Math.floor(Math.random()*5)];
30 |
31 | div_barrager.css("bottom", bottom + "px");
32 | div_barrager_box = $("
").appendTo(div_barrager);
33 | if(barrage.img){
34 | div_barrager_box.append("
");
35 | const img = $("
![]()
").appendTo(id + " .barrage_box .portrait");
36 | img.attr('src', barrage.img);
37 | }
38 | div_barrager_box.append("
");
39 | if(barrage.close){
40 | div_barrager_box.append("
");
41 | }
42 |
43 | const content = $("
").appendTo(id + " .barrage_box .p");
44 | content.attr({
45 | 'href': barrage.href,
46 | 'id': barrage.id
47 | }).empty().append(barrage.info);
48 | content.css('color', barrage.color);
49 |
50 | const i = 0;
51 | div_barrager.css('margin-right', 0);
52 |
53 | $(id).animate({right:this_width},barrage.speed*1000,function()
54 | {
55 | $(id).remove();
56 | });
57 |
58 | div_barrager_box.mouseover(function()
59 | {
60 | $(id).stop(true);
61 | });
62 |
63 | div_barrager_box.mouseout(function()
64 | {
65 | $(id).animate({right:this_width},barrage.speed*1000,function()
66 | {
67 | $(id).remove();
68 | });
69 | });
70 |
71 | $(id+'.barrage .barrage_box .close').click(function()
72 | {
73 | $(id).remove();
74 | })
75 | }
76 |
77 |
78 | $.fn.barrager.removeAll=function()
79 | {
80 | $('.barrage').remove();
81 | }
82 |
83 | })(jQuery);
84 |
--------------------------------------------------------------------------------
/source/js/search.js:
--------------------------------------------------------------------------------
1 | var searchFunc = function (path, search_id, content_id) {
2 | 'use strict';
3 | $.ajax({
4 | url: path,
5 | dataType: "xml",
6 | success: function (xmlResponse) {
7 | // get the contents from search data
8 | var datas = $("entry", xmlResponse).map(function () {
9 | return {
10 | title: $("title", this).text(),
11 | content: $("content", this).text(),
12 | url: $("url", this).text()
13 | };
14 | }).get();
15 | var $input = document.getElementById(search_id);
16 | var $resultContent = document.getElementById(content_id);
17 | $input.addEventListener('input', function () {
18 | var str = '
';
19 | var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/);
20 | $resultContent.innerHTML = "";
21 | if (this.value.trim().length <= 0) {
22 | return;
23 | }
24 | // perform local searching
25 | var cnt = 1;
26 | datas.forEach(function (data) {
27 | var isMatch = true;
28 | var content_index = [];
29 | var data_title = data.title.trim().toLowerCase();
30 | var data_content = data.content.trim().replace(/<[^>]+>/g, "").toLowerCase();
31 | var data_url = data.url;
32 | var index_title = -1;
33 | var index_content = -1;
34 | var first_occur = -1;
35 | // only match artiles with not empty titles and contents
36 | if (data_title != '' && data_content != '') {
37 | keywords.forEach(function (keyword, i) {
38 | index_title = data_title.indexOf(keyword);
39 | index_content = data_content.indexOf(keyword);
40 | if (index_title < 0 && index_content < 0) {
41 | isMatch = false;
42 | } else {
43 | if (index_content < 0) {
44 | index_content = 0;
45 | }
46 | if (i == 0) {
47 | first_occur = index_content;
48 | }
49 | }
50 | });
51 | }
52 | // show search results
53 | if (isMatch) {
54 | str += "- " + String(cnt) + ". " + data_title + "";
55 | cnt += 1;
56 |
57 | var content = data.content.trim().replace(/<[^>]+>/g, "");
58 | if (first_occur >= 0) {
59 | // cut out 100 characters
60 | var start = first_occur - 20;
61 | if (start < 0) {
62 | start = 0;
63 | }
64 | var match_content = content.substr(start, 100);
65 | // highlight all keywords
66 | keywords.forEach(function (keyword) {
67 | var regS = new RegExp(keyword, "gi");
68 | match_content = match_content.replace(regS, "" + keyword + "");
69 | });
70 |
71 | str += "
" + match_content + "...
"
72 | }
73 | str += " ";
74 | }
75 | });
76 | str += "
";
77 | str = "
共找到" + String(cnt-1) + "条结果
" + str;
78 | $resultContent.innerHTML = str;
79 | });
80 | }
81 | });
82 | }
83 |
--------------------------------------------------------------------------------
/source/libs/aplayer/Meting.min.js:
--------------------------------------------------------------------------------
1 | "use strict";function _objectSpread(a){for(var b=1;b
b.toUpperCase())}_init(){let a={};for(let b=0;ba.json()).then(a=>this._loadPlayer(a))}_loadPlayer(a){let b={audio:a,mutex:!0,lrcType:this.meta.lrcType||3,storageName:"metingjs"};if(a.length){let a=_objectSpread({},b,this.config);for(let b in a)("true"===a[b]||"false"===a[b])&&(a[b]="true"===a[b]);let c=document.createElement("div");a.container=c,this.appendChild(c),this.aplayer=new APlayer(a)}}}console.log("\n %c MetingJS v2.0.1 %c https://github.com/metowolf/MetingJS \n","color: #fadfa3; background: #030307; padding:5px 0;","background: #fadfa3; padding:5px 0;"),window.customElements&&!window.customElements.get("meting-js")&&(window.MetingJSElement=MetingJSElement,window.customElements.define("meting-js",MetingJSElement));
2 |
--------------------------------------------------------------------------------
/source/libs/awesome/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/source/libs/awesome/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/source/libs/awesome/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/source/libs/awesome/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/source/libs/awesome/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/source/libs/awesome/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/source/libs/awesome/webfonts/fa-v4compatibility.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-v4compatibility.ttf
--------------------------------------------------------------------------------
/source/libs/awesome/webfonts/fa-v4compatibility.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-v4compatibility.woff2
--------------------------------------------------------------------------------
/source/libs/background/canvas-nest.js:
--------------------------------------------------------------------------------
1 | ! function () {
2 | var userAgentInfo = navigator.userAgent;
3 | var Agents = ["iPad", "iPhone", "Android",
4 | "SymbianOS", "Windows Phone",
5 | "iPod", "webOS", "BlackBerry", "IEMobile"
6 | ];
7 | for (var v = 0; v < Agents.length; v++) {
8 | if (userAgentInfo.indexOf(Agents[v]) > 0) {
9 | return;
10 | }
11 | }
12 |
13 | function o(w, v, i) {
14 | return w.getAttribute(v) || i
15 | }
16 |
17 | function j(i) {
18 | return document.getElementsByTagName(i)
19 | }
20 |
21 | function l() {
22 | var i = j("script"),
23 | w = i.length,
24 | v = i[w - 1];
25 | return {
26 | l: w,
27 | z: o(v, "zIndex", -1),
28 | o: o(v, "opacity", 0.5),
29 | c: o(v, "color", "0,0,0"),
30 | n: o(v, "count", 99)
31 | }
32 | }
33 |
34 | function k() {
35 | r = u.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, n = u.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight
36 | }
37 |
38 | function b() {
39 | e.clearRect(0, 0, r, n);
40 | var w = [f].concat(t);
41 | var x, v, A, B, z, y;
42 | t.forEach(function (i) {
43 | i.x += i.xa, i.y += i.ya, i.xa *= i.x > r || i.x < 0 ? -1 : 1, i.ya *= i.y > n || i.y < 0 ? -1 : 1, e.fillRect(i.x - 0.5, i.y - 0.5, 1, 1);
44 | for (v = 0; v < w.length; v++) {
45 | x = w[v];
46 | if (i !== x && null !== x.x && null !== x.y) {
47 | B = i.x - x.x, z = i.y - x.y, y = B * B + z * z;
48 | y < x.max && (x === f && y >= x.max / 2 && (i.x -= 0.03 * B, i.y -= 0.03 * z), A = (x.max - y) / x.max, e.beginPath(), e.lineWidth = A / 2, e.strokeStyle = "rgba(" + s.c + "," + (A + 0.2) + ")", e.moveTo(i.x, i.y), e.lineTo(x.x, x.y), e.stroke())
49 | }
50 | }
51 | w.splice(w.indexOf(i), 1)
52 | }), m(b)
53 | }
54 | var u = document.createElement("canvas"),
55 | s = l(),
56 | c = "c_n" + s.l,
57 | e = u.getContext("2d"),
58 | r, n, m = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (i) {
59 | window.setTimeout(i, 1000 / 45)
60 | },
61 | a = Math.random,
62 | f = {
63 | x: null,
64 | y: null,
65 | max: 20000
66 | };
67 | u.id = c;
68 | u.style.cssText = "position:fixed;top:0;left:0;z-index:" + s.z + ";opacity:" + s.o;
69 | j("body")[0].appendChild(u);
70 | k(), window.onresize = k;
71 | window.onmousemove = function (i) {
72 | i = i || window.event, f.x = i.clientX, f.y = i.clientY
73 | }, window.onmouseout = function () {
74 | f.x = null, f.y = null
75 | };
76 | for (var t = [], p = 0; s.n > p; p++) {
77 | var h = a() * r,
78 | g = a() * n,
79 | q = 2 * a() - 1,
80 | d = 2 * a() - 1;
81 | t.push({
82 | x: h,
83 | y: g,
84 | xa: q,
85 | ya: d,
86 | max: 6000
87 | })
88 | }
89 | setTimeout(function () {
90 | b()
91 | }, 100)
92 | }();
93 |
--------------------------------------------------------------------------------
/source/libs/background/ribbon-refresh.min.js:
--------------------------------------------------------------------------------
1 | !function(){function e(e,t,n){return Number(e.getAttribute(t))||n}function t(){for(r.clearRect(0,0,h,s),a=[{x:0,y:0.7*s+f},{x:0,y:0.7*s-f}];a[1].xs||l<0?i(e):l}var o=document.getElementsByTagName("script"),c=o[o.length-1];config={z:e(c,"zIndex",-1),a:e(c,"alpha",0.6),s:e(c,"size",90)};var a,l,d=document.createElement("canvas"),r=d.getContext("2d"),g=window.devicePixelRatio||1,h=window.innerWidth,s=window.innerHeight,f=config.s,u=Math,m=0,x=2*u.PI,y=u.cos,p=u.random;d.width=h*g,d.height=s*g,r.scale(g,g),r.globalAlpha=config.a,d.style.cssText="opacity: "+config.a+";position:fixed;top:0;left:0;z-index: "+config.z+";width:100%;height:100%;pointer-events:none;",document.getElementsByTagName("body")[0].appendChild(d),t()}();
--------------------------------------------------------------------------------
/source/libs/background/ribbon.min.js:
--------------------------------------------------------------------------------
1 | !function(){function e(e,t,n){return Number(e.getAttribute(t))||n}function t(){for(r.clearRect(0,0,h,s),a=[{x:0,y:0.7*s+f},{x:0,y:0.7*s-f}];a[1].xs||l<0?i(e):l}var o=document.getElementsByTagName("script"),c=o[o.length-1];config={z:e(c,"zIndex",-1),a:e(c,"alpha",0.6),s:e(c,"size",90)};var a,l,d=document.createElement("canvas"),r=d.getContext("2d"),g=window.devicePixelRatio||1,h=window.innerWidth,s=window.innerHeight,f=config.s,u=Math,m=0,x=2*u.PI,y=u.cos,p=u.random;d.width=h*g,d.height=s*g,r.scale(g,g),r.globalAlpha=config.a,d.style.cssText="opacity: "+config.a+";position:fixed;top:0;left:0;z-index: "+config.z+";width:100%;height:100%;pointer-events:none;",document.getElementsByTagName("body")[0].appendChild(d),document.onclick=t,document.ontouchstart=t,t()}();
--------------------------------------------------------------------------------
/source/libs/codeBlock/codeBlockFuction.js:
--------------------------------------------------------------------------------
1 | // 代码块功能依赖
2 |
3 | $(function () {
4 | $('pre').wrap('');
5 | });
--------------------------------------------------------------------------------
/source/libs/codeBlock/codeCopy.js:
--------------------------------------------------------------------------------
1 | // 代码块一键复制
2 |
3 | $(function () {
4 | var $copyIcon = $('')
5 | var $notice = $('')
6 | $('.code-area').prepend($copyIcon)
7 | $('.code-area').prepend($notice)
8 | // “复制成功”字出现
9 | function copy(text, ctx) {
10 | if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
11 | try {
12 | document.execCommand('copy') // Security exception may be thrown by some browsers.
13 | $(ctx).prev('.codecopy_notice')
14 | .text("复制成功")
15 | .animate({
16 | opacity: 1,
17 | top: 30
18 | }, 450, function () {
19 | setTimeout(function () {
20 | $(ctx).prev('.codecopy_notice').animate({
21 | opacity: 0,
22 | top: 0
23 | }, 650)
24 | }, 400)
25 | })
26 | } catch (ex) {
27 | $(ctx).prev('.codecopy_notice')
28 | .text("复制失败")
29 | .animate({
30 | opacity: 1,
31 | top: 30
32 | }, 650, function () {
33 | setTimeout(function () {
34 | $(ctx).prev('.codecopy_notice').animate({
35 | opacity: 0,
36 | top: 0
37 | }, 650)
38 | }, 400)
39 | })
40 | return false
41 | }
42 | } else {
43 | $(ctx).prev('.codecopy_notice').text("浏览器不支持复制")
44 | }
45 | }
46 | // 复制
47 | $('.code-area .fa-copy').on('click', function () {
48 | var selection = window.getSelection()
49 | var range = document.createRange()
50 | range.selectNodeContents($(this).siblings('pre').find('code')[0])
51 | selection.removeAllRanges()
52 | selection.addRange(range)
53 | var text = selection.toString()
54 | copy(text, this)
55 | selection.removeAllRanges()
56 | })
57 | });
58 |
--------------------------------------------------------------------------------
/source/libs/codeBlock/codeLang.js:
--------------------------------------------------------------------------------
1 | // 代码块语言识别
2 |
3 | $(function () {
4 | var $highlight_lang = $('');
5 |
6 | $('pre').before($highlight_lang);
7 | $('pre').each(function () {
8 | var code_language = $(this).attr('class');
9 |
10 | if (!code_language) {
11 | return true;
12 | };
13 | var lang_name = code_language.replace("line-numbers", "").trim().replace("language-", "").trim();
14 |
15 | // 首字母大写
16 | // lang_name = lang_name.slice(0, 1).toUpperCase() + lang_name.slice(1);
17 |
18 | $(this).siblings(".code_lang").text(lang_name);
19 | });
20 | });
21 |
--------------------------------------------------------------------------------
/source/libs/codeBlock/codeShrink.js:
--------------------------------------------------------------------------------
1 | // 代码块收缩
2 |
3 | $(function () {
4 | var $code_expand = $('');
5 |
6 | $('.code-area').prepend($code_expand);
7 | $('.code-expand').on('click', function () {
8 | if ($(this).parent().hasClass('code-closed')) {
9 | $(this).siblings('pre').find('code').show();
10 | $(this).parent().removeClass('code-closed');
11 | } else {
12 | $(this).siblings('pre').find('code').hide();
13 | $(this).parent().addClass('code-closed');
14 | }
15 | });
16 | });
17 |
--------------------------------------------------------------------------------
/source/libs/instantpage/instantpage.js:
--------------------------------------------------------------------------------
1 | /*! instant.page v2.0.0 - (C) 2019 Alexandre Dieulot - https://instant.page/license */
2 |
3 | let urlToPreload
4 | let mouseoverTimer
5 | let lastTouchTimestamp
6 |
7 | const prefetcher = document.createElement('link')
8 | const isSupported = prefetcher.relList && prefetcher.relList.supports && prefetcher.relList.supports('prefetch')
9 | const isDataSaverEnabled = navigator.connection && navigator.connection.saveData
10 | const allowQueryString = 'instantAllowQueryString' in document.body.dataset
11 | const allowExternalLinks = 'instantAllowExternalLinks' in document.body.dataset
12 | const useWhitelist = 'instantWhitelist' in document.body.dataset
13 |
14 | let delayOnHover = 65
15 | let useMousedown = false
16 | let useMousedownOnly = false
17 | if ('instantIntensity' in document.body.dataset) {
18 | if (document.body.dataset.instantIntensity.substr(0, 'mousedown'.length) == 'mousedown') {
19 | useMousedown = true
20 | if (document.body.dataset.instantIntensity == 'mousedown-only') {
21 | useMousedownOnly = true
22 | }
23 | } else {
24 | const milliseconds = parseInt(document.body.dataset.instantIntensity)
25 | if (!isNaN(milliseconds)) {
26 | delayOnHover = milliseconds
27 | }
28 | }
29 | }
30 |
31 | if (isSupported && !isDataSaverEnabled) {
32 | prefetcher.rel = 'prefetch'
33 | document.head.appendChild(prefetcher)
34 |
35 | const eventListenersOptions = {
36 | capture: true,
37 | passive: true,
38 | }
39 |
40 | if (!useMousedownOnly) {
41 | document.addEventListener('touchstart', touchstartListener, eventListenersOptions)
42 | }
43 |
44 | if (!useMousedown) {
45 | document.addEventListener('mouseover', mouseoverListener, eventListenersOptions)
46 | } else {
47 | document.addEventListener('mousedown', mousedownListener, eventListenersOptions)
48 | }
49 | }
50 |
51 | function touchstartListener(event) {
52 | /* Chrome on Android calls mouseover before touchcancel so `lastTouchTimestamp`
53 | * must be assigned on touchstart to be measured on mouseover. */
54 | lastTouchTimestamp = performance.now()
55 |
56 | const linkElement = event.target.closest('a')
57 |
58 | if (!isPreloadable(linkElement)) {
59 | return
60 | }
61 |
62 | linkElement.addEventListener('touchcancel', touchendAndTouchcancelListener, {
63 | passive: true
64 | })
65 | linkElement.addEventListener('touchend', touchendAndTouchcancelListener, {
66 | passive: true
67 | })
68 |
69 | urlToPreload = linkElement.href
70 | preload(linkElement.href)
71 | }
72 |
73 | function touchendAndTouchcancelListener() {
74 | urlToPreload = undefined
75 | stopPreloading()
76 | }
77 |
78 | function mouseoverListener(event) {
79 | if (performance.now() - lastTouchTimestamp < 1100) {
80 | return
81 | }
82 |
83 | const linkElement = event.target.closest('a')
84 |
85 | if (!isPreloadable(linkElement)) {
86 | return
87 | }
88 |
89 | linkElement.addEventListener('mouseout', mouseoutListener, {
90 | passive: true
91 | })
92 |
93 | urlToPreload = linkElement.href
94 |
95 | mouseoverTimer = setTimeout(() => {
96 | preload(linkElement.href)
97 | mouseoverTimer = undefined
98 | }, delayOnHover)
99 | }
100 |
101 | function mousedownListener(event) {
102 | const linkElement = event.target.closest('a')
103 |
104 | if (!isPreloadable(linkElement)) {
105 | return
106 | }
107 |
108 | linkElement.addEventListener('mouseout', mouseoutListener, {
109 | passive: true
110 | })
111 |
112 | urlToPreload = linkElement.href
113 |
114 | preload(linkElement.href)
115 | }
116 |
117 | function mouseoutListener(event) {
118 | if (event.relatedTarget && event.target.closest('a') == event.relatedTarget.closest('a')) {
119 | return
120 | }
121 |
122 | if (mouseoverTimer) {
123 | clearTimeout(mouseoverTimer)
124 | mouseoverTimer = undefined
125 | }
126 |
127 | urlToPreload = undefined
128 |
129 | stopPreloading()
130 | }
131 |
132 | function isPreloadable(linkElement) {
133 | if (!linkElement || !linkElement.href) {
134 | return
135 | }
136 |
137 | if (urlToPreload == linkElement.href) {
138 | return
139 | }
140 |
141 | if (useWhitelist && !('instant' in linkElement.dataset)) {
142 | return
143 | }
144 |
145 | if (!allowExternalLinks && linkElement.origin != location.origin && !('instant' in linkElement.dataset)) {
146 | return
147 | }
148 |
149 | if (!['http:', 'https:'].includes(linkElement.protocol)) {
150 | return
151 | }
152 |
153 | if (linkElement.protocol == 'http:' && location.protocol == 'https:') {
154 | return
155 | }
156 |
157 | if (!allowQueryString && linkElement.search && !('instant' in linkElement.dataset)) {
158 | return
159 | }
160 |
161 | if (linkElement.hash && linkElement.pathname + linkElement.search == location.pathname + location.search) {
162 | return
163 | }
164 |
165 | if ('noInstant' in linkElement.dataset) {
166 | return
167 | }
168 |
169 | return true
170 | }
171 |
172 | function preload(url) {
173 | prefetcher.href = url
174 | }
175 |
176 | function stopPreloading() {
177 | prefetcher.removeAttribute('href')
178 | }
179 |
--------------------------------------------------------------------------------
/source/libs/jqcloud/jqcloud-1.0.4.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * jQCloud Plugin for jQuery
3 | *
4 | * Version 1.0.4
5 | *
6 | * Copyright 2011, Luca Ongaro
7 | * Licensed under the MIT license.
8 | *
9 | * Date: 2013-05-09 18:54:22 +0200
10 | */
11 | (function(e){"use strict";e.fn.jQCloud=function(t,n){var r=this,i=r.attr("id")||Math.floor(Math.random()*1e6).toString(36),s={width:r.width(),height:r.height(),center:{x:(n&&n.width?n.width:r.width())/2,y:(n&&n.height?n.height:r.height())/2},delayedMode:t.length>50,shape:!1,encodeURI:!0,removeOverflowing:!0};n=e.extend(s,n||{}),r.addClass("jqcloud").width(n.width).height(n.height),r.css("position")==="static"&&r.css("position","relative");var o=function(){var s=function(e,t){var n=function(e,t){return Math.abs(2*e.offsetLeft+e.offsetWidth-2*t.offsetLeft-t.offsetWidth)t.weight?-1:0});var u=n.shape==="rectangular"?18:2,a=[],f=n.width/n.height,l=function(o,l){var c=i+"_word_"+o,h="#"+c,p=6.28*Math.random(),d=0,v=0,m=0,g=5,y="",b="",w;l.html=e.extend(l.html,{id:c}),l.html&&l.html["class"]&&(y=l.html["class"],delete l.html["class"]),t[0].weight>t[t.length-1].weight&&(g=Math.round((l.weight-t[t.length-1].weight)/(t[0].weight-t[t.length-1].weight)*9)+1),w=e("").attr(l.html).addClass("w"+g+" "+y),l.link?(typeof l.link=="string"&&(l.link={href:l.link}),n.encodeURI&&(l.link=e.extend(l.link,{href:encodeURI(l.link.href).replace(/'/g,"%27")})),b=e("").attr(l.link).text(l.text)):b=l.text,w.append(b);if(!!l.handlers)for(var E in l.handlers)l.handlers.hasOwnProperty(E)&&typeof l.handlers[E]=="function"&&e(w).bind(E,l.handlers[E]);r.append(w);var S=w.width(),x=w.height(),T=n.center.x-S/2,N=n.center.y-x/2,C=w[0].style;C.position="absolute",C.left=T+"px",C.top=N+"px";while(s(w[0],a)){if(n.shape==="rectangular"){v++,v*u>(1+Math.floor(m/2))*u*(m%4%2===0?1:f)&&(v=0,m++);switch(m%4){case 1:T+=u*f+Math.random()*2;break;case 2:N-=u+Math.random()*2;break;case 3:T-=u*f+Math.random()*2;break;case 0:N+=u+Math.random()*2}}else d+=u,p+=(o%2===0?1:-1)*u,T=n.center.x-S/2+d*Math.cos(p)*f,N=n.center.y+d*Math.sin(p)-x/2;C.left=T+"px",C.top=N+"px"}if(n.removeOverflowing&&(T<0||N<0||T+S>n.width||N+x>n.height)){w.remove();return}a.push(w[0]),e.isFunction(l.afterWordRender)&&l.afterWordRender.call(w)},c=function(i){i=i||0;if(!r.is(":visible")){setTimeout(function(){c(i)},10);return}i a,
13 | .justified-gallery > div,
14 | .justified-gallery > figure {
15 | position: absolute;
16 | display: inline-block;
17 | overflow: hidden;
18 | /* background: #888888; To have gray placeholders while the gallery is loading with waitThumbnailsLoad = false */
19 | filter: "alpha(opacity=10)";
20 | opacity: 0.1;
21 | margin: 0;
22 | padding: 0;
23 | }
24 | .justified-gallery > a > img,
25 | .justified-gallery > div > img,
26 | .justified-gallery > figure > img,
27 | .justified-gallery > a > a > img,
28 | .justified-gallery > div > a > img,
29 | .justified-gallery > figure > a > img {
30 | position: absolute;
31 | top: 50%;
32 | left: 50%;
33 | margin: 0;
34 | padding: 0;
35 | border: none;
36 | filter: "alpha(opacity=0)";
37 | opacity: 0;
38 | }
39 | .justified-gallery > a > .caption,
40 | .justified-gallery > div > .caption,
41 | .justified-gallery > figure > .caption {
42 | display: none;
43 | position: absolute;
44 | bottom: 0;
45 | padding: 5px;
46 | background-color: #000000;
47 | left: 0;
48 | right: 0;
49 | margin: 0;
50 | color: white;
51 | font-size: 12px;
52 | font-weight: 300;
53 | font-family: sans-serif;
54 | }
55 | .justified-gallery > a > .caption.caption-visible,
56 | .justified-gallery > div > .caption.caption-visible,
57 | .justified-gallery > figure > .caption.caption-visible {
58 | display: initial;
59 | filter: "alpha(opacity=70)";
60 | opacity: 0.7;
61 | -webkit-transition: opacity 500ms ease-in;
62 | -moz-transition: opacity 500ms ease-in;
63 | -o-transition: opacity 500ms ease-in;
64 | transition: opacity 500ms ease-in;
65 | }
66 | .justified-gallery > .entry-visible {
67 | filter: "alpha(opacity=100)";
68 | opacity: 1;
69 | background: none;
70 | }
71 | .justified-gallery > .entry-visible > img,
72 | .justified-gallery > .entry-visible > a > img {
73 | filter: "alpha(opacity=100)";
74 | opacity: 1;
75 | -webkit-transition: opacity 500ms ease-in;
76 | -moz-transition: opacity 500ms ease-in;
77 | -o-transition: opacity 500ms ease-in;
78 | transition: opacity 500ms ease-in;
79 | }
80 | .justified-gallery > .jg-filtered {
81 | display: none;
82 | }
83 | .justified-gallery > .spinner {
84 | position: absolute;
85 | bottom: 0;
86 | margin-left: -24px;
87 | padding: 10px 0 10px 0;
88 | left: 50%;
89 | filter: "alpha(opacity=100)";
90 | opacity: 1;
91 | overflow: initial;
92 | }
93 | .justified-gallery > .spinner > span {
94 | display: inline-block;
95 | filter: "alpha(opacity=0)";
96 | opacity: 0;
97 | width: 8px;
98 | height: 8px;
99 | margin: 0 4px 0 4px;
100 | background-color: #000;
101 | border-radius: 6px;
102 | }
--------------------------------------------------------------------------------
/source/libs/lightGallery/fonts/lg.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/fonts/lg.ttf
--------------------------------------------------------------------------------
/source/libs/lightGallery/fonts/lg.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/fonts/lg.woff
--------------------------------------------------------------------------------
/source/libs/lightGallery/img/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/img/loading.gif
--------------------------------------------------------------------------------
/source/libs/lightGallery/img/video-play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/img/video-play.png
--------------------------------------------------------------------------------
/source/libs/lightGallery/img/vimeo-play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/img/vimeo-play.png
--------------------------------------------------------------------------------
/source/libs/lightGallery/img/youtube-play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/img/youtube-play.png
--------------------------------------------------------------------------------
/source/libs/mermaid/mermaid.min.css:
--------------------------------------------------------------------------------
1 | .loopLine,.messageLine0{marker-end:"url(#arrowhead)"}.node text,.noteText,div.mermaidTooltip{font-family:'trebuchet ms',verdana,arial}.mermaid .label{color:#333}.node circle,.node ellipse,.node polygon,.node rect{fill:#ECECFF;stroke:#CCF;stroke-width:1px}.edgePath .path{stroke:#333}.edgeLabel{background-color:#e8e8e8}.cluster rect{fill:#ffffde!important;rx:4!important;stroke:#aa3!important;stroke-width:1px!important}.cluster text{fill:#333}.actor{stroke:#CCF;fill:#ECECFF}text.actor{fill:#000;stroke:none}.actor-line{stroke:grey}.messageLine0,.messageLine1{stroke-width:1.5;stroke-dasharray:"2 2";stroke:#333}#arrowhead{fill:#333}#crosshead path{fill:#333!important;stroke:#333!important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#CCF;fill:#ECECFF}.labelText,.loopText{fill:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:"2 2";stroke:#CCF}.note{stroke:#aa3;fill:#fff5ad}.noteText{fill:#000;stroke:none;font-size:14px}.section{stroke:none;opacity:.2}.section0{fill:rgba(102,102,255,.49)}.section2{fill:#fff400}.section1,.section3{fill:#fff;opacity:.2}.sectionTitle0,.sectionTitle1,.sectionTitle2,.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px}.grid .tick{stroke:#d3d3d3;opacity:.3;shape-rendering:crispEdges}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-size:11px}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px}.taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#8a90dd;stroke:#534fbc}.taskTextOutside0,.taskTextOutside1,.taskTextOutside2,.taskTextOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#bfc7ff;stroke:#534fbc}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000!important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000!important}.crit0,.crit1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3,.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#000!important}.titleText{text-anchor:middle;font-size:18px;fill:#000}.node text{font-size:14px}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}
--------------------------------------------------------------------------------
/source/libs/minivaline/MiniValine.js:
--------------------------------------------------------------------------------
1 | function loadScript(src,cb){var HEAD=document.getElementsByTagName('head')[0]||document.documentElement;var script=document.createElement('script');script.setAttribute('type','text/javascript');if(cb)script.onload=cb;script.setAttribute('src',src);HEAD.appendChild(script)};loadScript('https://cdn.jsdelivr.net/npm/minivaline@latest')
--------------------------------------------------------------------------------
/source/libs/others/TencentCaptcha.js:
--------------------------------------------------------------------------------
1 | onIsOff = true;//用来控制重复运行的定时器的开关
2 | window.callback = function(res){
3 | if(res.ret === 0){
4 | window.clearInterval(t2);//如果验证成功就结束定时器
5 | }
6 | if(res.ret === 2){
7 | onIsOff = true;//如果验证失败就继续运行定时器
8 | }
9 | }
10 |
11 | var t2 = window.setInterval(function() {//重复运行的定时器,每一秒执行一次函数
12 | if (onIsOff == true){
13 | act = document.activeElement.id;//获取当前焦点的id
14 | if(act=="veditor")//判断评论输入框是否获得焦点
15 | {
16 | document.getElementById("TencentCaptcha").click();//触发id为TencentCaptcha的按钮
17 | onIsOff = false;//触发过程中暂时关闭定时器
18 | }
19 | }
20 | },1000);
--------------------------------------------------------------------------------
/source/libs/others/busuanzi.pure.mini.js:
--------------------------------------------------------------------------------
1 | var bszCaller,bszTag;!function(){var c,d,e,a=!1,b=[];ready=function(c){return a||"interactive"===document.readyState||"complete"===document.readyState?c.call(document):b.push(function(){return c.call(this)}),this},d=function(){for(var a=0,c=b.length;c>a;a++)b[a].apply(document);b=[]},e=function(){a||(a=!0,d.call(window),document.removeEventListener?document.removeEventListener("DOMContentLoaded",e,!1):document.attachEvent&&(document.detachEvent("onreadystatechange",e),window==window.top&&(clearInterval(c),c=null)))},document.addEventListener?document.addEventListener("DOMContentLoaded",e,!1):document.attachEvent&&(document.attachEvent("onreadystatechange",function(){/loaded|complete/.test(document.readyState)&&e()}),window==window.top&&(c=setInterval(function(){try{a||document.documentElement.doScroll("left")}catch(b){return}e()},5)))}(),bszCaller={fetch:function(a,b){var c="BusuanziCallback_"+Math.floor(1099511627776*Math.random());window[c]=this.evalCall(b),a=a.replace("=BusuanziCallback","="+c),scriptTag=document.createElement("SCRIPT"),scriptTag.type="text/javascript",scriptTag.defer=!0,scriptTag.src=a,document.getElementsByTagName("HEAD")[0].appendChild(scriptTag)},evalCall:function(a){return function(b){ready(function(){try{a(b),scriptTag.parentElement.removeChild(scriptTag)}catch(c){bszTag.hides()}})}}},bszCaller.fetch("//busuanzi.ibruce.info/busuanzi?jsonpCallback=BusuanziCallback",function(a){bszTag.texts(a),bszTag.shows()}),bszTag={bszs:["site_pv","page_pv","site_uv"],texts:function(a){this.bszs.map(function(b){var c=document.getElementById("busuanzi_value_"+b);c&&(c.innerHTML=a[b])})},hides:function(){this.bszs.map(function(a){var b=document.getElementById("busuanzi_container_"+a);b&&(b.style.display="none")})},shows:function(){this.bszs.map(function(a){var b=document.getElementById("busuanzi_container_"+a);b&&(b.style.display="inline")})}};
--------------------------------------------------------------------------------
/source/libs/others/clicklove.js:
--------------------------------------------------------------------------------
1 | !function(e,t,a){function r(){for(var e=0;e').css({'position': 'absolute','z-index':'9999', 'top': '-50px'}).html('❄'),
6 | documentHeight = $(document).height(),
7 | documentWidth = $(document).width(),
8 | defaults = {
9 | minSize : 10,
10 | maxSize : 20,
11 | newOn : 1000,
12 | flakeColor : "#AFDAEF" /* 此处可以定义雪花颜色,若要白色可以改为#FFFFFF */
13 | },
14 | options = $.extend({}, defaults, options);
15 | var interval= setInterval( function(){
16 | var startPositionLeft = Math.random() * documentWidth - 100,
17 | startOpacity = 0.5 + Math.random(),
18 | sizeFlake = options.minSize + Math.random() * options.maxSize,
19 | endPositionTop = documentHeight - 200,
20 | endPositionLeft = startPositionLeft - 500 + Math.random() * 500,
21 | durationFall = documentHeight * 10 + Math.random() * 5000;
22 | $flake.clone().appendTo('body').css({
23 | left: startPositionLeft,
24 | opacity: startOpacity,
25 | 'font-size': sizeFlake,
26 | color: options.flakeColor
27 | }).animate({
28 | top: endPositionTop,
29 | left: endPositionLeft,
30 | opacity: 0.2
31 | },durationFall,'linear',function(){
32 | $(this).remove()
33 | });
34 | }, options.newOn);
35 | };
36 | })(jQuery);
37 | $(function(){
38 | $.fn.snow({
39 | minSize: 5, /* 定义雪花最小尺寸 */
40 | maxSize: 50,/* 定义雪花最大尺寸 */
41 | newOn: 500 /* 定义密集程度,数字越小越密集 */
42 | });
43 | });
--------------------------------------------------------------------------------
/source/libs/others/star.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Fairy Dust Cursor.js
3 | * - 90's cursors collection
4 | * -- https://github.com/tholman/90s-cursor-effects
5 | * -- http://codepen.io/tholman/full/jWmZxZ/
6 | */
7 |
8 | //鼠标点击雪花特效
9 | (function fairyDustCursor() {
10 |
11 | var possibleColors = ["#D61C59", "#E7D84B", "#1B8798"]
12 | var width = window.innerWidth;
13 | var height = window.innerHeight;
14 | var cursor = {x: width/2, y: width/2};
15 | var particles = [];
16 |
17 | function init() {
18 | bindEvents();
19 | loop();
20 | }
21 |
22 | // Bind events that are needed
23 | function bindEvents() {
24 | document.addEventListener('mousemove', onMouseMove);
25 | document.addEventListener('touchmove', onTouchMove);
26 | document.addEventListener('touchstart', onTouchMove);
27 |
28 | window.addEventListener('resize', onWindowResize);
29 | }
30 |
31 | function onWindowResize(e) {
32 | width = window.innerWidth;
33 | height = window.innerHeight;
34 | }
35 |
36 | function onTouchMove(e) {
37 | if( e.touches.length > 0 ) {
38 | for( var i = 0; i < e.touches.length; i++ ) {
39 | addParticle( e.touches[i].clientX, e.touches[i].clientY, possibleColors[Math.floor(Math.random()*possibleColors.length)]);
40 | }
41 | }
42 | }
43 |
44 | function onMouseMove(e) {
45 | cursor.x = e.clientX;
46 | cursor.y = e.clientY;
47 |
48 | addParticle( cursor.x, cursor.y, possibleColors[Math.floor(Math.random()*possibleColors.length)]);
49 | }
50 |
51 | function addParticle(x, y, color) {
52 | var particle = new Particle();
53 | particle.init(x, y, color);
54 | particles.push(particle);
55 | }
56 |
57 | function updateParticles() {
58 |
59 | // Updated
60 | for( var i = 0; i < particles.length; i++ ) {
61 | particles[i].update();
62 | }
63 |
64 | // Remove dead particles
65 | for( var i = particles.length -1; i >= 0; i-- ) {
66 | if( particles[i].lifeSpan < 0 ) {
67 | particles[i].die();
68 | particles.splice(i, 1);
69 | }
70 | }
71 |
72 | }
73 |
74 | function loop() {
75 | requestAnimationFrame(loop);
76 | updateParticles();
77 | }
78 |
79 | /**
80 | * Particles
81 | */
82 |
83 | function Particle() {
84 |
85 | this.character = "*";
86 | this.lifeSpan = 120; //ms
87 | this.initialStyles ={
88 | "position": "fixed",
89 | "top": "0", //必须加
90 | "display": "block",
91 | "pointerEvents": "none",
92 | "z-index": "10000000",
93 | "fontSize": "20px",
94 | "will-change": "transform"
95 | };
96 |
97 | // Init, and set properties
98 | this.init = function(x, y, color) {
99 |
100 | this.velocity = {
101 | x: (Math.random() < 0.5 ? -1 : 1) * (Math.random() / 2),
102 | y: 1
103 | };
104 |
105 | this.position = {x: x - 10, y: y - 20};
106 | this.initialStyles.color = color;
107 | console.log(color);
108 |
109 | this.element = document.createElement('span');
110 | this.element.innerHTML = this.character;
111 | applyProperties(this.element, this.initialStyles);
112 | this.update();
113 |
114 | document.body.appendChild(this.element);
115 | };
116 |
117 | this.update = function() {
118 | this.position.x += this.velocity.x;
119 | this.position.y += this.velocity.y;
120 | this.lifeSpan--;
121 |
122 | this.element.style.transform = "translate3d(" + this.position.x + "px," + this.position.y + "px,0) scale(" + (this.lifeSpan / 120) + ")";
123 | }
124 |
125 | this.die = function() {
126 | this.element.parentNode.removeChild(this.element);
127 | }
128 |
129 | }
130 |
131 | /**
132 | * Utils
133 | */
134 |
135 | // Applies css `properties` to an element.
136 | function applyProperties( target, properties ) {
137 | for( var key in properties ) {
138 | target.style[ key ] = properties[ key ];
139 | }
140 | }
141 |
142 | init();
143 | })();
--------------------------------------------------------------------------------
/source/libs/scrollprogress/scrollProgress.min.js:
--------------------------------------------------------------------------------
1 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ScrollProgress=e()}(this,function(){"use strict";function t(){}var e=function(e){this._handleUpdate="function"==typeof e?e:t,this._viewportHeight=this._getViewportHeight(),this._viewportWidth=this._getViewportWidth(),this._progress=this._getProgress(),this._handleUpdate(this._progress.x,this._progress.y),this._onScroll=this._onScroll.bind(this),this._onResize=this._onResize.bind(this),window.addEventListener("scroll",this._onScroll),window.addEventListener("resize",this._onResize)};return e.prototype._getViewportHeight=function(){return document.body.scrollHeight-window.innerHeight},e.prototype._getViewportWidth=function(){return document.body.scrollWidth-window.innerWidth},e.prototype._getProgress=function(){var t=void 0===window.scrollX?window.pageXOffset:window.scrollX,e=void 0===window.scrollY?window.pageYOffset:window.scrollY;return{x:0===this._viewportWidth?0:t/this._viewportWidth,y:0===this._viewportHeight?0:e/this._viewportHeight}},e.prototype._onScroll=function(){this._progress=this._getProgress(),this._handleUpdate(this._progress.x,this._progress.y)},e.prototype._onResize=function(){this._viewportHeight=this._getViewportHeight(),this._viewportWidth=this._getViewportWidth(),this._progress=this._getProgress(),this._handleUpdate(this._progress.x,this._progress.y)},e.prototype.trigger=function(){this._handleUpdate(this._progress.x,this._progress.y)},e.prototype.destroy=function(){window.removeEventListener("scroll",this._onScroll),window.removeEventListener("resize",this._onResize),this._handleUpdate=null},e});
--------------------------------------------------------------------------------
/source/libs/share/css/share.min.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:"socialshare";src:url("../fonts/iconfont.eot");src:url("../fonts/iconfont.eot?#iefix") format("embedded-opentype"),url("../fonts/iconfont.woff") format("woff"),url("../fonts/iconfont.ttf") format("truetype"),url("../fonts/iconfont.svg#iconfont") format("svg")}.social-share{font-family:"socialshare" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:0.2px;-moz-osx-font-smoothing:grayscale}.social-share *{font-family:"socialshare" !important}.social-share .icon-tencent:before{content:"\f07a"}.social-share .icon-qq:before{content:"\f11a"}.social-share .icon-weibo:before{content:"\f12a"}.social-share .icon-wechat:before{content:"\f09a"}.social-share .icon-douban:before{content:"\f10a"}.social-share .icon-heart:before{content:"\f20a"}.social-share .icon-like:before{content:"\f00a"}.social-share .icon-qzone:before{content:"\f08a"}.social-share .icon-linkedin:before{content:"\f01a"}.social-share .icon-diandian:before{content:"\f05a"}.social-share .icon-facebook:before{content:"\f03a"}.social-share .icon-google:before{content:"\f04a"}.social-share .icon-twitter:before{content:"\f06a"}.social-share a{position:relative;text-decoration:none;margin:4px;display:inline-block;outline:none}.social-share .social-share-icon{position:relative;display:inline-block;width:32px;height:32px;font-size:20px;border-radius:50%;line-height:32px;border:1px solid #666;color:#666;text-align:center;vertical-align:middle;transition:background 0.6s ease-out 0s}.social-share .social-share-icon:hover{background:#666;color:#fff}.social-share .icon-weibo{color:#ff763b;border-color:#ff763b}.social-share .icon-weibo:hover{background:#ff763b}.social-share .icon-tencent{color:#56b6e7;border-color:#56b6e7}.social-share .icon-tencent:hover{background:#56b6e7}.social-share .icon-qq{color:#56b6e7;border-color:#56b6e7}.social-share .icon-qq:hover{background:#56b6e7}.social-share .icon-qzone{color:#FDBE3D;border-color:#FDBE3D}.social-share .icon-qzone:hover{background:#FDBE3D}.social-share .icon-douban{color:#33b045;border-color:#33b045}.social-share .icon-douban:hover{background:#33b045}.social-share .icon-linkedin{color:#0077B5;border-color:#0077B5}.social-share .icon-linkedin:hover{background:#0077B5}.social-share .icon-facebook{color:#44619D;border-color:#44619D}.social-share .icon-facebook:hover{background:#44619D}.social-share .icon-google{color:#db4437;border-color:#db4437}.social-share .icon-google:hover{background:#db4437}.social-share .icon-twitter{color:#55acee;border-color:#55acee}.social-share .icon-twitter:hover{background:#55acee}.social-share .icon-diandian{color:#307DCA;border-color:#307DCA}.social-share .icon-diandian:hover{background:#307DCA}.social-share .icon-wechat{position:relative;color:#7bc549;border-color:#7bc549}.social-share .icon-wechat:hover{background:#7bc549}.social-share .icon-wechat .wechat-qrcode{display:none;border:1px solid #eee;position:absolute;z-index:9;top:-205px;left:-84px;width:200px;height:192px;color:#666;font-size:12px;text-align:center;background-color:#fff;box-shadow:0 2px 10px #aaa;transition:all 200ms;-webkit-tansition:all 350ms;-moz-transition:all 350ms}.social-share .icon-wechat .wechat-qrcode.bottom{top:40px;left:-84px}.social-share .icon-wechat .wechat-qrcode.bottom:after{display:none}.social-share .icon-wechat .wechat-qrcode h4{font-weight:normal;height:26px;line-height:26px;font-size:12px;background-color:#f3f3f3;margin:0;padding:0;color:#777}.social-share .icon-wechat .wechat-qrcode .qrcode{width:105px;margin:10px auto}.social-share .icon-wechat .wechat-qrcode .qrcode table{margin:0 !important}.social-share .icon-wechat .wechat-qrcode .help p{font-weight:normal;line-height:16px;padding:0;margin:0}.social-share .icon-wechat .wechat-qrcode:after{content:'';position:absolute;left:50%;margin-left:-6px;bottom:-13px;width:0;height:0;border-width:8px 6px 6px 6px;border-style:solid;border-color:#fff transparent transparent transparent}.social-share .icon-wechat:hover .wechat-qrcode{display:block}
2 |
--------------------------------------------------------------------------------
/source/libs/share/fonts/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/share/fonts/iconfont.eot
--------------------------------------------------------------------------------
/source/libs/share/fonts/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/share/fonts/iconfont.ttf
--------------------------------------------------------------------------------
/source/libs/share/fonts/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/share/fonts/iconfont.woff
--------------------------------------------------------------------------------
/source/libs/tocbot/tocbot.css:
--------------------------------------------------------------------------------
1 | .toc{overflow-y:auto}.toc>.toc-list{overflow:hidden;position:relative}.toc>.toc-list li{list-style:none}.toc-list{margin:0;padding-left:10px}a.toc-link{color:currentColor;height:100%}.is-collapsible{max-height:1000px;overflow:hidden;transition:all 300ms ease-in-out}.is-collapsed{max-height:0}.is-position-fixed{position:fixed !important;top:0}.is-active-link{font-weight:700}.toc-link::before{background-color:#EEE;content:' ';display:inline-block;height:inherit;left:0;margin-top:-1px;position:absolute;width:2px}.is-active-link::before{background-color:#54BC4B}
2 |
--------------------------------------------------------------------------------
/source/libs/twikoo/twikoo.all.min.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /*!
2 | * Twikoo v0.6.0
3 | * (c) 2020-2021 iMaeGoo
4 | * Released under the MIT License.
5 | * Last Update: 1/7/2021, 7:44:19 AM
6 | */
7 |
8 | /*!
9 | * Vue.js v2.6.12
10 | * (c) 2014-2020 Evan You
11 | * Released under the MIT License.
12 | */
13 |
14 | /**
15 | * Prism: Lightweight, robust, elegant syntax highlighting
16 | *
17 | * @license MIT
18 | * @author Lea Verou
19 | * @namespace
20 | * @public
21 | */
22 |
--------------------------------------------------------------------------------
/source/medias/avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/avatar.jpg
--------------------------------------------------------------------------------
/source/medias/banner/0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/0.jpg
--------------------------------------------------------------------------------
/source/medias/banner/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/1.jpg
--------------------------------------------------------------------------------
/source/medias/banner/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/2.jpg
--------------------------------------------------------------------------------
/source/medias/banner/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/3.jpg
--------------------------------------------------------------------------------
/source/medias/banner/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/4.jpg
--------------------------------------------------------------------------------
/source/medias/banner/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/5.jpg
--------------------------------------------------------------------------------
/source/medias/banner/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/6.jpg
--------------------------------------------------------------------------------
/source/medias/barrager/0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/barrager/0.png
--------------------------------------------------------------------------------
/source/medias/barrager/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/barrager/1.png
--------------------------------------------------------------------------------
/source/medias/barrager/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/barrager/2.png
--------------------------------------------------------------------------------
/source/medias/barrager/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/barrager/close.png
--------------------------------------------------------------------------------
/source/medias/comment_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/comment_bg.png
--------------------------------------------------------------------------------
/source/medias/cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/cover.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/0.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/1.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/10.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/11.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/11.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/12.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/13.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/13.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/14.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/14.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/15.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/16.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/16.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/17.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/17.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/18.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/18.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/19.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/19.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/2.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/20.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/21.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/21.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/22.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/23.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/23.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/3.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/4.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/5.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/6.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/7.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/8.jpg
--------------------------------------------------------------------------------
/source/medias/featureimages/9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/9.jpg
--------------------------------------------------------------------------------
/source/medias/icp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/icp.png
--------------------------------------------------------------------------------
/source/medias/images/01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/images/01.jpg
--------------------------------------------------------------------------------
/source/medias/images/02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/images/02.jpg
--------------------------------------------------------------------------------
/source/medias/images/03.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/images/03.jpg
--------------------------------------------------------------------------------
/source/medias/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/logo.png
--------------------------------------------------------------------------------
/source/medias/reward/alipay.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/reward/alipay.jpg
--------------------------------------------------------------------------------
/source/medias/reward/wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/reward/wechat.png
--------------------------------------------------------------------------------