├── .github └── workflows │ └── npmpublish.yml ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── README_CN.md ├── _config.example.yml ├── index.js ├── layout ├── about.ejs ├── common │ ├── footer.ejs │ ├── group.ejs │ ├── head.ejs │ └── header.ejs ├── index.ejs ├── layout.ejs └── page.ejs ├── move_config.js ├── package-lock.json ├── package.json ├── screenshot └── screenshot.png ├── scripts └── replace_config.js └── source ├── css ├── bootstrap.min.css ├── fonts │ ├── fontawesome │ │ ├── css │ │ │ ├── all.min.css │ │ │ └── webfonts │ │ │ │ ├── fa-brands-400.eot │ │ │ │ ├── fa-brands-400.svg │ │ │ │ ├── fa-brands-400.ttf │ │ │ │ ├── fa-brands-400.woff │ │ │ │ ├── fa-brands-400.woff2 │ │ │ │ ├── fa-regular-400.eot │ │ │ │ ├── fa-regular-400.svg │ │ │ │ ├── fa-regular-400.ttf │ │ │ │ ├── fa-regular-400.woff │ │ │ │ ├── fa-regular-400.woff2 │ │ │ │ ├── fa-solid-900.eot │ │ │ │ ├── fa-solid-900.svg │ │ │ │ ├── fa-solid-900.ttf │ │ │ │ ├── fa-solid-900.woff │ │ │ │ └── fa-solid-900.woff2 │ │ └── webfonts │ │ │ ├── fa-brands-400.eot │ │ │ ├── fa-brands-400.svg │ │ │ ├── fa-brands-400.ttf │ │ │ ├── fa-brands-400.woff │ │ │ ├── fa-brands-400.woff2 │ │ │ ├── fa-regular-400.eot │ │ │ ├── fa-regular-400.svg │ │ │ ├── fa-regular-400.ttf │ │ │ ├── fa-regular-400.woff │ │ │ ├── fa-regular-400.woff2 │ │ │ ├── fa-solid-900.eot │ │ │ ├── fa-solid-900.svg │ │ │ ├── fa-solid-900.ttf │ │ │ ├── fa-solid-900.woff │ │ │ └── fa-solid-900.woff2 │ └── linecons │ │ ├── css │ │ ├── linecons-codes.css │ │ ├── linecons-embedded.css │ │ ├── linecons-ie7-codes.css │ │ ├── linecons-ie7.css │ │ └── linecons.min.css │ │ └── font │ │ ├── linecons.eot │ │ ├── linecons.svg │ │ ├── linecons.ttf │ │ └── linecons.woff ├── hclonely.css ├── nav.min.css ├── xenon-components.min.css ├── xenon-core.min.css ├── xenon-forms.min.css ├── xenon-skins.min.css └── xenon.min.css ├── images ├── favicon.png ├── flags │ ├── flag-cn.png │ └── flag-us.png ├── logo-collapsed@2x.png ├── logo@2x.png ├── logo_dark@2x.png ├── logos │ ├── github.png │ └── myblog.png ├── off_on.png ├── search_icon.png ├── webstack_banner_cn.png └── webstack_icon_producthunt.png └── js ├── TweenMax.min.js ├── bootstrap.min.js ├── footer.js ├── header.js ├── html5shiv.min.js ├── joinable.js ├── jquery-1.11.1.min.js ├── lozad.min.js ├── resizeable.js ├── resizeable.min.js ├── respond.min.js ├── xenon-api.min.js ├── xenon-custom.min.js └── xenon-toggles.min.js /.github/workflows/npmpublish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages 3 | 4 | name: Node.js Package 5 | 6 | on: 7 | release: 8 | types: [created] 9 | 10 | jobs: 11 | publish-npm: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v2 15 | - uses: actions/setup-node@v1 16 | with: 17 | node-version: 12 18 | registry-url: https://registry.npmjs.org/ 19 | - run: npm publish 20 | env: 21 | NODE_AUTH_TOKEN: ${{secrets.npm_token}} 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .vscode 3 | .history 4 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | screenshot/ 2 | .github/ 3 | .history/ 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 HCLonely 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hexo-theme-webstack 2 | 3 | [中文文档](https://github.com/HCLonely/hexo-theme-webstack/blob/master/README_CN.md) 4 | 5 | > A Hexo theme based on [WebStackPage](https://github.com/WebStackPage/WebStackPage.github.io). 6 | 7 | ![screenshot](https://github.com/HCLonely/hexo-theme-webstack/raw/master/screenshot/screenshot.png) 8 | 9 | ## Installation 10 | 11 | ### hexo >= 4.0 12 | 13 | ```shell 14 | git clone https://github.com/HCLonely/hexo-theme-webstack themes/webstack 15 | ``` 16 | 17 | ### hexo >= 5.0 18 | 19 | ```shell 20 | npm install hexo-theme-webstack -S 21 | ``` 22 | 23 | or 24 | 25 | ```shell 26 | cnpm install hexo-theme-webstack -S 27 | ``` 28 | 29 | ## Configuration 30 | 31 | ### hexo >= 4.0 32 | 33 | Copy the `_config.example.yml` file in the `themes/webstack/` directory to the `rootDir/source/_data/` directory and rename it to `webstack.yml`. 34 | 35 | Configure it by editing `webstack.yml`. 36 | 37 | ### hexo >= 5.0 38 | 39 | - If this theme is newly installed, a `_config.webstack.yml` file will be generated in the root directory after the installation is complete, and you can directly edit the `_config.webstack.yml` file for configuration. 40 | - If it is a theme upgrade, you can use the configuration method of hexo >= 4.0, or you can move the original configuration file to the root directory and rename it to `_config.webstack.yml`. 41 | 42 | > Note: Please keep only one of `rootDir/_config.webstack.yml` and `rootDir/source/_data/webstack.yml`! 43 | 44 | ### favicon 45 | 46 | > Website icon. 47 | 48 | Examples: 49 | ```yml 50 | favicon: /favicon.ico 51 | ``` 52 | 53 | ### banner 54 | 55 | > [Optional] Banner when sharing website to twitter and facebook. 56 | 57 | Examples: 58 | ```yml 59 | banner: /images/webstack_banner_cn.png 60 | ``` 61 | 62 | ### logo 63 | 64 | > Website logo. 65 | 66 | - `expanded`: The logo in the upper left corner of the expanded sidebar. 67 | - `collapsed`: The logo in the upper left corner of the retractable sidebar. 68 | - `dark`: The logo in the upper left corner when the top bar is dark, only the `about` page takes effect. 69 | 70 | Examples: 71 | ```yml 72 | logo: 73 | expanded: /images/logo@2x.png 74 | collapsed: /images/logo-collapsed@2x.png 75 | dark: /images/logo_dark@2x.png 76 | ``` 77 | 78 | ### flag 79 | 80 | > Language identifier, multi-language please cooperate with [Subpage](#Subpage-configuration) use. 81 | 82 | - icon: Language icons, by default only `flag-cn` and `flag-us`, other icons please look for and store in `theme directory/source/images/flags/`. 83 | - name: Language name 84 | - default: Whether the language is the default language 85 | - index: The page link 86 | 87 | Examples: 88 | ```yml 89 | flag: 90 | - name: Chinese 91 | default: true 92 | icon: flag-cn 93 | index: /index.html 94 | ``` 95 | 96 | ### search 97 | 98 | > Whether to show search box 99 | 100 | Examples: 101 | ```yml 102 | search: true 103 | ``` 104 | 105 | ### userDefinedSearchData 106 | 107 | > Custom search engine 108 | 109 | - custom: Whether to enable custom configuration 110 | - thisSearch: Current search engine search link 111 | - thisSearchIcon: Current search engine icon link, format: `url(图片链接)` 112 | - hotStatus: Whether to enable hot word search function 113 | - data: Multiple search engine configurations 114 | - name: Search engine name 115 | img: Search engine search link 116 | url: Search engine icon link, format: `url(图片链接)` 117 | 118 | 示例: 119 | ```yml 120 | userDefinedSearchData: 121 | custom: true 122 | thisSearch: https://www.baidu.com/s?wd= 123 | thisSearchIcon: url(https://www.baidu.com/favicon.ico) 124 | hotStatus: true 125 | data: 126 | - name: 百度 127 | img: url(https://www.baidu.com/favicon.ico) 128 | url: https://www.baidu.com/s?wd= 129 | - name: 谷歌 130 | img: url(https://www.google.com/favicon.ico) 131 | url: https://www.google.com/search?q= 132 | ``` 133 | 134 | ### githubCorner 135 | 136 | > [Github corner](http://tholman.com/github-corners/) in the upper right corner. 137 | 138 | Examples: 139 | ```yml 140 | githubCorner: '' 141 | ``` 142 | 143 | ### since 144 | 145 | > Year of site establishment, shown at the bottom of the page. 146 | 147 | Examples: 148 | ```yml 149 | since: 2020 150 | ``` 151 | 152 | ### menu 153 | 154 | > **[Main] Sidebar menu settings** 155 | 156 | - name: Group name 157 | - icon: Group icon 158 | - config: [Main] Grouped content (see [Config](#config) for detailed settings), if there is a submenu, this item is not needed! 159 | - submenu: If there is a submenu, `config` is not required, this option contains `name`, `icon`, `config` options. 160 | 161 | Examples: 162 | ```yml 163 | menu: 164 | - name: 常用工具 165 | icon: far fa-star 166 | config: hotTools 167 | - name: 其他工具 168 | icon: fas fa-tools 169 | submenu: 170 | - name: 开发工具 171 | icon: fas fa-tools 172 | config: devTools 173 | - name: 我的博客 174 | icon: fas fa-blog 175 | config: myBlog 176 | ``` 177 | 178 | ### expandAll 179 | 180 | > Whether to expand the sidebar. 181 | 182 | 示例: 183 | 184 | ```yml 185 | expandAll: true 186 | ``` 187 | 188 | ### about 189 | 190 | > About this site in the sidebar. 191 | 192 | - url: The link of about page. 193 | - name: Text displayed in the sidebar. 194 | - icon: Icon. 195 | 196 | Examples: 197 | ```yml 198 | about: 199 | url: /about/ 200 | icon: far fa-heart 201 | name: 关于本站 202 | ``` 203 | 204 | ### aboutPage 205 | 206 | > About page settings. 207 | 208 | 1. Generate about page. 209 | 210 | ```shell 211 | hexo new page about 212 | ``` 213 | 214 | 2. Edit `source/about/index.md` and add `type:'about'` 215 | 216 | ```yml 217 | --- 218 | title: about 219 | date: 2020-06-04 18:11:54 220 | type: 'about' 221 | --- 222 | ``` 223 | 224 | 3. Editing `aboutPage` in theme configuration files. 225 | 226 | - website: The content of about this site. 227 | - head: Headline. 228 | - html: Content, support `html` syntax. 229 | - webmaster: The content of about webmaster. 230 | - head: Headline. 231 | - name: Webmaster's name 232 | - url: Link. 233 | - img: Avatar. 234 | - description: Description. 235 | - html: Content, support `html` syntax. 236 | 237 | Examples: 238 | ```yml 239 | aboutPage: 240 | website: 241 | head: 关于本站 242 | html: '

本站是hexo主题hexo-theme-webstack的demo站。

' 243 | webmaster: 244 | head: 关于站长 245 | name: HCLonely 246 | url: https://blog.hclonely.com/ 247 | img: /images/logos/myblog.png 248 | description: 懒人一个 249 | html: '

本站是HCLonely基于WebStackPage项目做的一款Hexo主题。

' 250 | ``` 251 | 252 | ### busuanzi 253 | 254 | > Website statistics by busuanzi. 255 | 256 | - enable: Whether to enable this feature. 257 | - position: The number of visits is displayed, `footer` is displayed in the footer, and `sidebar` is displayed in the sidebar. 258 | - pv: The number of visits displayed by the traffic, `$pv` will be replaced by the number of visits. 259 | - uv: The number of visitors displayed, `$uv` will be replaced by the number of visitors. 260 | 261 | Examples: 262 | ```yml 263 | busuanzi: 264 | enable: true 265 | position: sidebar 266 | pv: 本站总访问量$pv 267 | uv: 本站总访客数$uv 268 | ``` 269 | 270 | ### custom 271 | 272 | > Customize `html` content. 273 | 274 | - head: Content inserted into the `` tag. 275 | - body: Content inserted before the `` tag. 276 | 277 | Examples: 278 | ```yml 279 | custom: 280 | head: |- # The following content is inserted into the tag, you can set up multiple lines, pay attention to at least four spaces at the beginning of each line. 281 | 282 | 283 | body: |- # Insert the following content before the tag, you can set multiple lines, pay attention to at least four spaces at the beginning of each line. 284 |
custom text
285 | 286 | ``` 287 | 288 | ## config 289 | 290 | > [Main] Website content settings 291 | 292 | ### Parameter 293 | 294 | - name: Website name. 295 | - url: Website link. 296 | - img: Website icon. 297 | - description: Website description. 298 | 299 | Examples: 300 | ```yml 301 | - name: HCLonely Blog 302 | url: https://blog.hclonely.com/ 303 | img: /images/logos/myBlog.png 304 | description: 一个懒人的博客。 305 | ``` 306 | 307 | ### Associate setting name and add website 308 | 309 | The content of `config` set in `menu` and `submenu` is the name of this option. 310 | 311 | Examples `menu`: 312 | ```yml 313 | menu: 314 | - name: Common tools 315 | icon: far fa-star 316 | config: hotTools 317 | ``` 318 | There are two ways to add websites in the `Common Tools` group: 319 | 320 | - In the theme's `_config.yml` add: 321 | ```yml 322 | hotTools: 323 | - name: HCLonely Blog 324 | url: https://blog.hclonely.com/ 325 | img: /images/logos/myBlog.png 326 | description: 一个懒人的博客。 327 | - name: Github 328 | url: https://github.com/ 329 | img: /images/logos/github.png 330 | description: 面向开源及私有软件项目的托管平台。 331 | ``` 332 | - Create a new `hotTools.yml` file in the `source/_data/` (not created by yourself), the content of the file is as follows: 333 | ```yml 334 | - name: HCLonely Blog 335 | url: https://blog.hclonely.com/ 336 | img: /images/logos/myBlog.png 337 | description: 一个懒人的博客。 338 | - name: Github 339 | url: https://github.com/ 340 | img: /images/logos/github.png 341 | description: 面向开源及私有软件项目的托管平台。 342 | ``` 343 | 344 | Either of the above two methods can be selected. The second method is recommended. 345 | 346 | ## Subpage configuration 347 | 348 | ### Create subpage 349 | 350 | Use `hexo new page xxx` to create a child page, including the following descriptions, using `hexo new page child` as an example. 351 | 352 | ### Modify the subpage configuration file 353 | 354 | After using the above command to generate the subpage, open the `root directory/source/child/index.md` file (subpage configuration file), and add a line `type:'child'` between the two `---` This configuration file takes effect. The sub-page uses the configuration of the homepage by default, and the sub-page preferentially uses the configuration between the two `---` sub-page configuration files. Each configuration item has the same configuration function as the homepage. 355 | 356 | See the example[https://github.com/HCLonely/hexo-theme-webstack/tree/gh-pages/source/child/index.md](https://github.com/HCLonely/hexo-theme-webstack/tree/gh-pages/source/child/index.md) 357 | 358 | > Since the subpage was basically completed a long time ago, it was later put on hold when it was busy. There may be some configuration or bugs that have been forgotten. If you have any questions, please feedback in time! 359 | -------------------------------------------------------------------------------- /README_CN.md: -------------------------------------------------------------------------------- 1 | # hexo-theme-webstack 2 | 3 | > 一款基于[WebStackPage](https://github.com/WebStackPage/WebStackPage.github.io)的 Hexo 主题。 4 | 5 | ![screenshot](https://github.com/HCLonely/hexo-theme-webstack/raw/master/screenshot/screenshot.png) 6 | 7 | ## 安装 8 | 9 | ### hexo >= 4.0 10 | 11 | ```shell 12 | git clone https://github.com/HCLonely/hexo-theme-webstack themes/webstack 13 | ``` 14 | 15 | ### hexo >= 5.0 16 | 17 | ```shell 18 | npm install hexo-theme-webstack -S 19 | ``` 20 | 21 | or 22 | 23 | ```shell 24 | cnpm install hexo-theme-webstack -S 25 | ``` 26 | 27 | ## 配置 28 | 29 | ### hexo >= 4.0 30 | 31 | 将`themes/webstack/`目录内的`_config.example.yml`文件复制到`博客根目录/source/_data/`目录内,并重命名为`webstack.yml`. 32 | 33 | 通过编辑`webstack.yml`进行配置。 34 | 35 | ### hexo >= 5.0 36 | 37 | - 如果是新安装本主题,安装完成后会在根目录生成一个`_config.webstack.yml`文件,直接编辑`_config.webstack.yml`文件进行配置即可。 38 | - 如果是主题升级,可以使用 hexo >= 4.0 的配置方法,也可以将原来的配置文件移动到根目录,并重命名为`_config.webstack.yml`. 39 | 40 | > 注意:`博客根目录/_config.webstack.yml`和`博客根目录/source/_data/webstack.yml`请只保留一个! 41 | 42 | ### favicon 43 | 44 | > 网站图标 45 | 46 | 示例: 47 | ```yml 48 | favicon: /favicon.ico 49 | ``` 50 | 51 | ### banner 52 | 53 | > [可选]分享网站到 twitter 和 facebook 时的图片。 54 | 55 | 示例: 56 | ```yml 57 | banner: /images/webstack_banner_cn.png 58 | ``` 59 | 60 | ### logo 61 | 62 | > 网站 logo 63 | 64 | - `expanded`: 侧边栏展开式左上角的 logo 65 | - `collapsed`: 侧边栏收起式左上角的 logo 66 | - `dark`: 顶栏为暗色时左上角的 logo, 仅 `about` 页面生效 67 | 68 | 示例: 69 | ```yml 70 | logo: 71 | expanded: /images/logo@2x.png 72 | collapsed: /images/logo-collapsed@2x.png 73 | dark: /images/logo_dark@2x.png 74 | ``` 75 | 76 | ### flag 77 | 78 | > 语言标识,多语言请配合[子页面](#子页面配置)使用 79 | 80 | - icon: 语言图标,默认仅有`flag-cn`和`flag-us`, 其他图标自行寻找存放于`主题目录/source/images/flags/` 81 | - name: 语言名称 82 | - default: 该语言是否为默认语言 83 | - index: 页面链接 84 | 85 | 示例: 86 | ```yml 87 | flag: 88 | - name: Chinese 89 | default: true 90 | icon: flag-cn 91 | index: /index.html 92 | ``` 93 | 94 | ### search 95 | 96 | > 是否显示搜索框 97 | 98 | 示例: 99 | ```yml 100 | search: true 101 | ``` 102 | 103 | ### userDefinedSearchData 104 | 105 | > 自定义搜索引擎 106 | 107 | - custom: 是否启用自定义配置 108 | - thisSearch: 当前搜索引擎的搜索链接 109 | - thisSearchIcon: 当前搜索引擎的图标链接,格式为`url(图片链接)` 110 | - hotStatus: 是否启用搜热词功能 111 | - data: 多搜索引擎配置 112 | - name: 搜索引擎名字 113 | img: 搜索引擎的搜索链接 114 | url: 搜索引擎的图标链接,格式为`url(图片链接)` 115 | 116 | 示例: 117 | ```yml 118 | userDefinedSearchData: 119 | custom: true 120 | thisSearch: https://www.baidu.com/s?wd= 121 | thisSearchIcon: url(https://www.baidu.com/favicon.ico) 122 | hotStatus: true 123 | data: 124 | - name: 百度 125 | img: url(https://www.baidu.com/favicon.ico) 126 | url: https://www.baidu.com/s?wd= 127 | - name: 谷歌 128 | img: url(https://www.google.com/favicon.ico) 129 | url: https://www.google.com/search?q= 130 | ``` 131 | 132 | ### githubCorner 133 | 134 | > 右上角的 [github corner](http://tholman.com/github-corners/) 135 | 136 | 示例: 137 | ```yml 138 | githubCorner: '' 139 | ``` 140 | 141 | ### since 142 | 143 | > 建站年份,显示在页面底部 144 | 145 | 示例: 146 | ```yml 147 | since: 2020 148 | ``` 149 | 150 | ### menu 151 | 152 | > **[主要]侧边栏菜单设置** 153 | 154 | - name: 分组名 155 | - icon: 分组图标 156 | - config: [主要]分组内容(详细设置查看[Config](#config)),如果有二级菜单则不需要此项! 157 | - submenu: 二级菜单,如果有二级菜单则不需要`config`, 此选项内容包含`name`, `icon`, `config`选项 158 | 159 | 示例: 160 | ```yml 161 | menu: 162 | - name: 常用工具 163 | icon: far fa-star 164 | config: hotTools 165 | - name: 其他工具 166 | icon: fas fa-tools 167 | submenu: 168 | - name: 开发工具 169 | icon: fas fa-tools 170 | config: devTools 171 | - name: 我的博客 172 | icon: fas fa-blog 173 | config: myBlog 174 | ``` 175 | 176 | ### expandAll 177 | 178 | > 是否将侧边栏全部展开 179 | 180 | 示例: 181 | 182 | ```yml 183 | expandAll: true 184 | ``` 185 | 186 | ### about 187 | 188 | > 侧边栏的关于本站 189 | 190 | - url: 关于页面链接 191 | - name: 在侧边栏显示的文字 192 | - icon: 图标 193 | 194 | 示例: 195 | ```yml 196 | about: 197 | url: /about/ 198 | icon: far fa-heart 199 | name: 关于本站 200 | ``` 201 | 202 | ### aboutPage 203 | 204 | > 关于页面设置 205 | 206 | 1. 生成关于页面 207 | 208 | ```shell 209 | hexo new page about 210 | ``` 211 | 212 | 2. 编辑`source/about/index.md`, 添加`type: 'about'` 213 | 214 | ```yml 215 | --- 216 | title: about 217 | date: 2020-06-04 18:11:54 218 | type: 'about' 219 | --- 220 | ``` 221 | 222 | 3. 编辑主题配置文件的`aboutPage` 223 | 224 | - website: 关于本站内容 225 | - head: 标题 226 | - html: 内容,支持`html`语法 227 | - webmaster: 关于站长内容 228 | - head: 标题 229 | - name: 站长名字 230 | - url: 链接 231 | - img: 头像 232 | - description: 描述 233 | - html: 其他内容,支持`html`语法 234 | 235 | 示例: 236 | ```yml 237 | aboutPage: 238 | website: 239 | head: 关于本站 240 | html: '

本站是hexo主题hexo-theme-webstack的demo站。

' 241 | webmaster: 242 | head: 关于站长 243 | name: HCLonely 244 | url: https://blog.hclonely.com/ 245 | img: /images/logos/myblog.png 246 | description: 懒人一个 247 | html: '

本站是HCLonely基于WebStackPage项目做的一款Hexo主题。

' 248 | ``` 249 | 250 | ### busuanzi 251 | 252 | > 不蒜子统计 253 | 254 | - enable: 是否启用不蒜子统计 255 | - position: 访问量显示位置, `footer`显示在页脚, `sidebar`显示在侧边栏 256 | - pv: 访问量显示的内容, `$pv`会被替换为访问量 257 | - uv: 访客数显示的内容, `$uv`会被替换为访客数 258 | 259 | 示例: 260 | ```yml 261 | busuanzi: 262 | enable: true 263 | position: sidebar 264 | pv: 本站总访问量$pv 265 | uv: 本站总访客数$uv 266 | ``` 267 | 268 | ### custom 269 | 270 | > 自定义`html`内容 271 | 272 | - head: 插入到``标签内的内容 273 | - body: 插入到``标签之前的内容 274 | 275 | 示例: 276 | ```yml 277 | custom: 278 | head: |- # 以下内容插入到标签内,可设置多行,注意每行开头至少四个空格 279 | 280 | 281 | body: |- # 以下内容插入到标签之前,可设置多行,注意每行开头至少四个空格 282 |
custom text
283 | 284 | ``` 285 | 286 | ## config 287 | 288 | > [主要]网站内容设置 289 | 290 | ### 参数 291 | 292 | - name: 网站名称 293 | - url: 网站链接 294 | - img: 网站图标 295 | - description: 网站描述 296 | 297 | 示例: 298 | ```yml 299 | - name: HCLonely Blog 300 | url: https://blog.hclonely.com/ 301 | img: /images/logos/myBlog.png 302 | description: 一个懒人的博客。 303 | ``` 304 | 305 | ### 关联设置名称并添加网站 306 | 307 | 在`menu`和`submenu`中设置的`config`的内容为此选项的名称。 308 | 309 | 例`menu`: 310 | ```yml 311 | menu: 312 | - name: 常用工具 313 | icon: far fa-star 314 | config: hotTools 315 | ``` 316 | 则`常用工具`分组里的网站有以下两种添加方式: 317 | 318 | - 在主题的`_config.yml`里添加: 319 | ```yml 320 | hotTools: 321 | - name: HCLonely Blog 322 | url: https://blog.hclonely.com/ 323 | img: /images/logos/myBlog.png 324 | description: 一个懒人的博客。 325 | - name: Github 326 | url: https://github.com/ 327 | img: /images/logos/github.png 328 | description: 面向开源及私有软件项目的托管平台。 329 | ``` 330 | - 在`站点根目录/source/_data/`(没有自行创建)内新建`hotTools.yml`文件,文件内容如下: 331 | ```yml 332 | - name: HCLonely Blog 333 | url: https://blog.hclonely.com/ 334 | img: /images/logos/myBlog.png 335 | description: 一个懒人的博客。 336 | - name: Github 337 | url: https://github.com/ 338 | img: /images/logos/github.png 339 | description: 面向开源及私有软件项目的托管平台。 340 | ``` 341 | 342 | > 以上两种方式任选一种即可,建议使用第二种。 343 | 344 | [配置详情](https://blog.hclonely.com/posts/3cd4fb34/) 345 | 346 | ## 子页面配置 347 | 348 | ### 创建子页面 349 | 350 | 使用`hexo new page xxx`创建子页面,这里包括下面的说明都以`hexo new page child`为例。 351 | 352 | ### 修改子页面配置文件 353 | 354 | 使用上面的命令生成子页面后,打开`根目录/source/child/index.md`文件(子页面配置文件),在两个`---`之间添加一行`type: 'child'`使此配置文件生效,子页面默认使用主页的配置,子页面优先使用子页面配置文件两个`---`之间的配置,各配置项和主页的配置功能相同。 355 | 356 | 示例请看[https://github.com/HCLonely/hexo-theme-webstack/tree/gh-pages/source/child/index.md](https://github.com/HCLonely/hexo-theme-webstack/tree/gh-pages/source/child/index.md) 357 | 358 | > 由于子页面在很久之前就基本做完了,后来比较忙就鸽了,可能有些配置或 bug 给忘了,有问题请及时反馈! 359 | -------------------------------------------------------------------------------- /_config.example.yml: -------------------------------------------------------------------------------- 1 | favicon: /favicon.ico 2 | banner: /images/webstack_banner_cn.png 3 | 4 | logo: 5 | expanded: /images/logo@2x.png 6 | collapsed: /images/logo-collapsed@2x.png 7 | dark: /images/logo_dark@2x.png 8 | 9 | flag: 10 | - name: Chinese 11 | default: true 12 | icon: flag-cn 13 | index: /index.html 14 | 15 | search: true 16 | 17 | userDefinedSearchData: 18 | custom: false 19 | thisSearch: https://www.baidu.com/s?wd= 20 | thisSearchIcon: url(https://www.baidu.com/favicon.ico) 21 | hotStatus: true 22 | data: 23 | - name: 百度 24 | img: url(https://www.baidu.com/favicon.ico) 25 | url: https://www.baidu.com/s?wd= 26 | 27 | githubCorner: '' 28 | 29 | expandAll: false 30 | menu: 31 | - name: 测试页面 32 | icon: far fa-star 33 | config: testPage 34 | - name: 常用工具 35 | icon: far fa-star 36 | config: hotTools 37 | - name: 其他工具 38 | icon: fas fa-tools 39 | submenu: 40 | - name: 开发工具 41 | icon: fas fa-tools 42 | config: devTools 43 | - name: 我的博客 44 | icon: fas fa-blog 45 | config: myBlog 46 | 47 | testPage: 48 | - name: Child Page 49 | url: /child 50 | img: /images/logos/myblog.png 51 | description: 子页面测试 52 | devTools: 53 | - name: Github 54 | url: https://github.com/ 55 | img: /images/logos/github.png 56 | description: 面向开源及私有软件项目的托管平台。 57 | - name: Github 58 | url: https://github.com/ 59 | img: /images/logos/github.png 60 | description: 面向开源及私有软件项目的托管平台。 61 | 62 | myBlog: 63 | - name: HCLonely Blog 64 | url: https://blog.hclonely.com/ 65 | img: /images/logos/myBlog.png 66 | description: 一个懒人的博客。 67 | 68 | about: 69 | url: /about/ 70 | icon: far fa-heart 71 | name: 关于本站 72 | 73 | aboutPage: 74 | website: 75 | head: 关于本站 76 | html: '

本站是hexo主题hexo-theme-webstack的demo站。

' 77 | webmaster: 78 | head: 关于站长 79 | name: HCLonely 80 | url: https://blog.hclonely.com/ 81 | img: /images/logos/myblog.png 82 | description: 懒人一个 83 | html: '

本站是HCLonely基于WebStackPage项目做的一款Hexo主题。

' 84 | 85 | since: 2020 86 | 87 | busuanzi: 88 | enable: true 89 | position: sidebar # 'footer','sidebar' 90 | pv: 本站总访问量$pv 91 | uv: 本站总访客数$uv 92 | 93 | custom: 94 | head: |- # 以下内容插入到标签内,可设置多行,注意每行开头至少四个空格 95 | 96 | 97 | body: |- # 以下内容插入到标签之前,可设置多行,注意每行开头至少四个空格 98 | 99 | 100 | 101 | js: 102 | header: /js/header.js 103 | footer: /js/footer.js 104 | jquery: /js/jquery-1.11.1.min.js 105 | bootstrap: /js/bootstrap.min.js 106 | TweenMax: /js/TweenMax.min.js 107 | resizeable: /js/resizeable.min.js 108 | joinable: /js/joinable.js 109 | xenonApi: /js/xenon-api.min.js 110 | xenonToggles: /js/xenon-toggles.min.js 111 | xenonCustom: /js/xenon-custom.min.js 112 | lozad: /js/lozad.min.js 113 | html5shiv: /js/html5shiv.min.js 114 | respond: /js/respond.min.js 115 | busuanzi: https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js 116 | 117 | css: 118 | hclonely: /css/hclonely.css 119 | fonts: //fonts.loli.net/css?family=Arimo:400,700,400italic 120 | linecons: /css/fonts/linecons/css/linecons.min.css 121 | fontawesome: /css/fonts/fontawesome/css/all.min.css 122 | bootstrap: /css/bootstrap.min.css 123 | xenonCore: /css/xenon-core.min.css 124 | xenonComponents: /css/xenon-components.min.css 125 | xenonSkins: /css/xenon-skins.min.css 126 | nav: /css/nav.min.css 127 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // 这个文件用来防止 hexo 5.0.0 使用 "hexo clean" 命令报错。 2 | // This file is used to prevent hexo 5.0.0 from using "hexo clean" command error. 3 | -------------------------------------------------------------------------------- /layout/about.ejs: -------------------------------------------------------------------------------- 1 | 2 | 16 |
17 |
18 |
19 |
20 |
21 | <% if (theme.aboutPage && theme.aboutPage.website) { %> 22 |

<%= theme.aboutPage.website.head %>

23 |
24 |
25 |
26 | <%- theme.aboutPage.website.html %> 27 |
28 |
29 | <% } else { %> 30 |
31 | <% } %> 32 | <% if (theme.aboutPage && theme.aboutPage.webmaster) { %> 33 |

<%= theme.aboutPage.webmaster.head %>

34 |
35 |
36 |
37 |
38 | 39 | 40 | 41 |
42 | 43 | <%= theme.aboutPage.webmaster.name %> 44 | 45 |

<%= theme.aboutPage.webmaster.description %>

46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | <%- theme.aboutPage.webmaster.html %> 54 |
55 |
56 |
57 |
58 |
59 | <% } %> 60 |
61 |
62 |
63 |
64 | -------------------------------------------------------------------------------- /layout/common/footer.ejs: -------------------------------------------------------------------------------- 1 |
2 | 21 |
22 |
23 |
24 | <%- js([setting.js.bootstrap, setting.js.TweenMax, setting.js.resizeable, setting.js.joinable, setting.js.xenonApi, setting.js.xenonToggles, setting.js.xenonCustom]) %> 25 | <% if (setting.busuanzi.enable) { %> 26 | 27 | <% } %> 28 | <% if (page.type!=="about") { %> 29 | <%- js(setting.js.lozad) %> 30 | <% } else { %> 31 | 32 | <% } %> 33 | -------------------------------------------------------------------------------- /layout/common/group.ejs: -------------------------------------------------------------------------------- 1 |

<%= e.name %>

2 |
3 | <% menus.forEach(function(menu) { %> 4 |
5 |
6 |
7 | 8 | 9 | 10 |
11 | 12 | <%= menu.name %> 13 | 14 |

<%= menu.description %>

15 |
16 |
17 |
18 |
19 | <% }) %> 20 |
21 |
22 | -------------------------------------------------------------------------------- /layout/common/head.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <%= setting.tittle || config.title %> - <%= setting.subtitle || config.subtitle %> 7 | 8 | 9 | 10 | <%- css(Object.values(setting.css)) %> 11 | <%- js(setting.js.jquery) %> 12 | 16 | <%- js(setting.js.header) %> 17 | 18 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | <% if (setting.banner) { %> 29 | 30 | <% } %> 31 | 32 | 33 | 34 | 35 | <% if (setting.banner) { %> 36 | 37 | <% } %> 38 | <% if (setting.custom && setting.custom.head) { %> 39 | <%- setting.custom.head %> 40 | <% } %> 41 | 42 | -------------------------------------------------------------------------------- /layout/common/header.ejs: -------------------------------------------------------------------------------- 1 | 71 | -------------------------------------------------------------------------------- /layout/index.ejs: -------------------------------------------------------------------------------- 1 | <% const isChildPage = page.type === 'child' %> 2 | <% const setting = isChildPage ? Object.assign({}, theme, page) : theme %> 3 | <%# console.log(page.path) %> 4 | 5 |
6 | <%- partial('common/header', {setting:setting}) %> 7 | 8 |
9 | 51 | <% if(setting.search){ %> 52 |
53 |
73 | 74 | <% } %> 75 | <% if(is_home() || isChildPage){ %> 76 | <% const menuSetting = isChildPage ? page : theme; %> 77 | <% menuSetting.menu.forEach(function(e) { %> 78 | <% if (e.submenu) { %> 79 | <% e.submenu.forEach(function(e) { %> 80 | <% const childPath = page.path.replace('index.html', '') + e.config; %> 81 | <% const key = isChildPage?childPath:e.config; %> 82 | <% var menus = site.data && site.data[key] ? site.data[key] : menuSetting[e.config]; %> 83 | <%- partial('common/group.ejs', {e: e, menus: menus || []}); %> 84 | <% }) %> 85 | <% } else { %> 86 | <% const childPath = page.path.replace('index.html', '') + e.config; %> 87 | <% const key = isChildPage?childPath:e.config; %> 88 | <% var menus = site.data && site.data[key] ? site.data[key] : menuSetting[e.config]; %> 89 | <%# console.log(page.path,childPath,key); %> 90 | <%- partial('common/group.ejs', {e: e, menus: menus || []}); %> 91 | <% } %> 92 | <% }) %> 93 | <% } %> 94 | <%- js(setting.js.footer) %> 95 | -------------------------------------------------------------------------------- /layout/layout.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <% const setting = page ? Object.assign({}, theme, page) : theme %> 4 | 5 | <%- partial('common/head', {setting:setting}) %> 6 | 7 | 8 | <%- body %> 9 | <%- partial('common/footer', {setting:setting}) %> 10 | <% if (setting.custom && setting.custom.body) { %> 11 | <%- setting.custom.body %> 12 | <% } %> 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /layout/page.ejs: -------------------------------------------------------------------------------- 1 | <% if(page.type==="about"){ %> 2 | <%- partial('about') %> 3 | <% }else if(page.type==="child"){ %> 4 | <%- partial('index') %> 5 | <% }else{ %> 6 | <% } %> 7 | -------------------------------------------------------------------------------- /move_config.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | 3 | if (fs.existsSync('../hexo/package.json')){ 4 | const version = JSON.parse(fs.readFileSync('../hexo/package.json')).version 5 | if (version.split('.')[0].includes('5')) { 6 | const oldConfigPath = '../../source/_data/webstack.yml' 7 | const configPath = '../../_config.webstack.yml' 8 | if (!fs.existsSync(configPath) && !fs.existsSync(oldConfigPath)) { 9 | fs.writeFileSync(configPath, fs.readFileSync('./_config.example.yml')) 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-theme-webstack", 3 | "version": "2.1.1", 4 | "description": "A hexo theme based on webstack.", 5 | "keywords": [ 6 | "hexo", 7 | "theme", 8 | "webstack" 9 | ], 10 | "main": "index.js", 11 | "scripts": { 12 | "test": "ejslint ./layout", 13 | "mincss": "cleancss", 14 | "postinstall": "node ./move_config.js" 15 | }, 16 | "author": "HCLonely ", 17 | "license": "MIT", 18 | "bugs": { 19 | "url": "https://github.com/HCLonely/hexo-theme-webstack/issues", 20 | "email": "h1606051253@gmail.com" 21 | }, 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/HCLonely/hexo-theme-webstack.git" 25 | }, 26 | "devDependencies": { 27 | "clean-css-cli": "^4.3.0", 28 | "ejs-lint": "^0.1.1", 29 | "uglify-js": "^3.9.4" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /screenshot/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/screenshot/screenshot.png -------------------------------------------------------------------------------- /scripts/replace_config.js: -------------------------------------------------------------------------------- 1 | hexo.on('generateBefore', function () { 2 | const rootConfig = hexo.config 3 | if (hexo.locals.get) { 4 | const data = hexo.locals.get('data') 5 | data && data.webstack && (hexo.theme.config = data.webstack) 6 | } 7 | hexo.theme.config.rootConfig = rootConfig 8 | }) 9 | -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/css/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/css/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /source/css/fonts/fontawesome/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/fontawesome/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /source/css/fonts/linecons/css/linecons-codes.css: -------------------------------------------------------------------------------- 1 | 2 | .linecons-music:before { content: '\e800'; } /* '' */ 3 | .linecons-search:before { content: '\e801'; } /* '' */ 4 | .linecons-mail:before { content: '\e802'; } /* '' */ 5 | .linecons-heart:before { content: '\e803'; } /* '' */ 6 | .linecons-star:before { content: '\e804'; } /* '' */ 7 | .linecons-user:before { content: '\e805'; } /* '' */ 8 | .linecons-videocam:before { content: '\e806'; } /* '' */ 9 | .linecons-camera:before { content: '\e807'; } /* '' */ 10 | .linecons-photo:before { content: '\e808'; } /* '' */ 11 | .linecons-attach:before { content: '\e809'; } /* '' */ 12 | .linecons-lock:before { content: '\e80a'; } /* '' */ 13 | .linecons-eye:before { content: '\e80b'; } /* '' */ 14 | .linecons-tag:before { content: '\e80c'; } /* '' */ 15 | .linecons-thumbs-up:before { content: '\e80d'; } /* '' */ 16 | .linecons-pencil:before { content: '\e80e'; } /* '' */ 17 | .linecons-comment:before { content: '\e80f'; } /* '' */ 18 | .linecons-location:before { content: '\e810'; } /* '' */ 19 | .linecons-cup:before { content: '\e811'; } /* '' */ 20 | .linecons-trash:before { content: '\e812'; } /* '' */ 21 | .linecons-doc:before { content: '\e813'; } /* '' */ 22 | .linecons-note:before { content: '\e814'; } /* '' */ 23 | .linecons-cog:before { content: '\e815'; } /* '' */ 24 | .linecons-params:before { content: '\e816'; } /* '' */ 25 | .linecons-calendar:before { content: '\e817'; } /* '' */ 26 | .linecons-sound:before { content: '\e818'; } /* '' */ 27 | .linecons-clock:before { content: '\e819'; } /* '' */ 28 | .linecons-lightbulb:before { content: '\e81a'; } /* '' */ 29 | .linecons-tv:before { content: '\e81b'; } /* '' */ 30 | .linecons-desktop:before { content: '\e81c'; } /* '' */ 31 | .linecons-mobile:before { content: '\e81d'; } /* '' */ 32 | .linecons-cd:before { content: '\e81e'; } /* '' */ 33 | .linecons-inbox:before { content: '\e81f'; } /* '' */ 34 | .linecons-globe:before { content: '\e820'; } /* '' */ 35 | .linecons-cloud:before { content: '\e821'; } /* '' */ 36 | .linecons-paper-plane:before { content: '\e822'; } /* '' */ 37 | .linecons-fire:before { content: '\e823'; } /* '' */ 38 | .linecons-graduation-cap:before { content: '\e824'; } /* '' */ 39 | .linecons-megaphone:before { content: '\e825'; } /* '' */ 40 | .linecons-database:before { content: '\e826'; } /* '' */ 41 | .linecons-key:before { content: '\e827'; } /* '' */ 42 | .linecons-beaker:before { content: '\e828'; } /* '' */ 43 | .linecons-truck:before { content: '\e829'; } /* '' */ 44 | .linecons-money:before { content: '\e82a'; } /* '' */ 45 | .linecons-food:before { content: '\e82b'; } /* '' */ 46 | .linecons-shop:before { content: '\e82c'; } /* '' */ 47 | .linecons-diamond:before { content: '\e82d'; } /* '' */ 48 | .linecons-t-shirt:before { content: '\e82e'; } /* '' */ 49 | .linecons-wallet:before { content: '\e82f'; } /* '' */ -------------------------------------------------------------------------------- /source/css/fonts/linecons/css/linecons-ie7-codes.css: -------------------------------------------------------------------------------- 1 | 2 | .linecons-music { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 3 | .linecons-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 4 | .linecons-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 5 | .linecons-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 6 | .linecons-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 7 | .linecons-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 8 | .linecons-videocam { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 9 | .linecons-camera { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 10 | .linecons-photo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 11 | .linecons-attach { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 12 | .linecons-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 13 | .linecons-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 14 | .linecons-tag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 15 | .linecons-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 16 | .linecons-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 17 | .linecons-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 18 | .linecons-location { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 19 | .linecons-cup { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 20 | .linecons-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 21 | .linecons-doc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 22 | .linecons-note { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 23 | .linecons-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 24 | .linecons-params { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 25 | .linecons-calendar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 26 | .linecons-sound { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 27 | .linecons-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 28 | .linecons-lightbulb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 29 | .linecons-tv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 30 | .linecons-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 31 | .linecons-mobile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 32 | .linecons-cd { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 33 | .linecons-inbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 34 | .linecons-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 35 | .linecons-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 36 | .linecons-paper-plane { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 37 | .linecons-fire { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 38 | .linecons-graduation-cap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 39 | .linecons-megaphone { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 40 | .linecons-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 41 | .linecons-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 42 | .linecons-beaker { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 43 | .linecons-truck { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 44 | .linecons-money { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 45 | .linecons-food { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 46 | .linecons-shop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 47 | .linecons-diamond { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 48 | .linecons-t-shirt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 49 | .linecons-wallet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -------------------------------------------------------------------------------- /source/css/fonts/linecons/css/linecons-ie7.css: -------------------------------------------------------------------------------- 1 | [class^="linecons-"], [class*=" linecons-"] { 2 | font-family: 'linecons'; 3 | font-style: normal; 4 | font-weight: normal; 5 | 6 | /* fix buttons height */ 7 | line-height: 1em; 8 | 9 | /* you can be more comfortable with increased icons size */ 10 | /* font-size: 120%; */ 11 | } 12 | 13 | .linecons-music { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 14 | .linecons-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 15 | .linecons-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 16 | .linecons-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 17 | .linecons-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 18 | .linecons-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 19 | .linecons-videocam { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 20 | .linecons-camera { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 21 | .linecons-photo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 22 | .linecons-attach { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 23 | .linecons-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 24 | .linecons-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 25 | .linecons-tag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 26 | .linecons-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 27 | .linecons-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 28 | .linecons-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 29 | .linecons-location { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 30 | .linecons-cup { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 31 | .linecons-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 32 | .linecons-doc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 33 | .linecons-note { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 34 | .linecons-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 35 | .linecons-params { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 36 | .linecons-calendar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 37 | .linecons-sound { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 38 | .linecons-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 39 | .linecons-lightbulb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 40 | .linecons-tv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 41 | .linecons-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 42 | .linecons-mobile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 43 | .linecons-cd { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 44 | .linecons-inbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 45 | .linecons-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 46 | .linecons-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 47 | .linecons-paper-plane { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 48 | .linecons-fire { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 49 | .linecons-graduation-cap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 50 | .linecons-megaphone { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 51 | .linecons-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 52 | .linecons-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 53 | .linecons-beaker { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 54 | .linecons-truck { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 55 | .linecons-money { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 56 | .linecons-food { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 57 | .linecons-shop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 58 | .linecons-diamond { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 59 | .linecons-t-shirt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } 60 | .linecons-wallet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -------------------------------------------------------------------------------- /source/css/fonts/linecons/css/linecons.min.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:linecons;src:url(../font/linecons.eot?24293614);src:url(../font/linecons.eot?24293614#iefix) format('embedded-opentype'),url(../font/linecons.woff?24293614) format('woff'),url(../font/linecons.ttf?24293614) format('truetype'),url(../font/linecons.svg?24293614#linecons) format('svg');font-weight:400;font-style:normal}[class*=" linecons-"]:before,[class^=linecons-]:before{font-family:linecons;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em}.linecons-music:before{content:'\e800'}.linecons-search:before{content:'\e801'}.linecons-mail:before{content:'\e802'}.linecons-heart:before{content:'\e803'}.linecons-star:before{content:'\e804'}.linecons-user:before{content:'\e805'}.linecons-videocam:before{content:'\e806'}.linecons-camera:before{content:'\e807'}.linecons-photo:before{content:'\e808'}.linecons-attach:before{content:'\e809'}.linecons-lock:before{content:'\e80a'}.linecons-eye:before{content:'\e80b'}.linecons-tag:before{content:'\e80c'}.linecons-thumbs-up:before{content:'\e80d'}.linecons-pencil:before{content:'\e80e'}.linecons-comment:before{content:'\e80f'}.linecons-location:before{content:'\e810'}.linecons-cup:before{content:'\e811'}.linecons-trash:before{content:'\e812'}.linecons-doc:before{content:'\e813'}.linecons-note:before{content:'\e814'}.linecons-cog:before{content:'\e815'}.linecons-params:before{content:'\e816'}.linecons-calendar:before{content:'\e817'}.linecons-sound:before{content:'\e818'}.linecons-clock:before{content:'\e819'}.linecons-lightbulb:before{content:'\e81a'}.linecons-tv:before{content:'\e81b'}.linecons-desktop:before{content:'\e81c'}.linecons-mobile:before{content:'\e81d'}.linecons-cd:before{content:'\e81e'}.linecons-inbox:before{content:'\e81f'}.linecons-globe:before{content:'\e820'}.linecons-cloud:before{content:'\e821'}.linecons-paper-plane:before{content:'\e822'}.linecons-fire:before{content:'\e823'}.linecons-graduation-cap:before{content:'\e824'}.linecons-megaphone:before{content:'\e825'}.linecons-database:before{content:'\e826'}.linecons-key:before{content:'\e827'}.linecons-beaker:before{content:'\e828'}.linecons-truck:before{content:'\e829'}.linecons-money:before{content:'\e82a'}.linecons-food:before{content:'\e82b'}.linecons-shop:before{content:'\e82c'}.linecons-diamond:before{content:'\e82d'}.linecons-t-shirt:before{content:'\e82e'}.linecons-wallet:before{content:'\e82f'} -------------------------------------------------------------------------------- /source/css/fonts/linecons/font/linecons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/linecons/font/linecons.eot -------------------------------------------------------------------------------- /source/css/fonts/linecons/font/linecons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Copyright (C) 2014 by original authors @ fontello.com 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /source/css/fonts/linecons/font/linecons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/linecons/font/linecons.ttf -------------------------------------------------------------------------------- /source/css/fonts/linecons/font/linecons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/css/fonts/linecons/font/linecons.woff -------------------------------------------------------------------------------- /source/css/hclonely.css: -------------------------------------------------------------------------------- 1 | .sousuo{ 2 | padding: 25px 0 35px 0; 3 | max-width: 717px; 4 | margin: 0 auto; 5 | } 6 | .search{ 7 | position: relative; 8 | width: 100%; 9 | margin: 0 auto; 10 | } 11 | .search-box{ 12 | position: relative; 13 | } 14 | .search-icon{ 15 | position: absolute; 16 | left: 3px; 17 | top: 5px; 18 | width: 40px; 19 | height: 40px; 20 | overflow: hidden; 21 | border-radius: 25px; 22 | cursor: pointer; 23 | opacity: 0; 24 | } 25 | .search-input{ 26 | width: 100%; 27 | height: 50px; 28 | line-height: 50px; 29 | font-size: 16px; 30 | color: #999; 31 | border: none; 32 | outline: none; 33 | padding-left: 45px; 34 | border: 1px solid #e6e6e6; 35 | border-radius: 10px; 36 | } 37 | .search-input:focus{ 38 | outline: none; 39 | border: 1px solid #2188ff; 40 | -webkit-box-shadow: 0 0 5px 0px rgba(71, 158, 245, 0.5); 41 | box-shadow: 0 0 5px 0px rgba(71, 158, 245, 0.5); 42 | } 43 | input::-webkit-input-placeholder{ 44 | font-size: 12px; 45 | letter-spacing: 1px; 46 | color: #ccc; 47 | } 48 | .search-btn{ 49 | position: absolute; 50 | right: 0; 51 | top: 0; 52 | width: 50px; 53 | line-height: 48px; 54 | background: transparent; 55 | border: none; 56 | font-size: 25px; 57 | color: #ddd; 58 | font-weight: bold; 59 | outline: none; 60 | padding: 0 10px; 61 | } 62 | .search-btn:hover{ color: #6b7184 } 63 | .search-btn i { margin: 0 } 64 | .search-hot-text{ 65 | position: absolute; 66 | z-index: 100; 67 | width: 100%; 68 | border-radius: 0 0 10px 10px; 69 | background: #FFF; 70 | box-shadow: 0px 4px 5px 0px #cccccc94; 71 | overflow: hidden; 72 | } 73 | .search-hot-text ul{ 74 | margin: 0; 75 | padding: 5px 0; 76 | } 77 | .search-hot-text ul li{ 78 | border-top: 1px solid #f2f2f2; 79 | line-height: 30px; 80 | font-size: 14px; 81 | padding: 0px 25px; 82 | color: #777; 83 | cursor: pointer; 84 | } 85 | .search-hot-text ul li.current{ 86 | background: #f1f1f1; 87 | color: #2196f3; 88 | } 89 | .search-hot-text ul li:hover{ 90 | background: #f1f1f1; 91 | color: #2196f3; 92 | cursor: pointer; 93 | } 94 | .search-hot-text ul li span{ 95 | display: inline-block; 96 | width: 20px; 97 | height: 20px; 98 | font-size: 12px; 99 | line-height: 20px; 100 | text-align: center; 101 | background: #e5e5e5; 102 | margin-right: 10px; 103 | border-radius: 10px; 104 | color: #999; 105 | } 106 | /* 搜索引擎 */ 107 | .search-engine{ 108 | position: absolute; 109 | top: 60px; 110 | left: 0; 111 | width: 100%; 112 | background: #FFF; 113 | padding: 15px 0 0 15px; 114 | border-radius: 5px; 115 | box-shadow: 0px 5px 20px 0px #d8d7d7; 116 | transition: all 0.3s; 117 | -moz-transition: all 0.3s; 118 | -webkit-transition: all 0.3s; 119 | -o-transition: all 0.3s; 120 | display: none; 121 | z-index: 999 122 | } 123 | .search-engine-head{ 124 | overflow: hidden; 125 | margin-bottom: 10px; 126 | padding-right: 15px; 127 | } 128 | .search-engine-tit{ 129 | float: left; 130 | margin: 0; 131 | font-size: 14px; 132 | color: #999; 133 | } 134 | .search-engine-tool{ 135 | float: right; 136 | font-size: 12px; 137 | color: #999; 138 | } 139 | .search-engine-tool > span{ 140 | float: right; 141 | display: inline-block; 142 | width: 25px; 143 | height: 15px; 144 | background-position: 0px 0px; 145 | cursor: pointer 146 | } 147 | .search-engine-tool > span.off{ background-position: -30px 0px } 148 | 149 | .search-engine ul::before{ 150 | content: ''; 151 | width: 0px; 152 | height: 0px; 153 | position: absolute; 154 | top: -15px; 155 | border-top: 8px solid transparent; 156 | border-right: 8px solid transparent; 157 | border-bottom: 8px solid #fff; 158 | border-left: 8px solid transparent; 159 | 160 | } 161 | .search-engine-list::after{ 162 | content: ''; 163 | width: 90px; 164 | height: 20px; 165 | position: absolute; 166 | top: -20px; 167 | left: 1px; 168 | } 169 | .search-engine-list li{ 170 | float: left; 171 | width: 30%; 172 | line-height: 30px; 173 | font-size: 14px; 174 | padding: 5px 10px 5px 10px; 175 | margin: 0 10px 10px 0; 176 | background: #f9f9f9; 177 | color: #999; 178 | cursor: pointer; 179 | padding: 0; 180 | } 181 | .search-engine-list li span{ 182 | width: 25px; 183 | height: 25px; 184 | border-radius: 15px; 185 | float: left; 186 | margin-right: 5px; 187 | margin-top: 2.5px; 188 | } 189 | body.night .board { 190 | background: #2c2e2f; 191 | box-shadow: 0px 0px 6px #00000061; 192 | } 193 | 194 | body.night .board a { 195 | color: #d6d6d6; 196 | } 197 | 198 | body.night .tpwidget_title_hook, 199 | body.night .tpwidget_text_hook { 200 | color: #fdfdfd; 201 | } 202 | 203 | body.night .sidebar-menu { 204 | border-right: #7f8080 1px solid; 205 | } 206 | 207 | body.night .user-info-navbar { 208 | background-color: #232323 !important; 209 | } 210 | body.night .dropdown-menu { 211 | background-color: #232323 !important; 212 | border: 1px solid #888686 !important; 213 | } 214 | 215 | body.night .user-info-navbar .user-info-menu>li>a { 216 | border-bottom: 1px solid #232323 !important; 217 | border-right: 1px solid #232323 !important; 218 | border-left: 1px solid #232323 !important; 219 | } 220 | 221 | body.night .user-info-navbar .user-info-menu>li>a, 222 | .user-info-navbar .user-info-menu>li>a { 223 | height: 76px !important; 224 | } 225 | 226 | body.night .user-info-navbar .user-info-menu>li>a:hover { 227 | border-right: 1px solid #888686 !important; 228 | border-left: 1px solid #888686 !important; 229 | } 230 | 231 | body.night .user-info-navbar .user-info-menu>li { 232 | border: 1px solid #232323 !important; 233 | } 234 | 235 | body.night .user-info-navbar .user-info-menu>li .dropdown-menu.languages li.active a { 236 | background-color: #232323 !important; 237 | color: #979898 !important; 238 | } 239 | 240 | body.night, 241 | body.night #body { 242 | background-color: #2c2e2f !important; 243 | color: #a9a9a9 !important; 244 | } 245 | 246 | body.night .text-gray { 247 | color: #f8f8f8; 248 | } 249 | 250 | body.night .xe-widget.xe-conversations { 251 | background: #2c2e2f; 252 | } 253 | 254 | body.night .box2 { 255 | border: 1px solid #3f4142; 256 | } 257 | 258 | body.night .xe-comment a { 259 | color: #d8d8d8; 260 | } 261 | 262 | body.night .xe-comment p { 263 | color: #979898 !important; 264 | } 265 | 266 | body.night .box2:hover { 267 | box-shadow: 0 26px 40px -24px rgb(255, 255, 255); 268 | -webkit-box-shadow: 0 26px 40px -24px rgba(130, 130, 130, 0.13); 269 | -moz-box-shadow: 0 26px 40px -24px rgba(0, 36, 100, 0.3); 270 | -webkit-transition: all 0.3s cubic-bezier(0.25, 0.1, 0.14, 1.43); 271 | -moz-transition: all 0.3s ease; 272 | -o-transition: all 0.3s ease; 273 | transition: all 0.3s ease-out; 274 | background-color: #232323 !important; 275 | } 276 | 277 | body.night .tpwthwidt .front_37Zqj25, 278 | body.night .tpwthwidt .widget_ctONpAN { 279 | background: #535656; 280 | color: red !important; 281 | } 282 | 283 | body.night .tpwthwidt .weakText_3SLbaEo { 284 | color: rgb(253, 253, 253); 285 | } 286 | 287 | body.night .tpwthwidt .baseText_31obwQ4 { 288 | color: #cccccc; 289 | } 290 | 291 | body.night footer.main-footer { 292 | border-top: 1px solid #414344b5; 293 | background-color: #2c2e2f; 294 | } 295 | 296 | body.night .footer-text a { 297 | color: #a9a9a9; 298 | } 299 | 300 | body.night .footer-text a:hover, 301 | body.night footer-text a:focus { 302 | color: #ffffff; 303 | text-decoration: none 304 | } 305 | 306 | body.night .panel { 307 | background: #2c2e2f; 308 | } 309 | 310 | body.night blockquote { 311 | border-left: 5px solid #000; 312 | } 313 | 314 | body.night .respond a { 315 | color: #cecece; 316 | } 317 | 318 | body.night .respond .textarea { 319 | background-color: #2b2b2b; 320 | margin-top: 50px; 321 | border-radius: 15px; 322 | padding: 10px; 323 | } 324 | 325 | body.night .submit { 326 | color: #a5a5a5; 327 | background-color: #0000008f; 328 | border: 0px; 329 | border-radius: 5px; 330 | padding: 5px 10px; 331 | font-size: 15px; 332 | float: right; 333 | margin-top: 10px; 334 | } 335 | 336 | body.night #search button i { 337 | color: #b1b1b1; 338 | } 339 | 340 | body.night #search-text { 341 | background-color: #464646; 342 | color: #bdbdbd; 343 | } 344 | 345 | body.night .search-type input:checked+label, 346 | .search-type input:hover+label { 347 | background-color: #969696; 348 | } 349 | 350 | body.night .s-type-list { 351 | display: none; 352 | position: absolute; 353 | top: 31px; 354 | padding: 9pt 0; 355 | width: 20pc; 356 | background: #535656; 357 | border-radius: 4px; 358 | box-shadow: 0 0 6px rgba(0, 0, 0, .16); 359 | } 360 | 361 | body.night .xe-comment-entry img { 362 | filter: brightness(95%); 363 | } 364 | 365 | body.night .search-input { 366 | border: 1px solid #424242; 367 | border-radius: 10px; 368 | background-color: #424242; 369 | } 370 | 371 | body.night .search-engine { 372 | background: #424242; 373 | box-shadow: 0px 5px 20px 0px #2c2e2f; 374 | } 375 | 376 | body.night .search-engine-list li { 377 | background: #424242; 378 | } 379 | 380 | .go-up{ 381 | right: 10px !important; 382 | position: fixed !important; 383 | bottom: 20px !important; 384 | height: 20px; 385 | } 386 | 387 | body.night .go-up a { 388 | background-color: rgb(88 88 88) !important; 389 | padding: 15px 20px !important; 390 | border-radius: 50% !important; 391 | } 392 | 393 | body.night .go-up a:hover { 394 | background-color: rgb(123 123 123) !important; 395 | } 396 | 397 | .footer-inner #busuanzi_container_site_pv, 398 | .footer-inner #busuanzi_container_site_uv { 399 | font-weight: bold; 400 | } 401 | 402 | .footer-inner #busuanzi_value_site_pv, 403 | .footer-inner #busuanzi_value_site_uv { 404 | color: #373e4a; 405 | } 406 | 407 | .main-menu #busuanzi_value_site_pv, 408 | .main-menu #busuanzi_value_site_uv { 409 | float: right; 410 | } 411 | 412 | .sidebar-menu .main-menu a>i{ 413 | width: 16px; 414 | } 415 | -------------------------------------------------------------------------------- /source/css/nav.min.css: -------------------------------------------------------------------------------- 1 | .box2{height:86px;cursor:pointer;border-radius:4px;padding:0 30px 0 30px;background-color:#fff;border-radius:4px;border:1px solid #e4ecf3;margin:20px 0 0 0;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}.box2:hover{transform:translateY(-6px);-webkit-transform:translateY(-6px);-moz-transform:translateY(-6px);box-shadow:0 26px 40px -24px rgba(0,36,100,.3);-webkit-box-shadow:0 26px 40px -24px rgba(0,36,100,.3);-moz-box-shadow:0 26px 40px -24px rgba(0,36,100,.3);-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}.xe-comment-entry img{float:left;display:block;margin-right:10px}.xe-comment{transform:translateY(-50%);position:absolute;margin-left:50px;top:50%}.xe-comment p{margin-bottom:0;margin-right:15px}.overflowClip_1{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.overflowClip_2{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.submit-tag{margin-top:50px}.img-circle{padding:7px 0} -------------------------------------------------------------------------------- /source/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/favicon.png -------------------------------------------------------------------------------- /source/images/flags/flag-cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/flags/flag-cn.png -------------------------------------------------------------------------------- /source/images/flags/flag-us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/flags/flag-us.png -------------------------------------------------------------------------------- /source/images/logo-collapsed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/logo-collapsed@2x.png -------------------------------------------------------------------------------- /source/images/logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/logo@2x.png -------------------------------------------------------------------------------- /source/images/logo_dark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/logo_dark@2x.png -------------------------------------------------------------------------------- /source/images/logos/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/logos/github.png -------------------------------------------------------------------------------- /source/images/logos/myblog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/logos/myblog.png -------------------------------------------------------------------------------- /source/images/off_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/off_on.png -------------------------------------------------------------------------------- /source/images/search_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/search_icon.png -------------------------------------------------------------------------------- /source/images/webstack_banner_cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/webstack_banner_cn.png -------------------------------------------------------------------------------- /source/images/webstack_icon_producthunt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HCLonely/hexo-theme-webstack/2c0659650696d14deb3496816b5cfb9606c85578/source/images/webstack_icon_producthunt.png -------------------------------------------------------------------------------- /source/js/footer.js: -------------------------------------------------------------------------------- 1 | 2 | $(document).ready(function () { 3 | //img lazy loaded 4 | const observer = lozad(); 5 | observer.observe(); 6 | 7 | $(document).on('click', '.has-sub', function () { 8 | var _this = $(this) 9 | if (!$(this).hasClass('expanded')) { 10 | setTimeout(function () { 11 | _this.find('ul').attr("style", "") 12 | }, 300); 13 | 14 | } else { 15 | $('.has-sub ul').each(function (id, ele) { 16 | var _that = $(this) 17 | if (_this.find('ul')[0] != ele && !expandAll) { 18 | setTimeout(function () { 19 | _that.attr("style", "") 20 | }, 300); 21 | } 22 | }) 23 | } 24 | }) 25 | $('.user-info-menu .hidden-sm').click(function () { 26 | if ($('.sidebar-menu').hasClass('collapsed')) { 27 | $('.has-sub.expanded > ul').attr("style", "") 28 | } else { 29 | $('.has-sub.expanded > ul').show() 30 | } 31 | }) 32 | $("#main-menu li ul li").click(function () { 33 | $(this).siblings('li').removeClass('active'); // 删除其他兄弟元素的样式 34 | $(this).addClass('active'); // 添加当前元素的样式 35 | }); 36 | $("a.smooth").click(function (ev) { 37 | ev.preventDefault(); 38 | 39 | public_vars.$mainMenu.add(public_vars.$sidebarProfile).toggleClass('mobile-is-visible'); 40 | ps_destroy(); 41 | $("html, body").animate({ 42 | scrollTop: $($(this).attr("href")).offset().top - 30 43 | }, { 44 | duration: 500, 45 | easing: "swing" 46 | }); 47 | }); 48 | return false; 49 | }); 50 | 51 | var href = ""; 52 | var pos = 0; 53 | $("a.smooth").click(function (e) { 54 | $("#main-menu li").each(function () { 55 | $(this).removeClass("active"); 56 | }); 57 | $(this).parent("li").addClass("active"); 58 | e.preventDefault(); 59 | href = $(this).attr("href"); 60 | pos = $(href).position().top - 30; 61 | }); 62 | (function () { 63 | if (document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") === '') { 64 | if (new Date().getHours() > 22 || new Date().getHours() < 6) { 65 | document.body.classList.add('night'); 66 | document.cookie = "night=1;path=/"; 67 | console.log('夜间模式开启'); 68 | } else { 69 | document.body.classList.remove('night'); 70 | document.cookie = "night=0;path=/"; 71 | console.log('夜间模式关闭'); 72 | } 73 | } else { 74 | var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") || '0'; 75 | if (night == '0') { 76 | document.body.classList.remove('night'); 77 | } else if (night == '1') { 78 | document.body.classList.add('night'); 79 | } 80 | } 81 | })(); 82 | -------------------------------------------------------------------------------- /source/js/header.js: -------------------------------------------------------------------------------- 1 | function search(searchIconUrl) { 2 | $(".search-icon").css("opacity", "1"); 3 | var listIndex = -1; 4 | var hotList = 0; 5 | var searchData = userDefinedSearchData.custom ? userDefinedSearchData : { 6 | "thisSearch": "https://www.baidu.com/s?wd=", 7 | "thisSearchIcon": "url(" + searchIconUrl + ")", 8 | "hotStatus": true, 9 | "custom": false, 10 | "data": [{ 11 | name: "百度", 12 | img: "url(" + searchIconUrl + ") -80px 0px", 13 | position: "0px 0px", 14 | url: "https://www.baidu.com/s?wd=" 15 | }, { 16 | name: "谷歌", 17 | img: "url(" + searchIconUrl + ") -105px 0px", 18 | position: "-40px 0px", 19 | url: "https://www.google.com/search?q=" 20 | }, { 21 | name: "必应", 22 | img: "url(" + searchIconUrl + ") -80px -25px", 23 | position: "0px -40px", 24 | url: "https://cn.bing.com/search?q=" 25 | }, { 26 | name: "好搜", 27 | img: "url(" + searchIconUrl + ") -105px -25px", 28 | position: "-40px -40px", 29 | url: "https://www.so.com/s?q=" 30 | }, { 31 | name: "搜狗", 32 | img: "url(" + searchIconUrl + ") -80px -50px", 33 | position: "0px -80px", 34 | url: "https://www.sogou.com/web?query=" 35 | }, { 36 | name: "淘宝", 37 | img: "url(" + searchIconUrl + ") -105px -50px", 38 | position: "-40px -80px", 39 | url: "https://s.taobao.com/search?q=" 40 | }, { 41 | name: "京东", 42 | img: "url(" + searchIconUrl + ") -80px -75px", 43 | position: "0px -120px", 44 | url: "http://search.jd.com/Search?keyword=" 45 | }, { 46 | name: "天猫", 47 | img: "url(" + searchIconUrl + ") -105px -75px", 48 | position: "-40px -120px", 49 | url: "https://list.tmall.com/search_product.htm?q=" 50 | }, { 51 | name: "1688", 52 | img: "url(" + searchIconUrl + ") -80px -100px", 53 | position: "0px -160px", 54 | url: "https://s.1688.com/selloffer/offer_search.htm?keywords=" 55 | }, { 56 | name: "知乎", 57 | img: "url(" + searchIconUrl + ") -105px -100px", 58 | position: "-40px -160px", 59 | url: "https://www.zhihu.com/search?type=content&q=" 60 | }, { 61 | name: "微博", 62 | img: "url(" + searchIconUrl + ") -80px -125px", 63 | position: "0px -200px", 64 | url: "https://s.weibo.com/weibo/" 65 | }, { 66 | name: "B站", 67 | img: "url(" + searchIconUrl + ") -105px -125px", 68 | position: "-40px -200px", 69 | url: "http://search.bilibili.com/all?keyword=" 70 | }, { 71 | name: "豆瓣", 72 | img: "url(" + searchIconUrl + ") -80px -150px", 73 | position: "0px -240px", 74 | url: "https://www.douban.com/search?source=suggest&q=" 75 | }, { 76 | name: "优酷", 77 | img: "url(" + searchIconUrl + ") -105px -150px", 78 | position: "-40px -240px", 79 | url: "https://so.youku.com/search_video/q_" 80 | }, { 81 | name: "GitHub", 82 | img: "url(" + searchIconUrl + ") -80px -175px", 83 | position: "0px -280px", 84 | url: "https://github.com/search?utf8=✓&q=" 85 | }] 86 | }; 87 | var localSearchData = localStorage.getItem("searchData"); 88 | if (localSearchData && (searchData.custom === localSearchData.custom)) { 89 | searchData = JSON.parse(localSearchData) 90 | } 91 | function filterChildren(element) { 92 | var thisText = $(element).contents().filter(function (index, content) { 93 | return content.nodeType === 3 94 | }).text().trim(); 95 | return thisText 96 | } 97 | function getHotkeyword(value) { 98 | $.ajax({ 99 | type: "GET", 100 | url: "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su", 101 | async: true, 102 | data: { 103 | wd: value 104 | }, 105 | dataType: "jsonp", 106 | jsonp: "cb", 107 | success: function (res) { 108 | $("#box ul").text(""); 109 | hotList = res.s.length; 110 | if (hotList) { 111 | $("#box").css("display", "block"); 112 | for (var i = 0; i < hotList; i++) { 113 | $("#box ul").append("
  • " + (i + 1) + " " + res.s[i] + "
  • "); 114 | $("#box ul li").eq(i).click(function () { 115 | var thisText = filterChildren(this); 116 | $("#txt").val(thisText); 117 | window.open(searchData.thisSearch + thisText); 118 | $("#box").css("display", "none") 119 | }); 120 | if (i === 0) { 121 | $("#box ul li").eq(i).css({ 122 | "border-top": "none" 123 | }); 124 | $("#box ul span").eq(i).css({ 125 | "color": "#fff", 126 | "background": "#f54545" 127 | }) 128 | } else { 129 | if (i === 1) { 130 | $("#box ul span").eq(i).css({ 131 | "color": "#fff", 132 | "background": "#ff8547" 133 | }) 134 | } else { 135 | if (i === 2) { 136 | $("#box ul span").eq(i).css({ 137 | "color": "#fff", 138 | "background": "#ffac38" 139 | }) 140 | } 141 | } 142 | } 143 | } 144 | } else { 145 | $("#box").css("display", "none") 146 | } 147 | }, 148 | error: function (res) { 149 | console.log(res) 150 | } 151 | }) 152 | } 153 | $("#txt").keyup(function (e) { 154 | if ($(this).val()) { 155 | if (e.keyCode == 38 || e.keyCode == 40 || !searchData.hotStatus) { 156 | return 157 | } 158 | getHotkeyword($(this).val()) 159 | } else { 160 | $(".search-clear").css("display", "none"); 161 | $("#box").css("display", "none") 162 | } 163 | }); 164 | $("#txt").keydown(function (e) { 165 | if (e.keyCode === 40) { 166 | listIndex === (hotList - 1) ? listIndex = 0 : listIndex++; 167 | $("#box ul li").eq(listIndex).addClass("current").siblings().removeClass("current"); 168 | var hotValue = filterChildren($("#box ul li").eq(listIndex)); 169 | $("#txt").val(hotValue) 170 | } 171 | if (e.keyCode === 38) { 172 | if (e.preventDefault) { 173 | e.preventDefault() 174 | } 175 | if (e.returnValue) { 176 | e.returnValue = false 177 | } 178 | listIndex === 0 || listIndex === -1 ? listIndex = (hotList - 1) : listIndex--; 179 | $("#box ul li").eq(listIndex).addClass("current").siblings().removeClass("current"); 180 | var hotValue = filterChildren($("#box ul li").eq(listIndex)); 181 | $("#txt").val(hotValue) 182 | } 183 | if (e.keyCode === 13) { 184 | window.open(searchData.thisSearch + $("#txt").val()); 185 | $("#box").css("display", "none"); 186 | $("#txt").blur(); 187 | $("#box ul li").removeClass("current"); 188 | listIndex = -1 189 | } 190 | }); 191 | $("#txt").focus(function () { 192 | $(".search-box").css("box-show", "inset 0 1px 2px rgba(27,31,35,.075), 0 0 0 0.2em rgba(3,102,214,.3)"); 193 | if ($(this).val() && searchData.hotStatus) { 194 | getHotkeyword($(this).val()) 195 | } 196 | }); 197 | $("#txt").blur(function () { 198 | setTimeout(function () { 199 | $("#box").css("display", "none") 200 | }, 250) 201 | }); 202 | for (var i = 0; i < searchData.data.length; i++) { 203 | $(".search-engine-list").append('
  • ' + 204 | searchData.data[i].name + "
  • ") 205 | } 206 | $(".search-icon, .search-engine").hover(function () { 207 | $(".search-engine").css("display", "block") 208 | }, function () { 209 | $(".search-engine").css("display", "none") 210 | }); 211 | $("#hot-btn").click(function () { 212 | $(this).toggleClass("off"); 213 | searchData.hotStatus = !searchData.hotStatus; 214 | localStorage.searchData = JSON.stringify(searchData) 215 | }); 216 | searchData.hotStatus ? $("#hot-btn").removeClass("off") : $("#hot-btn").addClass("off"); 217 | $(".search-engine-list li").click(function () { 218 | var index = $(this).index(); 219 | searchData.thisSearchIcon = searchData.custom ? searchData.data[index].img : searchData.data[index].position; 220 | if (searchData.custom) { 221 | $(".search-icon").css("background", searchData.thisSearchIcon + ' no-repeat').css("background-size", 'cover'); 222 | } else { 223 | $(".search-icon").css("background-position", searchData.thisSearchIcon); 224 | } 225 | searchData.thisSearch = searchData.data[index].url; 226 | $(".search-engine").css("display", "none"); 227 | localStorage.searchData = JSON.stringify(searchData) 228 | }); 229 | if (searchData.custom) { 230 | $(".search-icon").css("background", searchData.thisSearchIcon + ' no-repeat').css("background-size", 'cover'); 231 | } else { 232 | $(".search-icon").css("background-position", searchData.thisSearchIcon); 233 | } 234 | $("#search-btn").click(function () { 235 | var textValue = $("#txt").val(); 236 | if (textValue) { 237 | window.open(searchData.thisSearch + textValue); 238 | $("#box ul").html("") 239 | } else { 240 | layer.msg("请输入关键词!", { 241 | time: 500 242 | }, function () { 243 | $("#txt").focus() 244 | }) 245 | } 246 | }) 247 | } 248 | 249 | //夜间模式切换 250 | function switchNightMode() { 251 | var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1") || '0'; 252 | if (night == '0') { 253 | document.body.classList.add('night'); 254 | document.cookie = "night=1;path=/" 255 | } else { 256 | document.body.classList.remove('night'); 257 | document.cookie = "night=0;path=/" 258 | } 259 | } 260 | -------------------------------------------------------------------------------- /source/js/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document); -------------------------------------------------------------------------------- /source/js/joinable.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Bunch of scripts included in one file to reduce number HTTP requests 4 | * 5 | */ 6 | 7 | 8 | 9 | /*! 10 | Autosize v1.18.9 - 2014-05-27 11 | Automatically adjust textarea height based on user input. 12 | (c) 2014 Jack Moore - http://www.jacklmoore.com/autosize 13 | license: http://www.opensource.org/licenses/mit-license.php 14 | */ 15 | (function(e){var t,o={className:"autosizejs",id:"autosizejs",append:"\n",callback:!1,resizeDelay:10,placeholder:!0},i='