├── Changelog.md
├── LICENSE
├── README-EN.md
├── README.md
├── _config.yml
├── fiction.md
├── languages
├── en.yml
└── zh-CN.yml
├── layout
├── 404.pug
├── _partial
│ ├── article-index.pug
│ ├── article-item.pug
│ ├── article.pug
│ ├── blog-info.pug
│ ├── comment.pug
│ ├── footer.pug
│ ├── head.pug
│ ├── header.pug
│ ├── menu-index.pug
│ ├── other-resources.pug
│ ├── pageview
│ │ ├── pageview-post.pug
│ │ └── pageview-site.pug
│ ├── pagination.pug
│ ├── post
│ │ ├── copyright.pug
│ │ ├── date.pug
│ │ ├── post-categories.pug
│ │ ├── post-tags.pug
│ │ ├── reward.pug
│ │ ├── toc.pug
│ │ └── word-count.pug
│ ├── search.pug
│ └── tool-bar.pug
├── about.pug
├── archive.pug
├── categories.pug
├── index.pug
├── layout.pug
├── post.pug
└── tags.pug
├── scripts
├── events
│ └── welcome.js
└── tags
│ ├── link-card.js
│ └── quote.js
└── source
├── css
├── _style
│ ├── 404.styl
│ ├── _default
│ │ ├── animation.styl
│ │ ├── code-highlight.styl
│ │ ├── global-settings.styl
│ │ ├── icon.styl
│ │ ├── image.styl
│ │ ├── link-card.styl
│ │ ├── media.styl
│ │ └── text.styl
│ ├── _partial
│ │ ├── article-index.styl
│ │ ├── article.styl
│ │ ├── blog-info.styl
│ │ ├── code.styl
│ │ ├── comment.styl
│ │ ├── footer.styl
│ │ ├── header.styl
│ │ ├── menu-index.styl
│ │ ├── pagination.styl
│ │ ├── post
│ │ │ ├── copyright.styl
│ │ │ ├── date.styl
│ │ │ ├── post-categories.styl
│ │ │ ├── post-tags.styl
│ │ │ ├── reward.styl
│ │ │ ├── toc.styl
│ │ │ └── word-count.styl
│ │ ├── search.styl
│ │ └── tool-bar.styl
│ ├── about.styl
│ ├── archive.styl
│ ├── categories.styl
│ ├── index.styl
│ ├── layout.styl
│ └── tags.styl
├── darkmode.styl
├── style.styl
└── third-party
│ └── APlayer.min.css
├── img
├── author.jpg
├── blog-background.png
├── reward
│ ├── alipay.jpg
│ └── wechat.jpg
└── site-icon.png
└── js
├── jquery-3.7.1.min.js
├── theme
├── copy.js
├── menu.js
├── reward.js
├── search.js
├── toc.js
└── tool-bar.js
└── third-party
├── APlayer.min.js
├── clipboard.min.js
└── darkmode.js
/Changelog.md:
--------------------------------------------------------------------------------
1 | # Changelog 更新日志
2 |
3 | *Chinese Version & English Version*
4 |
5 | ## 🐱v2.1.5
6 | Released at `2025-05-01`.
7 |
8 | ### ✅️问题修复
9 | - 修复首页文章自动生成摘要时可能会导致html标签不闭合的问题,并且新增主题配置项“摘要长度”
10 |
11 | ### ✅️Fixes
12 | - Fixed the issue of auto generating post excerpt at homepage, which could probably make html tags not closed. Also added a new theme configuration 'excerpt length'.
13 |
14 |
15 |
16 | ---
17 |
18 |
19 |
20 | ## 🐱v2.1.4
21 | Released at `2025-04-09`.
22 |
23 | ### ♾️优化项目
24 | - 优化关于页联系方式:
25 | - 增加QQ选项:点击选项可以自动复制账号到剪贴板
26 | - 优化Wechat选项:填写“微信”也可以被识别;点击选项可以自动复制账号到剪贴板
27 | - 去除公众号选项
28 |
29 | ### ♾️Improvements
30 | - Improved contact module in About page:
31 | - Added QQ: Automatically copy account name to clipboard when click the option.
32 | - Improved Wechat: Automatically copy account name to clipboard when click the option.
33 |
34 |
35 |
36 | ---
37 |
38 |
39 |
40 | ## 🐱v2.1.3
41 | Released at `2025-03-11`.
42 |
43 | ### 🆕新增功能
44 | - 新增配置选项:网站背景是否跟随页面滚动
45 |
46 | ### ♾️优化项目
47 | - 优化背景设置:背景图片自动居中
48 | - 优化博客简介字体样式
49 |
50 | ### 🆕New Features
51 | - Added configuration: background scrollable.
52 |
53 | ### ♾️Improvements
54 | - Improved background setting: background image will be centered automatically.
55 | - Improved the font style of blog description.
56 |
57 |
58 |
59 | ---
60 |
61 |
62 |
63 | ## 🐱v2.1.2
64 | Released at `2025-01-27`.
65 |
66 | ### ♾️优化项目
67 | - 优化悬浮工具栏的位置,使其吸附在主体部分右边
68 | - 优化归档页面的文章卡片大小及布局,现在可以显示更多的摘要内容
69 | - 优化首页元素的外间距,使布局更紧凑美观
70 |
71 | ### ♾️Improvements
72 | - Improved the position of toolbar to make it attached to the right side of the main container.
73 | - Improved the size and layout of article cards in the Archives page, it can display more excerpt content now.
74 | - Improved the margin of elements in Index page to make the layout tighter and more beautiful.
75 |
76 |
77 |
78 | ---
79 |
80 |
81 |
82 | ## 🐱v2.1.1
83 | Released at `2025-01-26`.
84 |
85 | ### ✅️问题修复
86 | - 修复首页错误地显示相对时间的问题,现在会直接显示文章的发布日期
87 |
88 | ### ♾️优化项目
89 | - 优化TOC的位置,使其吸附在主体部分右边
90 |
91 | ### ✅️Fixes
92 | - Fixed the issue of displaying relative time at Index page by mistake, it displays posts publish time now.
93 |
94 | ### ♾️Improvements
95 | - Improved the position of TOC to make it attached to the right side of the main container.
96 |
97 |
98 |
99 | ---
100 |
101 |
102 |
103 | ## 🐱v2.1.0
104 | Released at `2024-11-04`.
105 |
106 | ### 🆕新增功能
107 | - 新增链接卡片标签,可用于链接外部页面、站内文章或文件下载,详见[链接卡片](https://chanwj.github.io/Meow-Theme-Guide/#链接卡片)介绍
108 | - 新增悬浮工具栏功能:可以放大/缩小文章正文字体
109 | - 新增功能:一键复制代码(使用clipboard.js)
110 |
111 | ### ✅️问题修复
112 | - 修复切换深色模式时背景图片/渐变色不变的问题
113 | - 修复切回浅色模式时背景颜色会变成默认黄色的问题
114 |
115 | ### ♾️优化项目
116 | - 优化分类页面显示效果,可以更清晰地看到分类的层级结构,并且可以配置是否显示文章数量、显示几层分类
117 | - 优化对APlayer的使用:改为在需要使用APlayer的页面Front-matter中配置开关,现在可以在“关于页”内引入音乐播放器了
118 | - 置顶的文章会在首页显示相应的置顶标签,可在语言文件中配置标签显示值
119 | - 优化资源引入,提升页面加载速度
120 | - 优化了一些代码结构与页面展示效果,增加了一些动态特效
121 |
122 | ### 🆕New Features
123 | - Added tag for link card, support to link external page, site post or file to be downloaded. Read more in [Link Card](https://chanwj.github.io/en/Meow-Theme-Guide/#Link-Card).
124 | - Added function to toolbar: increase/decrease font size of post.
125 | - Added function: copy codes with one click (with clipboard.js).
126 |
127 | ### ✅️Fixes
128 | - Fixed the issue of background image/gradient color remaining unchanged when switching to darkmode.
129 | - Fixed the issue of background color changing to yellow by default when switching back to lightmode.
130 |
131 | ### ♾️Improvements
132 | - Improved the display effect of categories page, the hierarchies are more clear now. Configurable: show posts count, depth of categories to display.
133 | - Improved the usage of APlayer: change to configuring switches in Front-matter of each page. You can also import music player in 'About' page now.
134 | - Top posts will show top-tag on the homepage, the display value of top-tag can be configured in language files.
135 | - Optimized the introductions of resources and improve page loading speed.
136 | - Optimized some code structures and page display styles, added some dynamic effects.
137 |
138 |
139 |
140 | ---
141 |
142 |
143 |
144 | ## 🐱v2.0.0
145 | Released at `2024-10-20`.
146 |
147 | ### ⭐提示
148 | - 适配`Hexo v7.3.0`,建议同步更新Hexo
149 | - 本次更新内容较多,建议提前对已自定义修改过的主题配置文件`_config.yml`进行备份。
150 |
151 | ### 🆕新增功能
152 | - 新增评论功能(使用giscus),在文章和关于页加入评论区模块,可配置,详情可见[评论功能](https://chanwj.github.io/Meow-Theme-Guide/#评论功能)说明
153 | - 新增加密功能(使用hexo-blog-encrypt),详情可见[加密功能](https://chanwj.github.io/Meow-Theme-Guide/#加密功能)说明
154 | - 新增深色模式,可配置,详情可见[深色模式](https://chanwj.github.io/Meow-Theme-Guide/#深色模式)介绍。
155 | - 新增引用块标签,支持使用多种颜色风格的引用块,详情可见[引用块](https://chanwj.github.io/Meow-Theme-Guide/#引用块)介绍
156 | - 新增悬浮工具栏功能:
157 | - 当前页面为文章或关于页时可跳转至页尾评论区
158 | - 深色模式开关
159 | - 在关于页新增致谢栏目,可配置开关、致谢词、致谢名单
160 | - 新增配置:可自定义字体,详情可见[网站字体](https://chanwj.github.io/Meow-Theme-Guide/#网站字体)说明
161 | - 新增配置:文章段落首行缩进两字符,可为每篇文章单独开关,详情可见[段首缩进](https://chanwj.github.io/Meow-Theme-Guide/#段首缩进)介绍
162 | - 新增配置:可自定义网站背景,支持三种背景类型,详情可见[网站背景](https://chanwj.github.io/Meow-Theme-Guide/#网站背景)说明
163 | - 新增对`APlayer`音乐播放器的支持,详情可见[音乐播放器](https://chanwj.github.io/Meow-Theme-Guide/#音乐播放器)介绍
164 | - 新增TOC配置项`max_items`(`Hexo v7.3.0`更新内容)
165 |
166 | ### ♾️优化项目
167 | - 在`
' + content + ''; 18 | } 19 | 20 | hexo.extend.tag.register('quote', quote, { ends: true }); -------------------------------------------------------------------------------- /source/css/_style/404.styl: -------------------------------------------------------------------------------- 1 | .page-not-found 2 | margin: 0 auto 3 | display: flex 4 | align-items: center 5 | flex-flow: column 6 | 7 | h1, p 8 | // background: linear-gradient(to right, #8A2387, #E94057, #4BC0C8) 9 | // -webkit-background-clip: text 10 | // background-clip: text 11 | // -webkit-text-fill-color: transparent 12 | // color: transparent 13 | margin: 0 auto 8px 14 | color: orange-dark 15 | 16 | h1 17 | font-size: 5em 18 | 19 | p 20 | font-size: 20px 21 | 22 | a 23 | font-size: 18px 24 | text-decoration: none 25 | color: white 26 | background-color: orange-low-saturation 27 | padding: 3px 15px 28 | border-radius: 20px 29 | margin-top: 10px 30 | 31 | &:hover 32 | background-color: yellow-normal 33 | -------------------------------------------------------------------------------- /source/css/_style/_default/animation.styl: -------------------------------------------------------------------------------- 1 | @keyframes show-toc-slide { 2 | 0% { 3 | opacity: 0 4 | transform: translateX(-10%) 5 | -webkit-transform: translateX(-10%) 6 | } 7 | 100% { 8 | opacity: 1 9 | transform: translateX(0) 10 | -webkit-transform: translateX(0) 11 | } 12 | } 13 | 14 | @keyframes show-toc { 15 | 0% { 16 | opacity: 0 17 | transform: translateY(-10%) 18 | -webkit-transform: translateY(-10%) 19 | } 20 | 100% { 21 | opacity: 1 22 | transform: translateY(0) 23 | -webkit-transform: translateY(0) 24 | } 25 | } 26 | 27 | @keyframes show-menu { 28 | 0% { 29 | opacity: 0 30 | transform: translateY(-10%) 31 | -webkit-transform: translateY(-10%) 32 | } 33 | 100% { 34 | opacity: 1 35 | transform: translateY(0) 36 | -webkit-transform: translateY(0) 37 | } 38 | } 39 | 40 | @keyframes disable-menu { 41 | 0% { 42 | opacity: 1 43 | transform: translateY(0) 44 | -webkit-transform: translateY(0) 45 | } 46 | 100% { 47 | opacity: 0 48 | transform: translateY(-10%) 49 | -webkit-transform: translateY(-10%) 50 | } 51 | } 52 | 53 | @keyframes fade { 54 | 0%, 100% { 55 | opacity: 1 56 | } 57 | 50% { 58 | opacity: 0.2 59 | } 60 | } 61 | 62 | @keyframes beat { 63 | 0%, 100% { 64 | transform: scale(1) 65 | -webkit-transform: scale(1) 66 | } 67 | 50% { 68 | transform: scale(1.2) 69 | -webkit-transform: scale(1.2) 70 | } 71 | } 72 | 73 | @keyframes bounce { 74 | 0%, 50%, 100% { 75 | transform: translateY(0) 76 | -webkit-transform: translateY(0) 77 | } 78 | 25% { 79 | transform: translateY(-3px) 80 | -webkit-transform: translateY(-3px) 81 | } 82 | 75% { 83 | transform: translateY(3px) 84 | -webkit-transform: translateY(3px) 85 | } 86 | } 87 | 88 | @keyframes showup { 89 | 0% { 90 | opacity: 0 91 | } 92 | 100% { 93 | opacity: 1 94 | } 95 | } 96 | 97 | @keyframes spin { 98 | 0% { 99 | transform: rotate(0) 100 | -webkit-transform: rotate(0) 101 | } 102 | 100% { 103 | transform: rotate(360deg) 104 | -webkit-transform: rotate(360deg) 105 | } 106 | } 107 | 108 | @keyframes title-run { 109 | 0% { 110 | opacity: 0 111 | transform: translateY(-10%) 112 | -webkit-transform: translateY(-10%) 113 | } 114 | 100% { 115 | opacity: 1 116 | transform: translateY(0) 117 | -webkit-transform: translateY(0) 118 | } 119 | } 120 | 121 | @keyframes to-left { 122 | 0%, 100% { 123 | transform: translateX(0) 124 | -webkit-transform: translateX(0) 125 | } 126 | 50% { 127 | transform: translateX(-30%) 128 | -webkit-transform: translateX(-30%) 129 | } 130 | } 131 | 132 | @keyframes to-right { 133 | 0%, 100% { 134 | transform: translateX(0) 135 | -webkit-transform: translateX(0) 136 | } 137 | 50% { 138 | transform: translateX(30%) 139 | -webkit-transform: translateX(30%) 140 | } 141 | } 142 | 143 | @keyframes swtich-to-darkmode { 144 | 0% { 145 | background-color: #ffdf6a 146 | } 147 | 100% { 148 | background-color: black 149 | } 150 | } 151 | 152 | @keyframes swtich-to-lightmode { 153 | 0% { 154 | background-color: black 155 | } 156 | 100% { 157 | background-color: #ffdf6a 158 | } 159 | } 160 | 161 | @keyframes scroll-text-horizontal { 162 | 0% { 163 | transform: translateX(50%) 164 | -webkit-transform: translateX(50%) 165 | } 166 | 100% { 167 | transform: translateX(-100%) 168 | -webkit-transform: translateX(-100%) 169 | } 170 | } 171 | 172 | @keyframes scroll-text-vertical { 173 | 0% { 174 | transform: translateY(100%) 175 | -webkit-transform: translateY(100%) 176 | } 177 | 100% { 178 | transform: translateY(-100%) 179 | -webkit-transform: translateY(-100%) 180 | } 181 | } -------------------------------------------------------------------------------- /source/css/_style/_default/code-highlight.styl: -------------------------------------------------------------------------------- 1 | .comment, .quote 2 | color: #a0a1a7 3 | 4 | .doctag, .keyword, .formula 5 | color: #a626a4 6 | 7 | .section, .name, .selector-tag, .deletion, .subst 8 | color: #e45649 9 | 10 | .literal 11 | color: #0184bb 12 | 13 | .string, .regexp, .addition, .attribute, .meta .string 14 | color: #50a14f 15 | 16 | .attr, .variable, .template-variable, .type, .selector-class, .selector-attr, .selector-pseudo, .number 17 | color: #b37a00 18 | 19 | .symbol, .bullet, .link, .meta, .selector-id, .title 20 | color: #4078f2 21 | 22 | .built_in, .title.class_, .class .title 23 | color: #c98900 24 | 25 | .strong 26 | font-weight: bold 27 | 28 | .link 29 | text-decoration: underline -------------------------------------------------------------------------------- /source/css/_style/_default/global-settings.styl: -------------------------------------------------------------------------------- 1 | // config 2 | $root-path = hexo-config('root') 3 | 4 | // page 5 | max-page-width = 1080px 6 | 7 | // font-family 8 | default-font-family = 'PingFang SC', 'Microsoft YaHei', Sans-serif, Serif 9 | if hexo-config('font.font_family') 10 | default-font-family = unquote(hexo-config('font.font_family')) 11 | code-font = 'Lucida Console', Courier, 'PingFang SC', 'Microsoft YaHei', Monaco,'Courier New', Sans-serif, Serif, monospace 12 | 13 | // font-size 14 | default-font-size = 18px 15 | default-font-size-smaller = 16px 16 | article-title-font-size = 28px 17 | article-title1-font-size = 26px 18 | article-title2-font-size = 24px 19 | article-title3-font-size = 22px 20 | article-title4-font-size = 20px 21 | article-title5-font-size = 18px 22 | article-title6-font-size = 18px 23 | header-item-font-size = 20px 24 | header-item-font-size-smaller = 18px 25 | info-font-size = 16px 26 | info-font-size-normal = 16px 27 | info-font-size-larger = 17px 28 | info-font-size-smaller = 16px 29 | code-font-size = 16px 30 | code-line-number-font-size = 16px 31 | footer-font-size = 15px 32 | register-font-size = 15px 33 | pagination-font-size = 18px 34 | toc-font-size = 16px 35 | superscript-font-size = 14px 36 | 37 | // color 38 | orange-normal = #ffb64f 39 | orange-fresh = #fba414 40 | orange-light = #f9ae08 41 | orange-middle = #f9802d 42 | orange-dark = #975100 43 | orange-low-saturation = #db8540 44 | red-light = #f15b00 45 | red-normal = #f94032 46 | red-dark = #e45649 47 | red-fresh = #ff8e71 48 | cherry = #ff6e6c 49 | pink-light = #ffdddd 50 | pink-normal = #ff9393 51 | pink-dark = #ff6767 52 | yellow-normal = #FFCF2F 53 | yellow-light = #ffdf6a 54 | purple-normal = #67568c 55 | green-normal = #50a14f 56 | green-light = #B8E05A 57 | green-fresh = #A4CF3E 58 | green-dark = #809B3E 59 | cream = #fef1e1 60 | code-light = #f0f0f0 61 | code-normal = #e9e9e9 62 | code-dark = #E4E4E4 63 | quote-background = #fff7dc 64 | text-black = #1f1235 65 | text-black-light = #4e4a55 66 | text-grey = #8d8d8d 67 | text-grey-light = #b1b1b1 68 | border-grey = #cccccc 69 | shadow-grey = #d7d7d7 70 | icon-grey = #b0b0b0 71 | blue-light = #A3DCF3 72 | blue-normal = #78CCEF 73 | background-dark-light = rgba(78, 74, 85, 0.4) 74 | background-dark = rgb(43, 41, 46) 75 | background-dark-lighter = rgba(135, 135, 135, 0.4) 76 | darkmode-text = rgb(224, 224, 224) 77 | 78 | // container 79 | header-height = 50px 80 | 81 | // site background 82 | site-background-color = yellow-light 83 | site-background-image = '' 84 | site-background-gradient = linear-gradient(to bottom right,#ffa751,#ffe259) 85 | if hexo-config('background.type') == 1 86 | if hexo-config('background.image_url') 87 | site-background-image = hexo-config('background.image_url') 88 | else if hexo-config('background.type') == 2 89 | if hexo-config('background.color') 90 | site-background-color = unquote(hexo-config('background.color')) 91 | else 92 | if hexo-config('background.gradient') 93 | site-background-gradient = unquote(hexo-config('background.gradient')) -------------------------------------------------------------------------------- /source/css/_style/_default/icon.styl: -------------------------------------------------------------------------------- 1 | .icon 2 | color: icon-grey -------------------------------------------------------------------------------- /source/css/_style/_default/image.styl: -------------------------------------------------------------------------------- 1 | img 2 | display: block 3 | margin: 5px auto 4 | max-width: 100% -------------------------------------------------------------------------------- /source/css/_style/_default/link-card.styl: -------------------------------------------------------------------------------- 1 | .linkcard 2 | margin: 15px 0 3 | display: flex 4 | flex-flow: row wrap 5 | align-items: center 6 | 7 | .linkcard-item 8 | width: 30% 9 | padding: 10px 10 | height: 60px 11 | overflow: hidden 12 | border: 1px border-grey dotted 13 | border-radius: 8px 14 | margin: 8px calc((10% - 6px) / 6 - 10px) 15 | 16 | &:hover 17 | background-color: code-light 18 | 19 | .linkcard-item-desc 20 | span 21 | animation: scroll-text-horizontal 3s linear infinite 22 | 23 | a 24 | display: block 25 | height: 100% 26 | width: 100% 27 | text-decoration: none 28 | color: text-black 29 | overflow: hidden 30 | 31 | &:hover 32 | color: text-black 33 | 34 | .linkcard-item-icon 35 | animation: fade 1.2s infinite 36 | 37 | .linkcard-item-title 38 | text-decoration: underline 39 | 40 | .linkcard-item-icon 41 | float: left 42 | margin: 0 10px 43 | width: 50px 44 | font-size: 45px 45 | line-height: 1em 46 | color: text-black-light 47 | 48 | i 49 | margin: 7.5px auto 50 | 51 | img 52 | width: 50px 53 | 54 | .linkcard-item-title 55 | font-weight: bold 56 | height: 25px 57 | overflow: hidden 58 | 59 | .linkcard-item-desc 60 | font-size: default-font-size-smaller 61 | margin-top: 5px 62 | overflow: hidden 63 | height: 30px 64 | 65 | span 66 | display: inline-block 67 | white-space: nowrap 68 | 69 | @media screen and (max-width: 768px) 70 | .linkcard-item 71 | width: 100% -------------------------------------------------------------------------------- /source/css/_style/_default/media.styl: -------------------------------------------------------------------------------- 1 | #aplayer 2 | margin: 1.5em 5px 3 | 4 | .aplayer-lrc-contents p 5 | text-align: center -------------------------------------------------------------------------------- /source/css/_style/_default/text.styl: -------------------------------------------------------------------------------- 1 | a 2 | color: orange-middle 3 | 4 | a:hover 5 | color: orange-fresh 6 | 7 | p 8 | line-height: 1.6em 9 | text-align: justify 10 | vertical-align: baseline 11 | 12 | h1 13 | font-size: article-title1-font-size 14 | margin: 1em 0 15 | 16 | h2 17 | font-size: article-title2-font-size 18 | margin: 0.9em 0 19 | 20 | h3 21 | font-size: article-title3-font-size 22 | margin: 0.8em 0 23 | 24 | h4 25 | font-size: article-title4-font-size 26 | margin: 0.7em 0 27 | 28 | h5 29 | font-size: article-title5-font-size 30 | margin: 0.7em 0 31 | 32 | h6 33 | font-size: article-title6-font-size 34 | margin: 0.6em 0 35 | 36 | h1,h2,h3,h4,h5,h6 37 | font-weight: 1200 38 | 39 | hr 40 | border: 1px solid transparent 41 | border-image: linear-gradient(to right, rgba(31, 18, 53, 0.1), rgba(31, 18, 53, 0.35), rgba(31, 18, 53, 0.1)) 1 42 | 43 | blockquote 44 | margin: 15px 0 45 | padding: 6px 12px 46 | background-color: quote-background 47 | // border-radius: 10px 48 | box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1) 49 | border-left: 10px solid yellow-light 50 | line-height: 2em 51 | 52 | blockquote.light 53 | background-color: transparent 54 | box-shadow: none 55 | border-left-color: shadow-grey 56 | color: text-grey 57 | 58 | blockquote.pink 59 | background-color: pink-light 60 | border-left-color: pink-normal 61 | 62 | blockquote.red 63 | background-color: red-fresh 64 | border-left-color: red-dark 65 | 66 | blockquote.blue 67 | background-color: blue-light 68 | border-left-color: blue-normal 69 | 70 | blockquote.green 71 | background-color: green-light 72 | border-left-color: green-fresh 73 | 74 | ul 75 | padding-left: 1em 76 | line-height: 1.8em 77 | 78 | ol 79 | padding-left: 1em 80 | line-height: 1.8em 81 | 82 | input[type='checkbox']:disabled 83 | width: 15px 84 | height: 15px 85 | 86 | table 87 | margin: 1.5em 0 88 | border-collapse: collapse; 89 | width: 100% 90 | 91 | ul, ol 92 | padding-left: 25px 93 | line-height: normal 94 | margin: 0 95 | 96 | th, td 97 | vertical-align: middle; 98 | padding: 5px 8px 99 | border: 1px solid border-grey 100 | 101 | thead 102 | background-color: text-black-light 103 | color: white 104 | 105 | .table-center 106 | width: 100% 107 | overflow-x: auto 108 | 109 | details 110 | margin: 10px auto 111 | 112 | summary 113 | border-radius: 10px 114 | background-color: code-light 115 | padding: 10px 20px 116 | font-weight: bold 117 | 118 | &:hover 119 | color: orange-middle 120 | 121 | &[open] 122 | padding: 10px 20px 123 | background-color: code-light 124 | border-radius: 10px 125 | 126 | summary 127 | padding: 0 128 | text-decoration: underline -------------------------------------------------------------------------------- /source/css/_style/_partial/article-index.styl: -------------------------------------------------------------------------------- 1 | .index-posts 2 | margin: 0 auto 3 | width: 85% 4 | 5 | .index-post-item 6 | margin-top: 10px 7 | padding-bottom: 20px 8 | border-bottom: 1px solid transparent 9 | border-image: linear-gradient(to right, rgba(31, 18, 53, 0.1), rgba(31, 18, 53, 0.35), rgba(31, 18, 53, 0.1)) 1 10 | 11 | .post-title-index 12 | display: flex 13 | flex-flow: row nowrap 14 | align-items: baseline 15 | justify-content: space-between 16 | 17 | h1 18 | margin-bottom: 0.3em 19 | a 20 | text-decoration: none 21 | color: orange-middle 22 | 23 | &:hover 24 | color: orange-fresh 25 | 26 | i 27 | margin-right: 5px 28 | 29 | .post-top 30 | padding: 3px 12px 31 | border: 1px orange-middle dashed 32 | border-radius: 15px 33 | text-align: center 34 | color: orange-middle 35 | 36 | p 37 | margin: 0 38 | white-space: nowrap 39 | 40 | .post-head-info 41 | font-size: info-font-size 42 | color: text-grey-light 43 | // display: flex 44 | // flex-flow: row nowrap 45 | overflow: hidden 46 | white-space: nowrap 47 | 48 | div 49 | margin-top: 5px 50 | display: inline-block 51 | 52 | .read-more 53 | background-color: orange-low-saturation 54 | padding: 3px 10px 55 | border-radius: 20px 56 | display: inline-block 57 | text-align: center 58 | margin: 10px 0 59 | 60 | i 61 | margin-right: 3px 62 | color: white 63 | 64 | .read-more-link 65 | text-decoration: none 66 | color: white 67 | font-size: info-font-size 68 | 69 | &:hover 70 | background-color: yellow-normal 71 | box-shadow: 1.5px 1.5px 2px shadow-grey 72 | 73 | .post-tags 74 | font-size: info-font-size 75 | display: block 76 | white-space: nowrap 77 | overflow: hidden 78 | 79 | .post-excerpt 80 | margin: 0.6em 0 81 | text-align: justify 82 | 83 | @media screen and (max-width: 768px) 84 | .index-post-item 85 | h1 86 | font-size: article-title2-font-size -------------------------------------------------------------------------------- /source/css/_style/_partial/article.styl: -------------------------------------------------------------------------------- 1 | .post 2 | margin: 0 auto 3 | width: 85% 4 | 5 | .post-title 6 | border-bottom: 2px solid border-grey 7 | 8 | h1 9 | margin: 20px 0 15px 10 | font-size: article-title-font-size 11 | color: orange-middle 12 | 13 | i 14 | margin-right: 5px 15 | 16 | .post-info 17 | font-size: info-font-size-larger 18 | color: text-grey-light 19 | 20 | .post-info-first-line 21 | display: flex 22 | flex-flow: row wrap 23 | align-items: center 24 | margin-top: 10px 25 | 26 | div 27 | overflow: visible 28 | white-space: nowrap 29 | margin: 5px 0 30 | 31 | .post-info-second-line 32 | display: flex 33 | flex-flow: row wrap 34 | align-items: center 35 | // margin-top: 5px 36 | 37 | div 38 | overflow: visible 39 | white-space: nowrap 40 | margin: 5px 0 41 | 42 | .pageview-post 43 | margin: 5px 0 44 | overflow: hidden 45 | white-space: nowrap 46 | 47 | #busuanzi_container_page_pv 48 | padding: 0 5px 49 | 50 | .post-end 51 | display: flex 52 | flex-flow: row nowrap 53 | align-items: center 54 | justify-content: space-between 55 | margin: 50px auto 0 56 | 57 | .post-prev,.post-next 58 | width: 45px 59 | height: 45px 60 | display: flex 61 | justify-content: center 62 | align-items: center 63 | 64 | a 65 | color: text-grey 66 | 67 | &:hover 68 | color: orange-fresh 69 | 70 | .post-prev a:hover 71 | animation: to-left 0.8s infinite 72 | 73 | .post-next a:hover 74 | animation: to-right 0.8s infinite 75 | 76 | .post-reward 77 | border: 1px solid border-grey 78 | border-radius: 50% 79 | width: 45px 80 | height: 45px 81 | margin: 0 auto 82 | display: flex 83 | justify-content: center 84 | align-items: center 85 | 86 | &:hover 87 | background-color: orange-normal 88 | color: white 89 | box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.125) 90 | 91 | .post-content[text-indent=true] 92 | p 93 | text-indent: 2em 94 | 95 | .fiction-meta 96 | margin: 15px 0 97 | padding: 15px 20px 98 | background-color: code-light 99 | border-radius: 15px 100 | box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.125) 101 | display: flex 102 | flex-flow: column nowrap 103 | 104 | .fiction-meta-item 105 | display: flex 106 | flex-flow: row nowrap 107 | font-size: info-font-size-larger 108 | margin-top: 8px 109 | 110 | &:first-child 111 | margin-top: 0 112 | 113 | &:hover 114 | background-color: rgba(255, 255, 255, 0.8) 115 | 116 | .fiction-meta-key 117 | width: 130px 118 | margin-right 10px 119 | border-right: 1px solid border-grey 120 | font-weight: bold 121 | color: text-black-light 122 | white-space: nowrap 123 | 124 | i 125 | margin-right: 5px 126 | 127 | .fiction-meta-value 128 | flex: 1 129 | 130 | #fiction-meta-rating 131 | span[rating=Teen],span[rating=Mature],span[rating=Explicit] 132 | font-weight: bold 133 | 134 | span[rating=Mature],span[rating=Explicit] 135 | color: red-dark 136 | 137 | #fiction-meta-warning 138 | span 139 | font-weight: bold 140 | color: red-dark 141 | 142 | .fiction-before-content 143 | margin: 20px 0 35px 144 | border-bottom: 2px solid transparent 145 | border-image: linear-gradient(to right, rgba(31, 18, 53, 0.1), rgba(31, 18, 53, 0.35), rgba(31, 18, 53, 0.1)) 1 146 | 147 | &[text-indent=true] 148 | p 149 | text-indent: 2em 150 | 151 | .fiction-summary 152 | margin: 20px 0 30px 153 | 154 | .fiction-notes-before 155 | margin: 20px 0 156 | padding-bottom: 10px 157 | 158 | .fiction-status 159 | margin: 35px auto 20px 160 | text-align: center 161 | color: text-grey-light 162 | font-weight: bold 163 | 164 | .fiction-notes-after 165 | margin: 35px 0 0 166 | padding-bottom: 10px 167 | border-top: 2px solid transparent 168 | border-image: linear-gradient(to right, rgba(31, 18, 53, 0.1), rgba(31, 18, 53, 0.35), rgba(31, 18, 53, 0.1)) 1 169 | 170 | &[text-indent=true] 171 | p 172 | text-indent: 2em 173 | 174 | @media screen and (max-width: 768px) 175 | .fiction-meta-item 176 | flex-flow: column nowrap 177 | font-size: info-font-size-smaller 178 | 179 | .fiction-meta-key 180 | width: auto 181 | border-right: 0 182 | 183 | .fiction-meta-value 184 | flex: initial 185 | margin-top: 5px 186 | margin-left: 1em 187 | 188 | .post-info 189 | font-size: info-font-size-smaller 190 | 191 | .post-title h1 192 | font-size: article-title1-font-size -------------------------------------------------------------------------------- /source/css/_style/_partial/blog-info.styl: -------------------------------------------------------------------------------- 1 | .blog-info 2 | margin: 20px auto 3 | display: flex 4 | align-items: center 5 | flex-flow: column nowrap 6 | max-width: max-page-width 7 | width: 90% 8 | 9 | #blog-pic 10 | width: 180px 11 | height: 180px 12 | margin: 0 13 | 14 | .blog-title 15 | font-size: 40px 16 | font-weight: bold 17 | color: #ffffff 18 | text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.125) 19 | white-space: nowrap 20 | overflow: hidden 21 | animation: title-run 0.8s ease-in-out linear 22 | -webkit-animation: title-run 0.8s linear 23 | 24 | span 25 | margin: 0 15px 26 | font-weight: 1200 27 | 28 | i 29 | --fa-rotate-angle: 45deg 30 | 31 | &:first-child 32 | --fa-rotate-angle: 315deg 33 | 34 | .blog-desc 35 | font-size: default-font-size 36 | color: white 37 | text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.125) 38 | text-align: center 39 | margin: 20px auto 40 | -------------------------------------------------------------------------------- /source/css/_style/_partial/code.styl: -------------------------------------------------------------------------------- 1 | figure.highlight 2 | margin: 10px auto 3 | // padding: 3px 5px 0 4 | background-color: code-light 5 | border-radius: 10px 6 | box-shadow: 1.5px 1.5px 2px rgba(0, 0, 0, 0.125) 7 | font-size: code-font-size 8 | position: relative 9 | 10 | &:hover 11 | #copyCodeBtn 12 | visibility: visible 13 | 14 | figcaption 15 | font-size: article-title6-font-size 16 | font-weight: bold 17 | font-family: code-font 18 | color: text-black-light 19 | line-height: 1.5em 20 | padding: 5px 10px 5px 10px 21 | background-color: code-dark 22 | border-radius: 10px 10px 0 0 23 | 24 | table 25 | border-spacing: 5px 10px 26 | line-height: 1.5em 27 | margin: 2px 0 28 | padding: 5px 29 | border-collapse: separate 30 | overflow-x: auto 31 | display: block 32 | 33 | td 34 | padding: 0 5px 0 0 35 | border: 0 36 | 37 | pre 38 | margin: 0 39 | 40 | .gutter 41 | color: text-grey-light 42 | font-size: code-line-number-font-size 43 | padding-right: 10px 44 | border-right: 1px solid text-grey-light 45 | 46 | .line 47 | font-family: code-font 48 | padding-left: 5px 49 | 50 | // scrollbar for chrome 51 | ::-webkit-scrollbar 52 | height: 8px 53 | 54 | ::-webkit-scrollbar-thumb 55 | background-color: shadow-grey 56 | border-radius: 30px 57 | 58 | ::-webkit-scrollbar-thumb:hover 59 | background-color: border-grey 60 | 61 | ::-webkit-scrollbar-track 62 | background-color: transparent 63 | 64 | // scrollbar for firefox 65 | @-moz-document url-prefix() 66 | scrollbar-color: shadow-grey transparent 67 | scrollbar-width: thin 68 | 69 | code 70 | background-color: code-normal 71 | border-radius: 8px 72 | box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) 73 | // border: 0.5px solid rgba(0, 0, 0, 0.1) 74 | padding: 0 8px 75 | margin: 0 2px 76 | font-family: default-font-family 77 | color: green-normal // text-black-light 78 | line-height: 1.8em 79 | 80 | details 81 | code 82 | background-color: code-dark 83 | 84 | #copyCodeBtn 85 | position: absolute 86 | top: 6px 87 | right: 5px 88 | padding: 5px 89 | z-index: 3 90 | border: none 91 | font-size: article-title5-font-size 92 | color: text-grey-light 93 | background-color: transparent 94 | cursor: pointer 95 | visibility: hidden 96 | 97 | &:hover 98 | color: text-black-light 99 | animation: fade 1.2s ease-in-out infinite -------------------------------------------------------------------------------- /source/css/_style/_partial/comment.styl: -------------------------------------------------------------------------------- 1 | .comment 2 | margin: 60px auto 0 3 | width: 85% 4 | -------------------------------------------------------------------------------- /source/css/_style/_partial/footer.styl: -------------------------------------------------------------------------------- 1 | .footer-content 2 | max-width: max-page-width 3 | width: 90% 4 | margin: 20px auto 10px 5 | text-align: center 6 | font-size: footer-font-size 7 | color: orange-dark 8 | 9 | i 10 | margin: 0 5px 11 | 12 | &:first-child 13 | margin-left: 0 14 | 15 | .copyright-info 16 | a 17 | text-decoration: none 18 | color: orange-dark 19 | 20 | &:hover 21 | color: white 22 | background-color: orange-normal 23 | border-radius: 8px 24 | 25 | .register-info 26 | font-size: register-font-size 27 | 28 | #register_link 29 | text-decoration: none 30 | color: orange-dark 31 | 32 | &:hover 33 | text-decoration: underline 34 | 35 | #busuanzi_container_site_uv 36 | margin-right: 0 37 | 38 | #busuanzi_container_site_pv 39 | margin-right: 5px -------------------------------------------------------------------------------- /source/css/_style/_partial/header.styl: -------------------------------------------------------------------------------- 1 | header 2 | background-color: #ffffff 3 | position: sticky 4 | top: 0 5 | box-shadow: 0 2px 2px rgba(0, 0, 0, 0.125) 6 | z-index: 6 7 | 8 | .top-nav 9 | height: header-height 10 | max-width: max-page-width 11 | display: flex 12 | justify-content: space-between 13 | align-items: center 14 | margin: 0 auto 15 | width: 90% 16 | 17 | 18 | .nav-info 19 | display: flex 20 | align-items: center 21 | font-weight: 1000 22 | 23 | div 24 | vertical-align: text-bottom 25 | display: inline-block 26 | 27 | #nav-icon 28 | width: 40px 29 | height: 40px 30 | margin: 0 31 | display: inline 32 | 33 | &:hover 34 | animation: fade 1.2s ease-in-out infinite 35 | 36 | #nav-title 37 | font-size: 30px 38 | font-weight: bold 39 | text-decoration: none 40 | color: orange-fresh 41 | margin-left: 5px 42 | 43 | &:hover 44 | color: orange-middle 45 | 46 | #top-menu-hidden 47 | display: none 48 | 49 | .nav-ribbon 50 | display: flex 51 | align-items: center 52 | 53 | #top-menu-btn 54 | display: none 55 | 56 | .top-menu-expanded 57 | display: inline-block 58 | font-size: header-item-font-size 59 | font-weight: 800 60 | 61 | .top-menu-item 62 | text-decoration: none 63 | color: orange-fresh 64 | margin-right: 20px 65 | 66 | i 67 | margin-right: 5px 68 | 69 | &:hover 70 | color: orange-middle 71 | 72 | .top-search 73 | display: inline-block 74 | cursor: pointer 75 | 76 | &:hover 77 | i 78 | animation: fade 1s infinite 79 | 80 | #top-search-btn 81 | padding: 2px 10px 2px 8px 82 | background-color: transparent 83 | border: 1px solid border-grey 84 | border-radius: 70px 85 | font-size: info-font-size-larger 86 | 87 | // &:hover 88 | // box-shadow: 1.5px 1.5px 2px shadow-grey 89 | 90 | span 91 | margin-left: 5px 92 | color: icon-grey 93 | 94 | @media screen and (max-width: 768px) 95 | #top-menu-btn 96 | display: inline-block 97 | width: 22px 98 | height: 22px 99 | margin-left: 15px 100 | font-size: info-font-size-larger 101 | cursor: pointer 102 | 103 | .top-menu-expanded 104 | display: none 105 | 106 | .top-search 107 | span 108 | display: none 109 | #top-search-btn 110 | border-radius: 50% 111 | padding: 2px 5px 112 | 113 | #top-menu-hidden 114 | z-index: 5 115 | position: fixed 116 | top: header-height 117 | width: 100% 118 | height: calc(100% - 50px) 119 | margin: 0 auto 120 | animation: show-menu 0.5s 121 | background-color: rgba(255, 255, 255, 0.5) 122 | backdrop-filter: blur(8px) 123 | -webkit-backdrop-filter: blur(8px) 124 | flex-direction: column 125 | font-weight: 1000 126 | 127 | &:not([menu-show]) 128 | animation: disable-menu 0.5s 129 | 130 | .menu-hidden-content 131 | background-color: rgba(255, 255, 255, 0.5) 132 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125) 133 | max-height: 80% 134 | overflow-y: auto 135 | 136 | .menu-hidden-nav 137 | width: 90% 138 | display: flex 139 | flex-flow: row wrap 140 | align-items: center 141 | justify-content: center 142 | margin: 0 auto 143 | padding: 20px 0 144 | 145 | .menu-hidden-item 146 | padding: 8px 35px 147 | margin: 8px 10px 148 | border: 1px solid orange-light 149 | border-radius: 15px 150 | text-decoration: none 151 | line-height: 1.5em 152 | font-size: header-item-font-size-smaller 153 | background-color: yellow-light 154 | opacity: 0.8 155 | flex: 1 156 | display: flex 157 | flex-flow: row nowrap 158 | align-items: center 159 | justify-content: center 160 | 161 | i 162 | margin-right: 5px 163 | 164 | &:hover 165 | background-color: quote-background 166 | 167 | i 168 | animation: beat 1s infinite 169 | 170 | .menu-hidden-blank 171 | flex: 1 172 | -webkit-flex: 1 173 | -ms-flex: 1 174 | -------------------------------------------------------------------------------- /source/css/_style/_partial/menu-index.styl: -------------------------------------------------------------------------------- 1 | .index-menu 2 | margin: 30px auto 40px 3 | display: flex 4 | align-items: center 5 | justify-content: space-evenly 6 | max-width: 70% 7 | height: 50px 8 | width: 90% 9 | 10 | .menu-item 11 | font-size: 18px 12 | text-decoration: none 13 | font-weight: bold 14 | text-align: center 15 | color: text-black 16 | width: 70px 17 | height: 40px 18 | border-bottom: 3px solid orange-fresh 19 | line-height: 40px 20 | 21 | &:hover 22 | color: orange-fresh 23 | border-bottom: 6px solid orange-fresh -------------------------------------------------------------------------------- /source/css/_style/_partial/pagination.styl: -------------------------------------------------------------------------------- 1 | .pagination 2 | margin: 30px auto 5px 3 | display: flex 4 | align-items: center 5 | justify-content: center 6 | font-size: pagination-font-size 7 | 8 | a 9 | color: text-black-light 10 | text-decoration: none 11 | 12 | &:hover 13 | color: orange-fresh 14 | 15 | .prev, .next 16 | color: text-black-light 17 | 18 | &:hover 19 | color: orange-fresh 20 | 21 | i 22 | color: border-grey 23 | margin: 0 10px 24 | 25 | &:hover 26 | color: orange-fresh 27 | 28 | .page-number 29 | margin: 0 5px 30 | 31 | .current 32 | border: 1px solid border-grey 33 | border-radius: 10px 34 | padding: 0.5px 10px 35 | -------------------------------------------------------------------------------- /source/css/_style/_partial/post/copyright.styl: -------------------------------------------------------------------------------- 1 | .post-copyright 2 | span 3 | padding-left: 5px 4 | a 5 | text-decoration: none 6 | color: text-grey-light 7 | margin-right: 5px 8 | padding-right: 5px 9 | 10 | &:hover 11 | color: orange-fresh -------------------------------------------------------------------------------- /source/css/_style/_partial/post/date.styl: -------------------------------------------------------------------------------- 1 | .post-date 2 | i 3 | margin-right: 5px 4 | 5 | time,span 6 | margin-right: 10px -------------------------------------------------------------------------------- /source/css/_style/_partial/post/post-categories.styl: -------------------------------------------------------------------------------- 1 | .post-categories 2 | margin: 5px 0 3 | display: flex 4 | flex-flow: row wrap 5 | align-items: center 6 | 7 | .post-category 8 | display: inline-block 9 | text-decoration: none 10 | color: text-grey-light 11 | margin-right: 5px 12 | padding: 0 5px 13 | 14 | &:hover 15 | color: orange-fresh -------------------------------------------------------------------------------- /source/css/_style/_partial/post/post-tags.styl: -------------------------------------------------------------------------------- 1 | .post-tags 2 | margin: 5px 0 3 | display: flex 4 | flex-flow: row wrap 5 | align-items: center 6 | 7 | .post-tag 8 | display: inline-block 9 | text-decoration: none 10 | color: text-grey-light 11 | margin-right: 5px 12 | padding: 0 5px 13 | 14 | &:hover 15 | color: orange-fresh -------------------------------------------------------------------------------- /source/css/_style/_partial/post/reward.styl: -------------------------------------------------------------------------------- 1 | #reward-panel 2 | &:not([reward-show]) 3 | display: none 4 | 5 | position: fixed 6 | top: header-height 7 | left: 0 8 | z-index: 3 9 | width: 100% 10 | height: calc(100% - 50px) 11 | background-color: rgba(255, 255, 255, 0.2) 12 | backdrop-filter: blur(5px) 13 | -webkit-backdrop-filter: blur(5px) 14 | display: flex 15 | align-items: center 16 | justify-content: center 17 | animation: showup 0.3s 18 | 19 | .reward-container 20 | width: 70% 21 | height: 380px 22 | padding: 15px 20px 23 | background-color: white 24 | border: 1px solid rgba(209, 209, 209, 0.825) 25 | border-radius: 20px 26 | overflow-y: auto 27 | 28 | p 29 | text-align: center 30 | font-weight: bold 31 | 32 | .reward-nav 33 | display: flex 34 | flex-flow: row wrap 35 | justify-content: center 36 | align-items: center 37 | 38 | .reward-item 39 | display: flex 40 | flex-flow: column nowrap 41 | justify-content: center 42 | align-items: center 43 | width: 250px 44 | aspect-ratio: 1/1 45 | margin: 0 1.5% 5px 46 | 47 | .reward-img 48 | width: 90% 49 | aspect-ratio: 1/1 50 | 51 | @media screen and (max-width: 768px) 52 | .reward-container 53 | width: 80% 54 | height: 80% 55 | 56 | .reward-container 57 | p 58 | text-align: left 59 | 60 | .reward-nav 61 | display: flex 62 | flex-flow: column nowrap 63 | 64 | .reward-item 65 | width: 300px 66 | margin: 5px auto 67 | -------------------------------------------------------------------------------- /source/css/_style/_partial/post/toc.styl: -------------------------------------------------------------------------------- 1 | @media screen and (max-width: 1499px) 2 | #post-toc 3 | display: none 4 | 5 | &[toc-show] 6 | display: flex 7 | z-index: 2 8 | position: fixed 9 | left: 0 10 | top: 0 11 | margin-top: header-height 12 | height: calc(100% - 50px) 13 | width: 100% 14 | flex-flow: row nowrap 15 | animation: show-toc-slide 0.5s 16 | 17 | .toc-blank 18 | width: 30% 19 | 20 | .toc-aside 21 | font-size: toc-font-size 22 | width: 70% 23 | padding: 15px 20px 24 | background-color: rgba(255, 255, 255, 0.9) 25 | backdrop-filter: blur(5px) 26 | -webkit-backdrop-filter: blur(5px) 27 | box-shadow: 1px 0 1px rgba(0, 0, 0, 0.125) 28 | 29 | .toc-title 30 | font-size: article-title4-font-size 31 | font-weight: bold 32 | color: orange-middle 33 | padding-bottom: 5px 34 | border-bottom: 1px solid rgba(209, 209, 209, 0.825) 35 | 36 | i 37 | margin-right: 5px 38 | 39 | .toc-container 40 | height: 90% 41 | overflow-y: auto 42 | 43 | .toc-content, .toc-content-child 44 | list-style: none 45 | padding-left: 1em 46 | line-height: 1.5em 47 | border-left: 1px solid rgba(209, 209, 209, 0.5) 48 | margin: 5px 0 49 | 50 | &:first-child 51 | padding-left: 0 52 | border-left:0 53 | 54 | .toc-content-link 55 | text-decoration: none 56 | 57 | &:hover 58 | text-decoration: underline 59 | 60 | @media screen and (min-width: 1499px) 61 | #post-toc 62 | display: flex 63 | font-size: toc-font-size 64 | position: fixed 65 | right: calc((100% - 1080px) / 2 - 190px) 66 | top: header-height 67 | margin-top: 50px 68 | width: 150px 69 | height: 60% 70 | padding: 10px 10px 71 | background-color: rgba(255, 255, 255, 0.9) 72 | box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.125) 73 | border-radius: 10px 74 | animation: show-toc 0.5s 75 | overflow: hidden 76 | 77 | .toc-aside 78 | width: 100% 79 | display: flex 80 | flex-flow: column nowrap 81 | 82 | .toc-title 83 | font-size: article-title4-font-size 84 | font-weight: bold 85 | color: orange-middle 86 | padding-bottom: 5px 87 | border-bottom: 1px solid rgba(209, 209, 209, 0.825) 88 | 89 | i 90 | margin-right: 5px 91 | 92 | .toc-container 93 | overflow-y: auto 94 | 95 | .toc-content, .toc-content-child 96 | list-style: none 97 | padding-left: 1em 98 | line-height: 1.5em 99 | border-left: 1px solid rgba(209, 209, 209, 0.5) 100 | white-space: nowrap 101 | overflow-x: hidden 102 | margin: 5px 0 103 | 104 | &:first-child 105 | padding-left: 0 106 | border-left:0 107 | 108 | .toc-content-link 109 | text-decoration: none 110 | 111 | &:hover 112 | text-decoration: underline 113 | 114 | &:not([toc-show]) 115 | display: none 116 | -------------------------------------------------------------------------------- /source/css/_style/_partial/post/word-count.styl: -------------------------------------------------------------------------------- 1 | .post-word-count 2 | i 3 | margin-right: 5px 4 | 5 | span 6 | margin-right: 10px -------------------------------------------------------------------------------- /source/css/_style/_partial/search.styl: -------------------------------------------------------------------------------- 1 | #search-panel 2 | &:not([search-show]) 3 | display: none 4 | 5 | position: fixed 6 | top: header-height 7 | z-index: 4 8 | width: 100% 9 | height: calc(100% - 50px) 10 | background-color: rgba(255, 255, 255, 0.2) 11 | backdrop-filter: blur(5px) 12 | -webkit-backdrop-filter: blur(5px) 13 | display: flex 14 | align-items: center 15 | justify-content: center 16 | 17 | .search-container 18 | width: 80% 19 | height: 70% 20 | padding: 15px 20px 21 | background-color: rgba(255, 255, 255, 0.95) 22 | // box-shadow: 0.5px 0.5px 1px rgba(0, 0, 0, 0.125) 23 | border: 1px solid rgba(209, 209, 209, 0.825) 24 | border-radius: 20px 25 | overflow-y: auto 26 | overflow-x: hidden 27 | 28 | .search-head 29 | display: flex 30 | flex-flow: row nowrap 31 | justify-content: space-between 32 | align-items: center 33 | font-size: article-title4-font-size 34 | color: orange-middle 35 | 36 | .search-title 37 | font-weight: bold 38 | font-weight: 1000 39 | 40 | i 41 | margin-right: 5px 42 | 43 | .search-close-btn 44 | margin-right: 5px 45 | cursor: pointer 46 | 47 | &:hover 48 | animation: beat 1s infinite 49 | 50 | .search-box 51 | margin: 15px auto 10px 52 | display: flex 53 | flex-flow: row nowrap 54 | align-items: center 55 | padding-bottom: 20px 56 | border-bottom: 1px solid rgba(209, 209, 209, 0.825) 57 | 58 | i 59 | margin-right: 5px 60 | 61 | #search-input 62 | flex: 1 63 | -webkit-flex: 1 64 | -ms-flex: 1 65 | font-size: default-font-size 66 | font-family: default-font-family 67 | border: 1px solid text-black-light 68 | border-radius: 15px 69 | padding: 3px 8px 70 | 71 | #search-count 72 | &:not([search-count-show]) 73 | display: none 74 | 75 | color: text-grey 76 | 77 | #search-result 78 | p 79 | margin: 5px 0 80 | 81 | em 82 | color: orange-middle 83 | font-weight: bold 84 | font-style: normal 85 | 86 | ul 87 | margin: 5px 0 0 88 | 89 | #search-result-empty 90 | &:not([search-empty-show]) 91 | display: none 92 | -------------------------------------------------------------------------------- /source/css/_style/_partial/tool-bar.styl: -------------------------------------------------------------------------------- 1 | #tool-bar 2 | z-index: 5 3 | font-size: 20px 4 | line-height: 20px 5 | position: fixed 6 | right: 5px 7 | bottom: 5px 8 | animation: showup 1s 9 | 10 | #tool-bar-main 11 | float: right 12 | padding: 8px 13 | background-color: code-light 14 | border: 0.5px solid rgba(204, 204, 204, 0.4) 15 | border-radius: 10px 16 | box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.125) 17 | 18 | div 19 | width: 20px 20 | height: 20px 21 | margin-top: 6px 22 | 23 | &:first-child 24 | margin-top: 0 25 | 26 | &:hover 27 | color: orange-fresh 28 | cursor: pointer 29 | 30 | #back-to-top 31 | display: none 32 | animation: showup 1s 33 | &:hover 34 | animation: bounce 1s ease-in-out infinite 35 | 36 | #tool-toggle 37 | animation: spin 1.2s ease-in-out 38 | 39 | &:hover 40 | animation: spin 1.5s ease-in-out infinite 41 | 42 | #tool-bar-more 43 | float: right 44 | margin-right: 2px 45 | padding: 8px 46 | background-color: code-light 47 | border: 0.5px solid rgba(204, 204, 204, 0.4) 48 | border-radius: 10px 49 | box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.125) 50 | 51 | div 52 | width: 20px 53 | height: 20px 54 | margin-top: 6px 55 | 56 | &:first-child 57 | margin-top: 0 58 | 59 | &:hover 60 | color: orange-fresh 61 | cursor: pointer 62 | 63 | @media screen and (min-width: 1280px) 64 | #tool-bar 65 | right: calc((100% - 1080px) / 2 - 55px) -------------------------------------------------------------------------------- /source/css/_style/about.styl: -------------------------------------------------------------------------------- 1 | .about-container 2 | width: 85% 3 | margin: 0 auto 4 | 5 | h1 6 | color: orange-middle 7 | padding-bottom: 12px 8 | border-bottom: 2px solid transparent 9 | border-image: linear-gradient(to right, rgba(31, 18, 53, 0.35), rgba(31, 18, 53, 0.1)) 1 10 | 11 | i 12 | margin-right: 5px 13 | 14 | .about-blog,.about-author,.about-contact,.about-links,.about-reward,.about-credits 15 | margin-bottom: 40px 16 | 17 | .about-keywords 18 | display: flex 19 | align-items: center 20 | justify-content: center 21 | flex-flow: row wrap 22 | margin: 10px auto 23 | 24 | .about-keywords-tag 25 | display: inline-flex 26 | align-items: center 27 | justify-content: center 28 | margin: 5px 5px 0 29 | width: 80px 30 | height: 25px 31 | background-color: rgba(255, 182, 79, 0.9) 32 | border-radius: 15px 33 | box-shadow: 1px 1px 2px shadow-grey 34 | text-align: center 35 | color: white 36 | font-size: info-font-size-normal 37 | 38 | .about-blog-supplement 39 | color: orange-low-saturation 40 | 41 | #author-img 42 | width: 100px 43 | height: 100px 44 | border-radius: 50% 45 | margin: 0 0 5px 46 | 47 | .about-author-nav 48 | display: flex 49 | flex-flow: row nowrap 50 | 51 | .about-author-info 52 | margin-left: 25px 53 | display: flex 54 | flex-flow: column wrap 55 | justify-content: center 56 | 57 | .author-name 58 | font-size: article-title3-font-size 59 | font-weight: bold 60 | margin-bottom: 5px 61 | 62 | .contact-nav 63 | display: flex 64 | flex-flow: row wrap 65 | 66 | .contact-item 67 | margin: 0 1% 15px 1% 68 | display: flex 69 | align-items: center 70 | width: 18% 71 | height: 30px 72 | white-space: nowrap 73 | 74 | i 75 | margin-right: 5px 76 | margin-left: 5px 77 | 78 | a 79 | color: text-black 80 | text-decoration: none 81 | margin-right: 5px 82 | overflow: hidden 83 | 84 | span 85 | margin-right: 5px 86 | 87 | &:hover 88 | background-color: orange-normal 89 | border-radius: 10px 90 | color: white 91 | 92 | a 93 | text-decoration: underline 94 | color: white 95 | 96 | i 97 | animation: fade 1s infinite 98 | 99 | .links-nav 100 | display: flex 101 | flex-flow: row wrap 102 | 103 | .links-item 104 | display: flex 105 | flex-flow: column nowrap 106 | width: 30% 107 | height: 95px 108 | border-radius: 15px 109 | border: 1px solid code-normal 110 | margin: 0 1.5% 15px 1.5% 111 | text-decoration: none 112 | color: text-black 113 | 114 | &:hover 115 | box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.125) 116 | 117 | .links-item-title 118 | background-color: orange-normal 119 | color: white 120 | transition: background-color 0.5s ease-out 121 | 122 | .links-item-title 123 | height: 30% 124 | padding: 5px 15px 125 | margin-bottom: 5px 126 | font-weight: bold 127 | background-color: code-normal 128 | border-radius: 15px 15px 0 0 129 | 130 | .links-item-desc 131 | margin: 0 15px 5px 132 | overflow: hidden 133 | font-size: info-font-size-normal 134 | 135 | .about-reward-nav 136 | display: flex 137 | flex-flow: row wrap 138 | justify-content: center 139 | align-items: center 140 | 141 | .about-reward-item 142 | display: flex 143 | flex-flow: column nowrap 144 | justify-content: center 145 | align-items: center 146 | width: 30% 147 | aspect-ratio: 1/1 148 | margin: 0 1.5% 5px 149 | 150 | .about-reward-img 151 | width: 90% 152 | aspect-ratio: 1/1 153 | 154 | .about-credits-list 155 | background-color: code-light 156 | padding: 5px 20px 157 | border-radius: 10px 158 | 159 | @media screen and (max-width: 768px) 160 | .contact-item 161 | width: 30% 162 | 163 | .about-author-nav 164 | flex-flow: column wrap 165 | justify-content: center 166 | align-items: center 167 | 168 | .author-name 169 | text-align: center 170 | 171 | .about-author-info 172 | margin-left: 0 173 | display: block 174 | 175 | .links-item 176 | width: 100% 177 | height: 90px 178 | 179 | .about-reward-nav 180 | display: flex 181 | flex-flow: column nowrap 182 | 183 | .about-reward-item 184 | width: 300px 185 | margin: 5px auto 186 | -------------------------------------------------------------------------------- /source/css/_style/archive.styl: -------------------------------------------------------------------------------- 1 | .page-container 2 | width: 85% 3 | margin: 0 auto 4 | 5 | a 6 | text-decoration: none 7 | color: text-black 8 | 9 | .page-title 10 | color: orange-middle 11 | 12 | h1 13 | margin: 0.5em 0 14 | 15 | i 16 | margin-right: 5px 17 | 18 | .archives-year 19 | margin: 20px 0 20 | 21 | .archives-year-link 22 | font-size: article-title1-font-size 23 | font-weight: bold 24 | display: block 25 | width: 100% 26 | padding: 5px 0 27 | border-bottom: 2px solid border-grey 28 | vertical-align: middle 29 | 30 | i 31 | display: none 32 | 33 | &:hover 34 | color: orange-middle 35 | 36 | i 37 | display: inline 38 | margin-left: 5px 39 | 40 | 41 | .archives-month 42 | margin: 20px 0 43 | 44 | .archives-month-link 45 | margin: 10px 0 46 | display: block 47 | font-size: article-title3-font-size 48 | font-weight: bold 49 | 50 | i 51 | display: none 52 | 53 | &:hover 54 | color: orange-middle 55 | 56 | i 57 | display: inline 58 | margin-left: 5px 59 | 60 | .archives-article-list 61 | display: flex 62 | flex-flow: row wrap 63 | align-items: center 64 | 65 | .article-item 66 | width: 23% 67 | aspect-ratio: 1/1 68 | border: 1px solid border-grey 69 | margin-right: 1.8% 70 | margin-top: 10px 71 | 72 | .article-item-card 73 | display: flex 74 | flex-flow: column nowrap 75 | width: 100% 76 | height: 100% 77 | font-size: info-font-size-normal 78 | 79 | &:hover 80 | background-color: rgba(249, 173, 8, 0.7) 81 | transition: background-color 0.3s ease-out 82 | -moz-transition: background-color 0.3s ease-out 83 | -webkit-transition: background-color 0.3s ease-out 84 | -o-transition: background-color 0.3s ease-out 85 | 86 | .article-item-title,.article-item-preview 87 | display: none 88 | 89 | .article-item-hover 90 | display: flex 91 | width: 100% 92 | height: 100% 93 | flex-flow: column nowrap 94 | justify-content: center 95 | align-items: center 96 | color: white 97 | font-size: article-title4-font-size 98 | font-weight: bold 99 | animation: showup 0.5s 100 | 101 | i 102 | margin-top: 10px 103 | 104 | .article-item-title 105 | font-size: default-font-size 106 | font-weight: bold 107 | margin: 10px 10px 5px 108 | 109 | .article-item-preview 110 | margin: 0 10px 10px 111 | word-break: break-all 112 | overflow: hidden 113 | text-align: justify 114 | 115 | .article-item-hover 116 | display: none 117 | 118 | @media screen and (max-width: 820px) 119 | .article-item 120 | width: 45% 121 | margin-right: 4% 122 | 123 | .article-item-title 124 | margin: 5px 5px 3px 125 | 126 | .article-item-preview 127 | margin: 0 5px 5px 128 | -------------------------------------------------------------------------------- /source/css/_style/categories.styl: -------------------------------------------------------------------------------- 1 | .categories-list-container 2 | margin: 18px auto 3 | font-size: article-title5-font-size 4 | display: flex 5 | flex-flow: column wrap 6 | 7 | .categories-item 8 | height: 2em 9 | display: flex 10 | align-items: center 11 | 12 | i 13 | margin-right 5px 14 | 15 | &:hover 16 | background: rgba(255, 182, 79, 0.6) 17 | 18 | .categories-item-count 19 | margin-left: 5px 20 | 21 | .categories-list-container-helpers 22 | margin: 18px auto 23 | font-size: article-title5-font-size 24 | 25 | .category-list 26 | list-style: none 27 | line-height: 2em 28 | padding-left: 0 29 | 30 | .category-list-item::before 31 | content: "\2013" 32 | margin-right: 5px 33 | 34 | .category-list-link 35 | display: inline-block 36 | width: calc(100% - 50px - 20px) 37 | padding-left: 5px 38 | border-radius: 10px 39 | 40 | &:hover 41 | background: rgba(255, 223, 106, 0.6) 42 | transition: background 0.5s ease-out 43 | -moz-transition: background 0.5s ease-out 44 | -webkit-transition: background 0.5s ease-out 45 | -o-transition: background 0.5s ease-out 46 | 47 | .category-list-count 48 | color: text-grey-light 49 | background-color: code-light 50 | width: 40px 51 | border-radius: 20px 52 | text-align: center 53 | font-size: default-font-size-smaller 54 | line-height: 1em 55 | margin: 6px 0 56 | padding: 2px 2px 57 | float: right 58 | 59 | .category-list-child 60 | list-style: none 61 | padding-left: 2em -------------------------------------------------------------------------------- /source/css/_style/index.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chanwj/hexo-theme-meow/7bba0986340a6e003e6e2c820a29bcb6938b5cce/source/css/_style/index.styl -------------------------------------------------------------------------------- /source/css/_style/layout.styl: -------------------------------------------------------------------------------- 1 | html 2 | // scrollbar for chrome 3 | *::-webkit-scrollbar 4 | width: 10px 5 | 6 | *::-webkit-scrollbar-thumb 7 | background-color: border-grey 8 | border-radius: 30px 9 | 10 | *::-webkit-scrollbar-thumb:hover 11 | background-color: yellow-normal 12 | 13 | *::-webkit-scrollbar-thumb:active 14 | background-color: orange-middle 15 | 16 | *::-webkit-scrollbar-track 17 | background-color: code-light 18 | 19 | // scrollbar for firefox 20 | @-moz-document url-prefix() 21 | * 22 | scrollbar-color: orange-normal code-light 23 | scrollbar-width: thin 24 | 25 | scroll-behavior: smooth 26 | 27 | body 28 | if hexo-config('background.type') == 1 29 | background: url($root-path + site-background-image) 30 | else if hexo-config('background.type') == 3 31 | background: site-background-gradient 32 | else 33 | background: site-background-color 34 | background-position: center 35 | background-size: cover 36 | background-attachment: unquote(hexo-config('background.attachment')) 37 | transition: background 0.5s ease-out 38 | -moz-transition: background 0.5s ease-out 39 | -webkit-transition: background 0.5s ease-out 40 | -o-transition: background 0.5s ease-out 41 | margin: 0 42 | padding: 0 43 | font-size: default-font-size 44 | font-family: default-font-family 45 | color: text-black 46 | position: relative 47 | 48 | if(! hexo-config('selectable')) 49 | -webkit-user-select: none /* Safari */ 50 | -ms-user-select: none /* IE 10+ and Edge */ 51 | -moz-user-select: none /* Firefox */ 52 | user-select: none /* Standard syntax */ 53 | 54 | .main 55 | max-width: max-page-width 56 | width: 95% 57 | margin: 0 auto 58 | 59 | .main-content 60 | background-color: #ffffff 61 | background-image: url($root-path + 'img/blog-background.png') 62 | border-radius: 20px 63 | margin: 0 auto 64 | padding: 20px 0 40px 65 | 66 | @media screen and (max-width: 768px) 67 | body 68 | font-size: default-font-size-smaller -------------------------------------------------------------------------------- /source/css/_style/tags.styl: -------------------------------------------------------------------------------- 1 | .tag-cloud 2 | margin: 20px auto 3 | display: flex 4 | justify-content: center 5 | flex-flow: row wrap 6 | align-items: baseline 7 | 8 | a 9 | margin: 5px 10px 10 | 11 | &:hover 12 | text-decoration: underline 13 | 14 | .tag-list-container 15 | margin: 18px auto 16 | display: flex 17 | flex-flow: row wrap 18 | // justify-content: center 19 | align-items: baseline 20 | font-size: article-title4-font-size 21 | color: orange-low-saturation 22 | 23 | a 24 | margin: 5px 10px 25 | color: orange-low-saturation 26 | 27 | &:hover 28 | text-decoration: underline 29 | color: orange-fresh 30 | 31 | .tag-count 32 | vertical-align: super 33 | font-size: superscript-font-size -------------------------------------------------------------------------------- /source/css/darkmode.styl: -------------------------------------------------------------------------------- 1 | @import '_style/_default/global-settings' 2 | 3 | body.dm-dark 4 | background: black 5 | background-image: none 6 | color: darkmode-text 7 | transition: background 0.5s ease-out 8 | -moz-transition: background 0.5s ease-out 9 | -webkit-transition: background 0.5s ease-out 10 | -o-transition: background 0.5s ease-out 11 | 12 | .main-content 13 | background: background-dark-light 14 | 15 | a 16 | color: orange-low-saturation 17 | 18 | &:hover 19 | color: orange-middle 20 | 21 | h1,h2,h3,h4,h5,h6 22 | color: orange-low-saturation 23 | 24 | hr 25 | border-image: linear-gradient(to right, rgba(141, 141, 141, 0.1), rgba(141, 141, 141, 0.35), rgba(141, 141, 141, 0.1)) 1 26 | 27 | details 28 | summary 29 | background-color: background-dark-lighter 30 | 31 | &[open] 32 | background-color: background-dark-lighter 33 | 34 | summary 35 | background-color: background-dark-light 36 | 37 | .blog-title 38 | color: orange-low-saturation 39 | 40 | .blog-desc 41 | color: darkmode-text 42 | 43 | .index-post-item 44 | border-image: linear-gradient(to right, rgba(141, 141, 141, 0.1), rgba(141, 141, 141, 0.35), rgba(141, 141, 141, 0.1)) 1 45 | 46 | h1 47 | a 48 | color: orange-low-saturation 49 | 50 | &:hover 51 | color: orange-middle 52 | 53 | .read-more 54 | background-color: orange-dark 55 | 56 | &:hover 57 | background-color: orange-low-saturation 58 | 59 | .pagination 60 | a 61 | color: text-grey 62 | 63 | .footer-content 64 | color: text-grey-light 65 | 66 | .copyright-info a 67 | color: text-grey-light 68 | 69 | &:hover 70 | color: white 71 | background-color: text-grey-light 72 | 73 | #register_link 74 | color: text-grey-light 75 | 76 | #tool-bar-main, #tool-bar-more 77 | background-color: text-black-light 78 | border-color: background-dark-lighter 79 | 80 | div:hover 81 | color: orange-middle 82 | 83 | header 84 | background-color: background-dark 85 | 86 | .nav-info #nav-title 87 | color: orange-low-saturation 88 | 89 | &:hover 90 | color: orange-middle 91 | 92 | .top-menu-expanded 93 | .top-menu-item 94 | color: orange-low-saturation 95 | 96 | &:hover 97 | color: orange-middle 98 | 99 | #top-menu-hidden .menu-hidden-content 100 | background-color: background-dark-light 101 | 102 | .menu-hidden-item 103 | background-color: background-dark 104 | border-color: background-dark-lighter 105 | 106 | .search-container 107 | background-color: background-dark 108 | 109 | .search-head 110 | color: orange-low-saturation 111 | 112 | #search-result em 113 | color: orange-low-saturation 114 | 115 | .article-item a, .post-copyright a, .post-prev a, .post-next a 116 | color: text-grey-light 117 | 118 | .categories-item 119 | color: darkmode-text 120 | 121 | &:hover 122 | color: white 123 | 124 | .category-list a 125 | color: darkmode-text 126 | 127 | &:hover 128 | color: white 129 | 130 | .category-list-count 131 | background-color: background-dark-lighter 132 | 133 | .page-not-found a 134 | color: white 135 | 136 | .about-container h1 137 | border-image: linear-gradient(to right, rgba(141, 141, 141, 0.1), rgba(141, 141, 141, 0.35), rgba(141, 141, 141, 0.1)) 1 138 | 139 | .about-keywords-tag 140 | background-color: background-dark-lighter 141 | box-shadow: none 142 | 143 | .contact-item 144 | a 145 | color: darkmode-text 146 | 147 | &:hover 148 | background-color: orange-low-saturation 149 | 150 | .links-item 151 | color: darkmode-text 152 | border-color: text-black-light 153 | 154 | .links-item-title 155 | background-color: background-dark-lighter 156 | 157 | .about-credits-list 158 | background-color: background-dark-lighter 159 | 160 | figure.highlight 161 | background-color: background-dark-lighter 162 | 163 | figcaption 164 | color: darkmode-text 165 | background-color: rgba(135, 135, 135, 0.5) 166 | 167 | ::-webkit-scrollbar-thumb 168 | background-color: background-dark-lighter 169 | 170 | @-moz-document url-prefix() 171 | scrollbar-color: background-dark-lighter transparent 172 | 173 | code 174 | background-color: background-dark-lighter 175 | color: darkmode-text 176 | 177 | #copyCodeBtn:hover 178 | color: darkmode-text 179 | 180 | blockquote 181 | color: text-black 182 | 183 | blockquote.light 184 | color: darkmode-text 185 | 186 | thead 187 | background-color: background-dark-lighter 188 | color: darkmode-text 189 | 190 | .reward-container 191 | background-color: background-dark 192 | border-color: background-dark-lighter 193 | 194 | *::-webkit-scrollbar-thumb 195 | background-color: background-dark-lighter 196 | 197 | *::-webkit-scrollbar-track 198 | background-color: background-dark-light 199 | 200 | // scrollbar for firefox 201 | @-moz-document url-prefix() 202 | * 203 | scrollbar-color: background-dark-lighter code-light 204 | scrollbar-width: thin 205 | 206 | #post-toc 207 | background-color: background-dark-light 208 | 209 | .toc-title 210 | color: text-grey-light 211 | 212 | a 213 | color: text-grey-light 214 | 215 | @media screen and (max-width: 1499px) 216 | .toc-aside 217 | background-color: rgba(78, 74, 85, 0.9) 218 | 219 | .fiction-meta 220 | background-color: background-dark-lighter 221 | 222 | .fiction-meta-item:hover 223 | background-color: background-dark 224 | 225 | .fiction-meta-key 226 | color: darkmode-text 227 | 228 | .fiction-before-content, .fiction-notes-after 229 | border-image: linear-gradient(to right, rgba(141, 141, 141, 0.1), rgba(141, 141, 141, 0.35), rgba(141, 141, 141, 0.1)) 1 230 | 231 | .linkcard-item 232 | &:hover 233 | background-color: background-dark-lighter 234 | 235 | a 236 | color: darkmode-text 237 | 238 | &:hover 239 | color: darkmode-text 240 | .linkcard-item-icon 241 | color: darkmode-text 242 | 243 | .article-item-card:hover 244 | background-color: background-dark-lighter -------------------------------------------------------------------------------- /source/css/style.styl: -------------------------------------------------------------------------------- 1 | importUrl(url_list) 2 | if url_list 3 | for url_item in url_list 4 | @import url(url_item) 5 | 6 | importUrl(hexo-config('font.url_list')) 7 | 8 | @import '_style/_default/*' 9 | @import '_style/*' 10 | @import '_style/_partial/*' 11 | @import '_style/_partial/post/*' -------------------------------------------------------------------------------- /source/css/third-party/APlayer.min.css: -------------------------------------------------------------------------------- 1 | .aplayer{background:#fff;font-family:Arial,Helvetica,sans-serif;margin:5px;box-shadow:0 2px 2px 0 rgba(0,0,0,.07),0 1px 5px 0 rgba(0,0,0,.1);border-radius:2px;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal;position:relative}.aplayer *{box-sizing:content-box}.aplayer svg{width:100%;height:100%}.aplayer svg circle,.aplayer svg path{fill:#fff}.aplayer.aplayer-withlist .aplayer-info{border-bottom:1px solid #e9e9e9}.aplayer.aplayer-withlist .aplayer-list{display:block}.aplayer.aplayer-withlist .aplayer-icon-order,.aplayer.aplayer-withlist .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon.aplayer-icon-menu{display:inline}.aplayer.aplayer-withlrc .aplayer-pic{height:90px;width:90px}.aplayer.aplayer-withlrc .aplayer-info{margin-left:90px;height:90px;padding:10px 7px 0}.aplayer.aplayer-withlrc .aplayer-lrc{display:block}.aplayer.aplayer-narrow{width:66px}.aplayer.aplayer-narrow .aplayer-info,.aplayer.aplayer-narrow .aplayer-list{display:none}.aplayer.aplayer-narrow .aplayer-body,.aplayer.aplayer-narrow .aplayer-pic{height:66px;width:66px}.aplayer.aplayer-fixed{position:fixed;bottom:0;left:0;right:0;margin:0;z-index:99;overflow:visible;max-width:400px;box-shadow:none}.aplayer.aplayer-fixed .aplayer-list{margin-bottom:65px;border:1px solid #eee;border-bottom:none}.aplayer.aplayer-fixed .aplayer-body{position:fixed;bottom:0;left:0;right:0;margin:0;z-index:99;background:#fff;padding-right:18px;transition:all .3s ease;max-width:400px}.aplayer.aplayer-fixed .aplayer-lrc{display:block;position:fixed;bottom:10px;left:0;right:0;margin:0;z-index:98;pointer-events:none;text-shadow:-1px -1px 0 #fff}.aplayer.aplayer-fixed .aplayer-lrc:after,.aplayer.aplayer-fixed .aplayer-lrc:before{display:none}.aplayer.aplayer-fixed .aplayer-info{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;transition:all .3s ease;border-bottom:none;border-top:1px solid #e9e9e9}.aplayer.aplayer-fixed .aplayer-info .aplayer-music{width:calc(100% - 105px)}.aplayer.aplayer-fixed .aplayer-miniswitcher{display:block}.aplayer.aplayer-fixed.aplayer-narrow .aplayer-info{display:block;-webkit-transform:scaleX(0);transform:scaleX(0)}.aplayer.aplayer-fixed.aplayer-narrow .aplayer-body{width:66px!important}.aplayer.aplayer-fixed.aplayer-narrow .aplayer-miniswitcher .aplayer-icon{-webkit-transform:rotateY(0);transform:rotateY(0)}.aplayer.aplayer-fixed .aplayer-icon-back,.aplayer.aplayer-fixed .aplayer-icon-forward,.aplayer.aplayer-fixed .aplayer-icon-lrc,.aplayer.aplayer-fixed .aplayer-icon-play{display:inline-block}.aplayer.aplayer-fixed .aplayer-icon-back,.aplayer.aplayer-fixed .aplayer-icon-forward,.aplayer.aplayer-fixed .aplayer-icon-menu,.aplayer.aplayer-fixed .aplayer-icon-play{position:absolute;bottom:27px;width:20px;height:20px}.aplayer.aplayer-fixed .aplayer-icon-back{right:75px}.aplayer.aplayer-fixed .aplayer-icon-play{right:50px}.aplayer.aplayer-fixed .aplayer-icon-forward{right:25px}.aplayer.aplayer-fixed .aplayer-icon-menu{right:0}.aplayer.aplayer-arrow .aplayer-icon-loop,.aplayer.aplayer-arrow .aplayer-icon-order,.aplayer.aplayer-mobile .aplayer-icon-volume-down{display:none}.aplayer.aplayer-loading .aplayer-info .aplayer-controller .aplayer-loading-icon{display:block}.aplayer.aplayer-loading .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-played .aplayer-thumb{-webkit-transform:scale(1);transform:scale(1)}.aplayer .aplayer-body{position:relative}.aplayer .aplayer-icon{width:15px;height:15px;border:none;background-color:transparent;outline:none;cursor:pointer;opacity:.8;vertical-align:middle;padding:0;font-size:12px;margin:0;display:inline-block}.aplayer .aplayer-icon path{transition:all .2s ease-in-out}.aplayer .aplayer-icon-back,.aplayer .aplayer-icon-forward,.aplayer .aplayer-icon-lrc,.aplayer .aplayer-icon-order,.aplayer .aplayer-icon-play{display:none}.aplayer .aplayer-icon-lrc-inactivity svg{opacity:.4}.aplayer .aplayer-icon-forward{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.aplayer .aplayer-lrc-content{display:none}.aplayer .aplayer-pic{position:relative;float:left;height:66px;width:66px;background-size:cover;background-position:50%;transition:all .3s ease;cursor:pointer}.aplayer .aplayer-pic:hover .aplayer-button{opacity:1}.aplayer .aplayer-pic .aplayer-button{position:absolute;border-radius:50%;opacity:.8;text-shadow:0 1px 1px rgba(0,0,0,.2);box-shadow:0 1px 1px rgba(0,0,0,.2);background:rgba(0,0,0,.2);transition:all .1s ease}.aplayer .aplayer-pic .aplayer-button path{fill:#fff}.aplayer .aplayer-pic .aplayer-hide{display:none}.aplayer .aplayer-pic .aplayer-play{width:26px;height:26px;border:2px solid #fff;bottom:50%;right:50%;margin:0 -15px -15px 0}.aplayer .aplayer-pic .aplayer-play svg{position:absolute;top:3px;left:4px;height:20px;width:20px}.aplayer .aplayer-pic .aplayer-pause{width:16px;height:16px;border:2px solid #fff;bottom:4px;right:4px}.aplayer .aplayer-pic .aplayer-pause svg{position:absolute;top:2px;left:2px;height:12px;width:12px}.aplayer .aplayer-info{margin-left:66px;padding:14px 7px 0 10px;height:66px;box-sizing:border-box}.aplayer .aplayer-info .aplayer-music{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:0 0 13px 5px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;cursor:default;padding-bottom:2px;height:20px}.aplayer .aplayer-info .aplayer-music .aplayer-title{font-size:14px}.aplayer .aplayer-info .aplayer-music .aplayer-author{font-size:12px;color:#666}.aplayer .aplayer-info .aplayer-controller{position:relative;display:flex}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap{margin:0 0 0 5px;padding:4px 0;cursor:pointer!important;flex:1}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap:hover .aplayer-bar .aplayer-played .aplayer-thumb{-webkit-transform:scale(1);transform:scale(1)}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar{position:relative;height:2px;width:100%;background:#cdcdcd}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-loaded{position:absolute;left:0;top:0;bottom:0;background:#aaa;height:2px;transition:all .5s ease}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-played{position:absolute;left:0;top:0;bottom:0;height:2px}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-played .aplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:10px;width:10px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;-webkit-transform:scale(0);transform:scale(0)}.aplayer .aplayer-info .aplayer-controller .aplayer-time{position:relative;right:0;bottom:4px;height:17px;color:#999;font-size:11px;padding-left:7px}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-time-inner{vertical-align:middle}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon{cursor:pointer;transition:all .2s ease}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon path{fill:#666}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon.aplayer-icon-loop{margin-right:2px}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon:hover path{fill:#000}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon.aplayer-icon-menu,.aplayer .aplayer-info .aplayer-controller .aplayer-time.aplayer-time-narrow .aplayer-icon-menu,.aplayer .aplayer-info .aplayer-controller .aplayer-time.aplayer-time-narrow .aplayer-icon-mode{display:none}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap{position:relative;display:inline-block;margin-left:3px;cursor:pointer!important}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap:hover .aplayer-volume-bar-wrap{height:40px}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap .aplayer-volume-bar-wrap{position:absolute;bottom:15px;right:-3px;width:25px;height:0;z-index:99;overflow:hidden;transition:all .2s ease-in-out}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap .aplayer-volume-bar-wrap.aplayer-volume-bar-wrap-active{height:40px}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap .aplayer-volume-bar-wrap .aplayer-volume-bar{position:absolute;bottom:0;right:10px;width:5px;height:35px;background:#aaa;border-radius:2.5px;overflow:hidden}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap .aplayer-volume-bar-wrap .aplayer-volume-bar .aplayer-volume{position:absolute;bottom:0;right:0;width:5px;transition:all .1s ease}.aplayer .aplayer-info .aplayer-controller .aplayer-loading-icon{display:none}.aplayer .aplayer-info .aplayer-controller .aplayer-loading-icon svg{position:absolute;-webkit-animation:rotate 1s linear infinite;animation:rotate 1s linear infinite}.aplayer .aplayer-lrc{display:none;position:relative;height:30px;text-align:center;overflow:hidden;margin:-10px 0 7px}.aplayer .aplayer-lrc:before{top:0;height:10%;background:linear-gradient(180deg,#fff 0,hsla(0,0%,100%,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff",endColorstr="#00ffffff",GradientType=0)}.aplayer .aplayer-lrc:after,.aplayer .aplayer-lrc:before{position:absolute;z-index:1;display:block;overflow:hidden;width:100%;content:" "}.aplayer .aplayer-lrc:after{bottom:0;height:33%;background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,.8));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00ffffff",endColorstr="#ccffffff",GradientType=0)}.aplayer .aplayer-lrc p{font-size:12px;color:#666;line-height:16px!important;height:16px!important;padding:0!important;margin:0!important;transition:all .5s ease-out;opacity:.4;overflow:hidden}.aplayer .aplayer-lrc p.aplayer-lrc-current{opacity:1;overflow:visible;height:auto!important;min-height:16px}.aplayer .aplayer-lrc.aplayer-lrc-hide{display:none}.aplayer .aplayer-lrc .aplayer-lrc-contents{width:100%;transition:all .5s ease-out;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;cursor:default}.aplayer .aplayer-list{overflow:auto;transition:all .5s ease;will-change:height;display:none;overflow:hidden}.aplayer .aplayer-list.aplayer-list-hide{max-height:0!important}.aplayer .aplayer-list ol{list-style-type:none;margin:0;padding:0;overflow-y:auto}.aplayer .aplayer-list ol::-webkit-scrollbar{width:5px}.aplayer .aplayer-list ol::-webkit-scrollbar-thumb{border-radius:3px;background-color:#eee}.aplayer .aplayer-list ol::-webkit-scrollbar-thumb:hover{background-color:#ccc}.aplayer .aplayer-list ol li{position:relative;height:32px;line-height:32px;padding:0 15px;font-size:12px;border-top:1px solid #e9e9e9;cursor:pointer;transition:all .2s ease;overflow:hidden;margin:0}.aplayer .aplayer-list ol li:first-child{border-top:none}.aplayer .aplayer-list ol li:hover{background:#efefef}.aplayer .aplayer-list ol li.aplayer-list-light{background:#e9e9e9}.aplayer .aplayer-list ol li.aplayer-list-light .aplayer-list-cur{display:inline-block}.aplayer .aplayer-list ol li .aplayer-list-cur{display:none;width:3px;height:22px;position:absolute;left:0;top:5px;cursor:pointer}.aplayer .aplayer-list ol li .aplayer-list-index{color:#666;margin-right:12px;cursor:pointer}.aplayer .aplayer-list ol li .aplayer-list-author{color:#666;float:right;cursor:pointer}.aplayer .aplayer-notice{opacity:0;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-size:12px;border-radius:4px;padding:5px 10px;transition:all .3s ease-in-out;overflow:hidden;color:#fff;pointer-events:none;background-color:#f4f4f5;color:#909399}.aplayer .aplayer-miniswitcher{display:none;position:absolute;top:0;right:0;bottom:0;height:100%;background:#e6e6e6;width:18px;border-radius:0 2px 2px 0}.aplayer .aplayer-miniswitcher .aplayer-icon{height:100%;width:100%;-webkit-transform:rotateY(180deg);transform:rotateY(180deg);transition:all .3s ease}.aplayer .aplayer-miniswitcher .aplayer-icon path{fill:#666}.aplayer .aplayer-miniswitcher .aplayer-icon:hover path{fill:#000}@-webkit-keyframes aplayer-roll{0%{left:0}to{left:-100%}}@keyframes aplayer-roll{0%{left:0}to{left:-100%}}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}} 2 | 3 | /*# sourceMappingURL=APlayer.min.css.map*/ -------------------------------------------------------------------------------- /source/img/author.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chanwj/hexo-theme-meow/7bba0986340a6e003e6e2c820a29bcb6938b5cce/source/img/author.jpg -------------------------------------------------------------------------------- /source/img/blog-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chanwj/hexo-theme-meow/7bba0986340a6e003e6e2c820a29bcb6938b5cce/source/img/blog-background.png -------------------------------------------------------------------------------- /source/img/reward/alipay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chanwj/hexo-theme-meow/7bba0986340a6e003e6e2c820a29bcb6938b5cce/source/img/reward/alipay.jpg -------------------------------------------------------------------------------- /source/img/reward/wechat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chanwj/hexo-theme-meow/7bba0986340a6e003e6e2c820a29bcb6938b5cce/source/img/reward/wechat.jpg -------------------------------------------------------------------------------- /source/img/site-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chanwj/hexo-theme-meow/7bba0986340a6e003e6e2c820a29bcb6938b5cce/source/img/site-icon.png -------------------------------------------------------------------------------- /source/js/theme/copy.js: -------------------------------------------------------------------------------- 1 | function copyCode() { 2 | 'use strict'; 3 | var clipboard = new ClipboardJS('#copyCodeBtn', { 4 | target: function (trigger) { 5 | return trigger.parentNode.querySelector('.code'); 6 | }, 7 | }); 8 | } 9 | 10 | document.addEventListener('DOMContentLoaded', function () { 11 | 'use strict'; 12 | var figureList = document.querySelectorAll('.highlight'); 13 | figureList.forEach(function (figure) { 14 | var copyCodeBtn = document.createElement('button'); 15 | copyCodeBtn.id = 'copyCodeBtn'; 16 | copyCodeBtn.className = 'fa-regular fa-copy'; 17 | copyCodeBtn.alt = 'Copy'; 18 | figure.appendChild(copyCodeBtn); 19 | }) 20 | }) 21 | 22 | function copyText(text) { 23 | 'use strict'; 24 | if (navigator.clipboard) { 25 | navigator.clipboard.writeText(text); 26 | } else { 27 | const textarea = document.createElement('textarea'); 28 | textarea.value = text; 29 | textarea.style.position = 'fixed'; 30 | document.body.appendChild(textarea); 31 | textarea.select(); 32 | document.execCommand('copy'); 33 | document.body.removeChild(textarea); 34 | } 35 | 36 | alert('Copied successfully.'); 37 | } 38 | -------------------------------------------------------------------------------- /source/js/theme/menu.js: -------------------------------------------------------------------------------- 1 | function openTopMenu() { 2 | 'use strict'; 3 | var hiddenMenu = document.getElementById('top-menu-hidden'); 4 | if (hiddenMenu.getAttribute('menu-show')) { 5 | hiddenMenu.removeAttribute('menu-show') 6 | hiddenMenu.style.display = 'none'; 7 | } else { 8 | hiddenMenu.setAttribute('menu-show', true); 9 | hiddenMenu.style.display = 'flex'; 10 | } 11 | } 12 | 13 | function closeTopMenu() { 14 | 'use strict'; 15 | var hiddenMenu = document.getElementById('top-menu-hidden'); 16 | if (hiddenMenu.getAttribute('menu-show')) { 17 | hiddenMenu.removeAttribute('menu-show') 18 | hiddenMenu.style.display = 'none'; 19 | } else { 20 | hiddenMenu.setAttribute('menu-show', true); 21 | hiddenMenu.style.display = 'flex'; 22 | } 23 | } -------------------------------------------------------------------------------- /source/js/theme/reward.js: -------------------------------------------------------------------------------- 1 | function openPostReward(){ 2 | 'use strict'; 3 | var rewardPanel = document.getElementById('reward-panel'); 4 | rewardPanel.setAttribute('reward-show', true); 5 | } 6 | 7 | function closePostReward(){ 8 | 'use strict'; 9 | var rewardPanel = document.getElementById('reward-panel'); 10 | rewardPanel.removeAttribute('reward-show') 11 | } -------------------------------------------------------------------------------- /source/js/theme/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 | 16 | var $input = document.getElementById(search_id); 17 | if (!$input) return; 18 | var $resultContent = document.getElementById(content_id); 19 | var searchCount = document.getElementById('search-count'); 20 | var initSearchCount = searchCount.innerText; 21 | var searchEmpty = document.getElementById('search-result-empty'); 22 | if ($("#search-input").length > 0) { 23 | $input.addEventListener('input', function () { 24 | $resultContent.innerHTML = ""; 25 | if (this.value.trim().length <= 0) { 26 | searchCount.removeAttribute('search-count-show'); 27 | return; 28 | } 29 | var str = '
" + match_content + "...
" 98 | } 99 | str += "