├── .gitignore ├── .travis.yml ├── Gruntfile.js ├── LICENSE ├── README.cn.md ├── README.md ├── _config.yml ├── languages ├── de.yml ├── default.yml ├── en.yml ├── es.yml ├── fr.yml ├── nl.yml ├── no.yml ├── pt.yml ├── ru.yml ├── zh-CN.yml └── zh-TW.yml ├── layout ├── _partial │ ├── after-footer.ejs │ ├── archive-post.ejs │ ├── archive.ejs │ ├── article.ejs │ ├── baidu-analytics.ejs │ ├── busuanzi-analytics.ejs │ ├── cnzz-analytics.ejs │ ├── comment.ejs │ ├── copyright.ejs │ ├── dialog.ejs │ ├── donate.ejs │ ├── facebook-sdk.ejs │ ├── footer.ejs │ ├── gauges-analytics.ejs │ ├── google-analytics.ejs │ ├── head.ejs │ ├── header-post.ejs │ ├── header.ejs │ ├── mobile-nav.ejs │ ├── post │ │ ├── busuanzi-analytics.ejs │ │ ├── category.ejs │ │ ├── date.ejs │ │ ├── edit.ejs │ │ ├── gallery.ejs │ │ ├── mathjax.ejs │ │ ├── nav.ejs │ │ ├── tag.ejs │ │ ├── title.ejs │ │ └── urlconvert.ejs │ ├── sidebar.ejs │ └── tencent-analytics.ejs ├── _widget │ ├── archive.ejs │ ├── category.ejs │ ├── curtains.ejs │ ├── recent_posts.ejs │ ├── social.ejs │ ├── tag.ejs │ └── tagcloud.ejs ├── archive.ejs ├── categories.ejs ├── category.ejs ├── index.ejs ├── layout.ejs ├── page.ejs ├── post.ejs ├── search │ ├── baidu.ejs │ ├── index-mobile.ejs │ ├── index.ejs │ ├── insight.ejs │ └── swiftype.ejs ├── tag.ejs └── tags.ejs ├── package.json ├── scripts └── fancybox.js └── source ├── css ├── _extend.styl ├── _partial │ ├── archive.styl │ ├── article.styl │ ├── comment.styl │ ├── footer.styl │ ├── header-post.styl │ ├── header.styl │ ├── highlight.styl │ ├── insight.styl │ ├── mobile.styl │ ├── sidebar-aside.styl │ ├── sidebar-bottom.styl │ └── sidebar.styl ├── _util │ ├── grid.styl │ └── mixin.styl ├── _variables.styl ├── archive.css ├── bootstrap.css ├── dialog.css ├── fonts │ ├── FontAwesome.otf │ ├── FuturaPTBold.otf │ ├── FuturaPTBoldOblique.otf │ ├── FuturaPTBook.otf │ ├── FuturaPTBookOblique.otf │ ├── FuturaPTMedium.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── header-post.css ├── home.css ├── images │ ├── avatar.jpg │ ├── home-bg.jpg │ ├── homelogo.jpg │ ├── mylogo.jpg │ ├── pose.jpg │ ├── rocket.png │ └── sample.jpg ├── style.styl └── vdonate.css ├── fancybox ├── blank.gif ├── fancybox_loading.gif ├── fancybox_loading@2x.gif ├── fancybox_overlay.png ├── fancybox_sprite.png ├── fancybox_sprite@2x.png ├── helpers │ ├── fancybox_buttons.png │ ├── jquery.fancybox-buttons.css │ ├── jquery.fancybox-buttons.js │ ├── jquery.fancybox-media.js │ ├── jquery.fancybox-thumbs.css │ └── jquery.fancybox-thumbs.js ├── jquery.fancybox.css ├── jquery.fancybox.js └── jquery.fancybox.pack.js ├── js ├── bootstrap.js ├── dialog.js ├── home.js ├── insight.js ├── jquery-3.1.1.min.js ├── scripts.js ├── totop.js └── vdonate.js └── preview ├── browser-support.png ├── code-theme.jpg ├── donation-btn.png ├── preview-abstract.png ├── preview-mobile.png ├── preview-pc.png └── theme-color.png /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | tmp -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "4.1" 4 | install: 5 | npm install -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt){ 2 | grunt.initConfig({ 3 | gitclone: { 4 | fontawesome: { 5 | options: { 6 | repository: 'https://github.com/FortAwesome/Font-Awesome.git', 7 | directory: 'tmp/fontawesome' 8 | }, 9 | }, 10 | fancybox: { 11 | options: { 12 | repository: 'https://github.com/fancyapps/fancyBox.git', 13 | directory: 'tmp/fancybox' 14 | } 15 | } 16 | }, 17 | copy: { 18 | fontawesome: { 19 | expand: true, 20 | cwd: 'tmp/fontawesome/fonts/', 21 | src: ['**'], 22 | dest: 'source/css/fonts/' 23 | }, 24 | fancybox: { 25 | expand: true, 26 | cwd: 'tmp/fancybox/source/', 27 | src: ['**'], 28 | dest: 'source/fancybox/' 29 | } 30 | }, 31 | _clean: { 32 | tmp: ['tmp'], 33 | fontawesome: ['source/css/fonts'], 34 | fancybox: ['source/fancybox'] 35 | } 36 | }); 37 | 38 | require('load-grunt-tasks')(grunt); 39 | 40 | grunt.renameTask('clean', '_clean'); 41 | 42 | grunt.registerTask('fontawesome', ['gitclone:fontawesome', 'copy:fontawesome', '_clean:tmp']); 43 | grunt.registerTask('fancybox', ['gitclone:fancybox', 'copy:fancybox', '_clean:tmp']); 44 | grunt.registerTask('default', ['gitclone', 'copy', '_clean:tmp']); 45 | grunt.registerTask('clean', ['_clean']); 46 | }; -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) [2016] [iTimeTraveler] 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. -------------------------------------------------------------------------------- /README.cn.md: -------------------------------------------------------------------------------- 1 | # Hiker 2 | 3 | [![Build Status](https://travis-ci.org/iTimeTraveler/hexo-theme-hiker.svg?branch=master)](https://travis-ci.org/iTimeTraveler/hexo-theme-hiker) [![Gitter](https://camo.githubusercontent.com/079d8764b5eebffbb7158fb375df0959029ab2c3/68747470733a2f2f6261646765732e6769747465722e696d2f6865786f2d7468656d652d696e6469676f2f4c6f6262792e737667)](https://gitter.im/hexo-theme-hiker/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link) 4 | 5 | 6 | An attractive, exquisite theme for [Hexo]. named "Hiker", short for "HikerNews". 7 | 8 | [**☞ 在线预览**](https://itimetraveler.github.io/hexo-theme-hiker/) |  [**Hiker问题交流群**](https://gitter.im/hexo-theme-hiker/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link) 9 | 10 | 11 | ![Desktop Preview](https://itimetraveler.github.io/hexo-theme-hiker/2016/10/24/Hiker%E4%B8%BB%E9%A2%98%E9%A2%84%E8%A7%88/homepage-index.png) 12 | ![Post Preview](https://itimetraveler.github.io/hexo-theme-hiker/2016/10/24/Hiker%E4%B8%BB%E9%A2%98%E9%A2%84%E8%A7%88/article-chrome.png) 13 | ![Mobile Preview](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/preview-mobile.png?raw=true) 14 | 15 | 16 | 17 | 以上Demo站点的源文件在这里,大家有需要的可以参考:https://github.com/iTimeTraveler/hexo-theme-hiero/tree/site-source 18 | 19 | ## 安装步骤 20 | 21 | 1. 从GitHub上获取代码 22 | 23 | ```shell 24 | $ git clone https://github.com/iTimeTraveler/hexo-theme-hiker.git themes/hiker 25 | ``` 26 | 2. 启用 27 | 28 | 把Hexo主目录下的 `_config.yml` 文件中的字段 `theme` 修改为 `hiker`. 29 | ``` 30 | # Extensions 31 | ## Plugins: http://hexo.io/plugins/ 32 | ## Themes: http://hexo.io/themes/ 33 | theme: hiker 34 | ``` 35 | 3. 更新 36 | 37 | ```shell 38 | $ cd themes/Hiker 39 | $ git pull 40 | ``` 41 | 42 | 43 | ## 特性 44 | 45 | ### 自定义首页背景 46 | 47 | 您可以将选择的大图放到 `YOUR_HEXO_SITE\themes\hiker\source\css\images` 文件夹下. 然后更改 hiker/_config.yml文件里的`home_background_image`字段. 48 | 49 | ```yml 50 | # Homepage 51 | # eg. home_background_image: [css/images/home-bg.jpg, http://t.cn/RMbvEza] 52 | # eg. mode: image | polyline | trianglify 53 | home_background_image: 54 | enable: true 55 | mode: image 56 | rolling: true 57 | url: [css/images/home-bg.jpg, css/images/sample.jpg, https://source.unsplash.com/collection/954550/1920x1080] 58 | ``` 59 | 60 | 首页背景填充方式有三种可选mode: 61 | 62 | - `image`: 大图模式 63 | - `trianglify`: 多边形渐变背景 64 | - `polyline`: 随机彩色折线 65 | 66 | 默认配置为`image`模式,也就是大图模式。多边形渐变背景`polyline`模式来自[Trianglify](https://github.com/qrohlf/trianglify)大致如下图: 67 | 68 | ![](https://cloud.githubusercontent.com/assets/347189/6771063/f8b0af46-d090-11e4-8d4c-6c7ef5bd9d37.png) 69 | 70 | 如果你不中意以上两种背景填充方式,可以选择随机彩色折线`polyline`模式,长相参考下图。 71 | 72 | > !!注意:如果在使用`image`模式时`url`为空(`enable`仍然保持true), 主题也会自动使用下面这种**`漂亮的随机线条` **填充(也就是会自动退化为`polyline`模式): 73 | 74 | ![](https://itimetraveler.github.io/hexo-theme-hiker/2016/10/24/Hiker%E4%B8%BB%E9%A2%98%E9%A2%84%E8%A7%88/home-no-background1.png) 75 | 76 | 77 | ### Code 色彩主题 78 | 79 | Hiker 使用[Tomorrow Theme](https://github.com/chriskempson/tomorrow-theme) 作为代码高亮的配色. 总共有六种选择: `default`, `normal`, `night`, `night blue`, `night bright`, `night eighties` 80 | 81 | ![code `default` theme Preview](https://itimetraveler.github.io/hexo-theme-hiker/2016/10/24/Hiker%E4%B8%BB%E9%A2%98%E9%A2%84%E8%A7%88/code-theme-default.png) 82 | 83 | 默认高亮配色如上图。 另外的五种配色如下. 84 | 85 | ![code themes](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/code-theme.jpg?raw=true) 86 | 87 | Modify `highlight_theme` in hiker/_config.yml. 88 | 89 | ```yml 90 | # Code Highlight theme 91 | # Available value: 92 | # default | normal | night | night eighties | night blue | night bright 93 | # https://github.com/chriskempson/tomorrow-theme 94 | highlight_theme: default 95 | ``` 96 | 97 | ### 博客主题色 98 | 99 | Hiker 为你的博客提供了五种可选的主题色,可以配置成`random`, 每次生成博客时会自动随机使用一个主题色. 100 | 101 | ![theme colors](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/theme-color.png?raw=true) 102 | 103 | - orange 104 | - blue 105 | - red 106 | - green 107 | - black 108 | 109 | You can modify `theme_color` in hiker/_config.yml. 110 | 111 | ```yml 112 | # Article theme color 113 | # Available value: 114 | # random | orange | blue | red | green | black 115 | theme_color: random 116 | ``` 117 | 118 | ### 夜间模式 119 | 120 | 只有在文章阅读页面,点击左上角的logo图片,就能打开设置对话框,操作如下图 121 | 122 | ![](https://itimetraveler.github.io/hexo-theme-hiker/2016/10/24/Hiker%E4%B8%BB%E9%A2%98%E9%A2%84%E8%A7%88/night-mode.gif) 123 | 124 | 125 | ### 站内搜索 126 | 127 | Hiker 使用 `Insight Search` 实现了站内搜索,在_config.yml文件中启用如下. 128 | 129 | ```yml 130 | # Search 131 | search: 132 | insight: true # you need to install `hexo-generator-json-content` before using Insight Search 133 | swiftype: # enter swiftype install key here 134 | baidu: false # you need to disable other search engines to use Baidu search, options: true, false 135 | ``` 136 | 137 | > **!注意**: 在使用搜索功能前必须在Hexo目录下使用以下命令安装 `hexo-generator-json-content` 插件. 138 | 139 | ```bash 140 | $ npm install -S hexo-generator-json-content 141 | ``` 142 | 143 | ### Fancybox 144 | 145 | Hiker使用[Fancybox]来浏览展示您文章中的图片,支持以下方式在文章中添加图片: 146 | 147 | ``` 148 | ![img caption](img url) 149 | 150 | {% fancybox img_url [img_thumbnail] [img_caption] %} 151 | ``` 152 | 153 | ### 侧边栏 154 | 155 | `sidebar`(侧边栏位置)可以设置为 `left` , `right`, `bottom`. 156 | 157 | Hiker 有以下5种侧边栏插件: 158 | 159 | - category 160 | - tag 161 | - tagcloud 162 | - archives 163 | - recent_posts 164 | 165 | All of them are enabled by default. You can edit them in `widget` setting. 166 | 167 | 168 | 169 | ### 打赏捐赠按钮 170 | 171 | ![](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/donation-btn.png) 172 | 173 | 每篇文章最后显示打赏按钮,目前仅支持微信支付和支付宝两种打赏方式。您可以在文件 `hiker/_config.yml` 中配置您的微信、支付宝付款二维码图片的URL: 174 | 175 | ### 主页文章摘要 176 | ![](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/preview-abstract.png) 177 | 178 | 主页文章默认开启摘要模式 179 | ```yml 180 | # 开启主页摘要 181 | post_excerpt: true 182 | 183 | ``` 184 | 185 | 186 | ```yml 187 | # donation button 188 | donate: 189 | enable: true 190 | message: '如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!' 191 | wechatImage: https://your_WECHAT_PAY_ImageUrl 192 | alipayImage: https://your_ALIPAY_ImageUrl 193 | ``` 194 | 195 | 196 | 197 | ### 评论 198 | 199 | 已完全支持原生Disqus、livere(来必力)、wumii(无觅)评论系统。因多说、网易云跟帖均已停止服务,在国内建议大家使用相对稳定的来必力评论系统。在文件 `hiker/_config.yml` 中修改以下代码片段: 200 | 201 | ```yml 202 | # comment ShortName, you can choose only ONE to display. 203 | gentie_productKey: #网易云跟帖your-gentie-product-key 204 | duoshuo_shortname: 205 | disqus_shortname: 206 | livere_shortname: MTAyMC8yOTQ4MS82MDQ5 207 | uyan_uid: 208 | wumii: 209 | ``` 210 | 211 | - #### 网易云跟帖说明(已停止服务) 212 | 213 | 登陆 [网易云跟帖](https://gentie.163.com/) 获取你的 Product Key。请注意,您在**`云跟帖管理后台设置的域名必须跟您站点的域名一致`**。在本地测试时,需要做两步骤前置设定: 214 | 215 | 1. 修改 hosts 文件,将您域名的请求指向本地。例如:127.0.0.1 yoursite.com 216 | 2. 修改 Hexo 监听的端口为 80:`hexo s --debug -p 80` 217 | 218 | 测试完成后请将 hosts 文件中的域名映射删除即可。 219 | 220 | ## 支持的浏览器 221 | 222 | ![](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/browser-support.png?raw=true) 223 | 224 | 225 | ## Contributing 226 | 227 | 欢迎大家有各种问题和改进建议的,直接提issue或者评论,或者pull request都行。我会尽量抽时间和大家交流。刚接触Hexo不久,疏忽不足之处,还望大家海涵! 228 | 229 | 230 | [Hexo]: https://hexo.io/ 231 | [Fancybox]: http://fancyapps.com/fancybox/ 232 | [Font Awesome]: http://fontawesome.io/ 233 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hiker 2 | 3 | [![Gitter](https://camo.githubusercontent.com/079d8764b5eebffbb7158fb375df0959029ab2c3/68747470733a2f2f6261646765732e6769747465722e696d2f6865786f2d7468656d652d696e6469676f2f4c6f6262792e737667)](https://gitter.im/hexo-theme-hiker/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link) [![Build Status](https://travis-ci.org/iTimeTraveler/hexo-theme-hiker.svg?branch=master)](https://travis-ci.org/iTimeTraveler/hexo-theme-hiker) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/LICENSE) 4 | 5 | 6 | An attractive, exquisite theme for [Hexo]. named "Hiker", short for "HikerNews". 7 | 8 | [**☞ Live Preview**](https://itimetraveler.github.io/hexo-theme-hiker/) | [**✎ Hiker 中文版使用文档**](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/README.cn.md) 9 | 10 | 11 | ![Desktop Preview](https://itimetraveler.github.io/hexo-theme-hiker/2016/10/24/Hiker%E4%B8%BB%E9%A2%98%E9%A2%84%E8%A7%88/homepage-index.png) 12 | ![Post Preview](https://itimetraveler.github.io/hexo-theme-hiker/2016/10/24/Hiker%E4%B8%BB%E9%A2%98%E9%A2%84%E8%A7%88/article-chrome.png) 13 | ![Mobile Preview](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/preview-mobile.png?raw=true) 14 | 15 | 16 | > This is DEMO source which you can refer to: https://github.com/iTimeTraveler/hexo-theme-hiero/tree/site-source 17 | 18 | 19 | ## Installation 20 | 21 | 1. Get it from GitHub 22 | 23 | ```shell 24 | $ git clone https://github.com/iTimeTraveler/hexo-theme-hiker.git themes/hiker 25 | ``` 26 | 2. Enable 27 | 28 | Modify `theme` setting in `_config.yml` to `hiker`. 29 | ``` 30 | # Extensions 31 | ## Plugins: http://hexo.io/plugins/ 32 | ## Themes: http://hexo.io/themes/ 33 | theme: hiker 34 | ``` 35 | 3. Update 36 | 37 | ```shell 38 | $ cd themes/Hiker 39 | $ git pull 40 | ``` 41 | 42 | 43 | ## Features 44 | 45 | ### Homepage background 46 | 47 | You could place the image file in `YOUR_HEXO_SITE\themes\hiker\source\css\images` directory. and modify `home_background_image` in hiker/_config.yml. 48 | 49 | ```yml 50 | # Homepage 51 | # eg. home_background_image: [css/images/home-bg.jpg, http://t.cn/RMbvEza] 52 | # eg. mode: image | polyline | trianglify 53 | home_background_image: 54 | enable: true 55 | mode: image 56 | rolling: true 57 | url: [css/images/home-bg.jpg, css/images/sample.jpg, https://source.unsplash.com/collection/954550/1920x1080] 58 | ``` 59 | 60 | There are 3 modes to select: 61 | 62 | - `image` 63 | - `polyline` 64 | - `trianglify` 65 | 66 | `image` mode is default, `trianglify` mode is from [Trianglify](https://github.com/qrohlf/trianglify), looks like below. 67 | 68 | ![](https://cloud.githubusercontent.com/assets/347189/6771063/f8b0af46-d090-11e4-8d4c-6c7ef5bd9d37.png) 69 | 70 | `polyline` mode: if you DON'T want any image as your homepage background, you can use this mode. Or you can keep `enable` true, then set `url` of `home_background_image` empty in hiker/_config.yml, you will have an default homepage with **random decorative pattern**. 71 | 72 | ![](https://itimetraveler.github.io/hexo-theme-hiker/2016/10/24/Hiker%E4%B8%BB%E9%A2%98%E9%A2%84%E8%A7%88/home-no-background1.png) 73 | 74 | 75 | 76 | 77 | ### Code Highlight Theme 78 | 79 | Hiker use [Tomorrow Theme](https://github.com/chriskempson/tomorrow-theme) for your code block. We have six options in total: `default`, `normal`, `night`, `night blue`, `night bright`, `night eighties` 80 | 81 | ![code `default` theme Preview](https://itimetraveler.github.io/hexo-theme-hiker/2016/10/24/Hiker%E4%B8%BB%E9%A2%98%E9%A2%84%E8%A7%88/code-theme-default.png) 82 | 83 | Above preview picture is default theme. the image below show other five Highlight themes. 84 | 85 | ![code themes](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/code-theme.jpg?raw=true) 86 | 87 | Modify `highlight_theme` in hiker/_config.yml. 88 | 89 | ```yml 90 | # Code Highlight theme 91 | # Available value: 92 | # default | normal | night | night eighties | night blue | night bright 93 | # https://github.com/chriskempson/tomorrow-theme 94 | highlight_theme: default 95 | ``` 96 | 97 | ### Blog Theme Color 98 | 99 | Hiker provide five color themes for your blog. 100 | 101 | ![theme colors](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/theme-color.png?raw=true) 102 | 103 | - orange 104 | - blue 105 | - red 106 | - green 107 | - black 108 | 109 | You can modify `theme_color` in hiker/_config.yml. 110 | 111 | ```yml 112 | # Article theme color 113 | # Available value: 114 | # random | orange | blue | red | green | black 115 | theme_color: random 116 | ``` 117 | 118 | ### Night mode 119 | 120 | Just for article reading. In article page, you can click the **logo image of header** to switch to Night mode. 121 | 122 | ![](https://itimetraveler.github.io/hexo-theme-hiker/2016/10/24/Hiker%E4%B8%BB%E9%A2%98%E9%A2%84%E8%A7%88/night-mode.gif) 123 | 124 | 125 | ### Search 126 | 127 | Hiker use `Insight Search` to help you search anything inside your site without any third-party plugin. 128 | 129 | ```yml 130 | # Search 131 | search: 132 | insight: true # you need to install `hexo-generator-json-content` before using Insight Search 133 | swiftype: # enter swiftype install key here 134 | baidu: false # you need to disable other search engines to use Baidu search, options: true, false 135 | ``` 136 | 137 | > Attention: You need to install `hexo-generator-json-content` before using Insight Search. 138 | 139 | ```bash 140 | $ npm install -S hexo-generator-json-content 141 | ``` 142 | 143 | ### Fancybox 144 | 145 | Hiker uses [Fancybox] to showcase your photos. You can use Markdown syntax or fancybox tag plugin to add your photos. 146 | 147 | ``` 148 | ![img caption](img url) 149 | 150 | {% fancybox img_url [img_thumbnail] [img_caption] %} 151 | ``` 152 | 153 | ### Sidebar 154 | 155 | You can put your sidebar in left side, right side or bottom of your site by editing `sidebar` setting. 156 | Hiker provides 5 built-in widgets: 157 | 158 | - category 159 | - tag 160 | - tagcloud 161 | - archives 162 | - recent_posts 163 | 164 | All of them are enabled by default. You can edit them in `widget` setting. 165 | 166 | ### Abstract 167 | ![](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/preview-abstract.png) 168 | 169 | Home Articles Default Open summary mode 170 | ```yml 171 | post_excerpt: true 172 | 173 | ``` 174 | 175 | ### Comment support 176 | 177 | Hiker has native support for DuoShuo & Disqus comment systems. Modify the following snippets to hiker `hiker/_config.yml`: 178 | 179 | ```yml 180 | # comment ShortName, you can choose only ONE to display. 181 | gentie_productKey: #your-gentie-product-key 182 | duoshuo_shortname: 183 | disqus_shortname: 184 | livere_shortname: MTAyMC8yOTQ4MS82MDQ5 185 | uyan_uid: 186 | wumii: 187 | ``` 188 | 189 | ## Browser support 190 | 191 | ![](https://github.com/iTimeTraveler/hexo-theme-hiker/blob/master/source/preview/browser-support.png?raw=true) 192 | 193 | 194 | ## Contributing 195 | 196 | All kinds of contributions (enhancements, new features, documentation & code improvements, issues & bugs reporting) are welcome. 197 | 198 | Looking forward to your pull request. 199 | 200 | [Hexo]: https://hexo.io/ 201 | [Fancybox]: http://fancyapps.com/fancybox/ 202 | [Font Awesome]: http://fontawesome.io/ 203 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------- 2 | # Site Information Settings 3 | # --------------------------------------------------------------- 4 | 5 | # Header Menu 6 | menu: 7 | Home: / 8 | Archives: archives 9 | Categories: categories 10 | Tags: tags 11 | About: about 12 | rss: /atom.xml 13 | 14 | since: 2013 15 | 16 | # Set default keywords (Use a comma to separate) 17 | keywords: "" 18 | 19 | # Put your favicon.ico or avatar.jpg into `hexo-site/themes/hiker/source/` directory. 20 | avatar: 21 | enable: true 22 | border: true 23 | width: 124 24 | height: 124 25 | top: 0 26 | url: css/images/mylogo.jpg 27 | 28 | 29 | # Homepage 30 | # eg. home_background_image: [css/images/home-bg.jpg, http://t.cn/RMbvEza] 31 | # eg. mode: image | polyline | trianglify 32 | home_background_image: 33 | enable: true 34 | mode: image 35 | rolling: true 36 | url: [css/images/home-bg.jpg, css/images/sample.jpg, https://source.unsplash.com/collection/954550/1920x1080] 37 | 38 | home_logo_image: 39 | enable: false 40 | border: false 41 | url: css/images/homelogo.jpg 42 | 43 | 44 | # AboutPage background 45 | about_big_image: [css/images/pose.jpg, css/images/sample.jpg, https://source.unsplash.com/collection/954550/1920x1080] 46 | 47 | 48 | # Archive pagination 49 | archive_pagination: true 50 | 51 | 52 | # Post Article's Content 53 | post_catalog: 54 | enable: true 55 | # 开启主页摘要 56 | post_excerpt: true 57 | 58 | 59 | # Content 60 | fancybox: true 61 | 62 | 63 | # Sidebar 64 | sidebar: right 65 | widgets: 66 | - social 67 | - category 68 | - tag 69 | - tagcloud 70 | - archive 71 | - recent_posts 72 | 73 | 74 | # Social Links 75 | # Key is the name of FontAwsome icon. 76 | # Value is the target link (E.g. GitHub: https://github.com/iTimeTraveler) 77 | social: 78 | Github: https://github.com/iTimeTraveler 79 | Weibo: http://www.yoursite.com 80 | Twitter: 81 | Facebook: 82 | Google-plus: 83 | Instagram: 84 | Pinterest: 85 | Flickr: 86 | email: 87 | 88 | 89 | # Search 90 | search: 91 | insight: true # you need to install `hexo-generator-json-content` before using Insight Search 92 | swiftype: # enter swiftype install key here 93 | baidu: false # you need to disable other search engines to use Baidu search, options: true, false 94 | 95 | 96 | # comment ShortName, you can choose only ONE to display. 97 | gentie_productKey: #your-gentie-product-key 98 | duoshuo_shortname: 99 | disqus_shortname: 100 | livere_shortname: MTAyMC8yOTQ4MS82MDQ5 101 | uyan_uid: 102 | wumii: 103 | 104 | 105 | # Code Highlight theme 106 | # Available value: 107 | # default | gray | normal | night | night eighties | night blue | night bright 108 | # https://github.com/chriskempson/tomorrow-theme 109 | highlight_theme: default 110 | 111 | 112 | # Article theme color 113 | # Available value: 114 | # random | orange | blue | red | green | black 115 | theme_color: random 116 | 117 | 118 | # display widgets at the bottom of index pages (pagination == 2) 119 | index_widgets: 120 | # - category 121 | # - tagcloud 122 | # - archive 123 | 124 | 125 | # widget behavior 126 | archive_type: 'monthly' 127 | show_count: true 128 | 129 | # Google Webmaster tools verification setting 130 | # See: https://www.google.com/webmasters/ 131 | google_site_verification: 132 | baidu_site_verification: 133 | qihu_site_verification: 134 | 135 | # Miscellaneous 136 | google_analytics: 137 | gauges_analytics: 138 | baidu_analytics: 139 | tencent_analytics: 140 | twitter: 141 | google_plus: 142 | fb_admins: 143 | fb_app_id: 144 | 145 | # Facebook SDK Support. 146 | # https://github.com/iissnan/hexo-theme-next/pull/410 147 | facebook_sdk: 148 | enable: false 149 | app_id: # 150 | fb_admin: # 151 | like_button: #true 152 | webmaster: #true 153 | 154 | # CNZZ count 155 | cnzz_siteid: 1260716016 156 | 157 | # busuanzi count 158 | # http://busuanzi.ibruce.info/ 159 | show_busuanzi_view_counts: true 160 | 161 | 162 | # donation button 163 | donate: 164 | enable: true 165 | message: '如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!' 166 | wechatImage: https://raw.githubusercontent.com/iTimeTraveler/iTimeTraveler.github.io/site/source/about/donate/images/WeChanQR.png 167 | alipayImage: https://raw.githubusercontent.com/iTimeTraveler/iTimeTraveler.github.io/site/source/about/donate/images/AliPayQR.jpg 168 | 169 | # post copyright 170 | copyright: 171 | enable: true 172 | 173 | # post edit url, modify your post online for convenience 174 | # If you put your blog on GitHub, it should look like: 175 | # https://github.com/username/blog/edit/master/source/_posts/ 176 | post_edit_url: 177 | -------------------------------------------------------------------------------- /languages/de.yml: -------------------------------------------------------------------------------- 1 | home: Startseite 2 | archives: Archive 3 | about: About 4 | categories: Kategorien 5 | search: Suche 6 | tags: Tags 7 | tagcloud: Tag Cloud 8 | tweets: Tweets 9 | prev: zurück 10 | next: weiter 11 | comment: Kommentare 12 | edit: Bearbeiten 13 | archive_a: Archiv 14 | archive_b: "Archive: %s" 15 | page: Seite %d 16 | recent_posts: letzter Beitrag 17 | newer: Neuer 18 | older: Älter 19 | share: Teilen 20 | powered_by: Powered by 21 | rss_feed: RSS Feed 22 | category: Kategorie 23 | tag: Tag 24 | post_total_count: Es gibt insgesamt %d Beiträge bis jetzt. 25 | right_reserved: "%s hält Urheberrechtsansprüche." 26 | read_more: weiter lesen 27 | contents: Inhalt 28 | none: Nichts 29 | insight: 30 | hint: 'Schreib etwas...' 31 | posts: 'Beiträge' 32 | pages: 'Seiten' 33 | categories: 'Kategorien' 34 | tags: 'Tags' 35 | untitled: '(Unbenannt)' -------------------------------------------------------------------------------- /languages/default.yml: -------------------------------------------------------------------------------- 1 | home: Home 2 | archives: Archives 3 | about: About 4 | categories: Categories 5 | search: Search 6 | tags: Tags 7 | tagcloud: Tag Cloud 8 | tweets: Tweets 9 | prev: Prev 10 | next: Next 11 | comment: Comments 12 | edit: Edit 13 | archive_a: Archives 14 | archive_b: "Archives: %s" 15 | page: Page %d 16 | recent_posts: Recent Posts 17 | newer: Newer 18 | older: Older 19 | share: Share 20 | powered_by: Powered by 21 | rss_feed: RSS Feed 22 | category: Category 23 | tag: Tag 24 | connect: 'Connect' 25 | post_total_count: There are %d posts in total till now. 26 | right_reserved: "%s hold copyright" 27 | site_uv: 'UV' 28 | site_pv: 'PV' 29 | article_pv: 'PV:' 30 | read_more: Read More 31 | contents: Contents 32 | none: None 33 | donation: 34 | button_text: 'Donate' 35 | insight: 36 | hint: 'Type something...' 37 | posts: 'Posts' 38 | pages: 'Pages' 39 | categories: 'Categories' 40 | tags: 'Tags' 41 | untitled: '(Untitled)' 42 | copyright: 43 | author: "Post author: " 44 | link: "Post link: " 45 | license_title: "Copyright Notice: " 46 | left_license_content: "All articles in this blog are licensed under " 47 | right_license_content: "unless stating additionally." 48 | -------------------------------------------------------------------------------- /languages/en.yml: -------------------------------------------------------------------------------- 1 | home: Home 2 | archives: Archives 3 | about: About 4 | categories: Categories 5 | search: Search 6 | tags: Tags 7 | tagcloud: Tag Cloud 8 | tweets: Tweets 9 | prev: Prev 10 | next: Next 11 | comment: Comments 12 | edit: Edit 13 | archive_a: Archives 14 | archive_b: "Archives: %s" 15 | page: Page %d 16 | recent_posts: Recent Posts 17 | newer: Newer 18 | older: Older 19 | share: Share 20 | powered_by: Powered by 21 | rss_feed: RSS Feed 22 | category: Category 23 | tag: Tag 24 | connect: 'Connect' 25 | post_total_count: There are %d posts in total till now. 26 | right_reserved: "%s hold copyright" 27 | site_uv: 'UV' 28 | site_pv: 'PV' 29 | article_pv: 'PV:' 30 | read_more: Read More 31 | contents: Contents 32 | none: None 33 | donation: 34 | button_text: 'Donate' 35 | insight: 36 | hint: 'Type something...' 37 | posts: 'Posts' 38 | pages: 'Pages' 39 | categories: 'Categories' 40 | tags: 'Tags' 41 | untitled: '(Untitled)' 42 | copyright: 43 | author: "Post author: " 44 | link: "Post link: " 45 | license_title: "Copyright Notice: " 46 | left_license_content: "All articles in this blog are licensed under " 47 | right_license_content: "unless stating additionally." 48 | -------------------------------------------------------------------------------- /languages/es.yml: -------------------------------------------------------------------------------- 1 | categories: Categorías 2 | search: Buscar 3 | tags: Tags 4 | tagcloud: Nube de Tags 5 | tweets: Tweets 6 | prev: Previo 7 | next: Siguiente 8 | comment: Comentarios 9 | edit: Editar 10 | archive_a: Archivos 11 | archive_b: "Archivos: %s" 12 | page: Página %d 13 | recent_posts: Posts recientes 14 | newer: Nuevo 15 | older: Viejo 16 | share: Compartir 17 | powered_by: Construido por 18 | rss_feed: RSS 19 | category: Categoría 20 | tag: Tag -------------------------------------------------------------------------------- /languages/fr.yml: -------------------------------------------------------------------------------- 1 | home: Accueil 2 | archives: Archives 3 | about: À propos 4 | categories: Catégories 5 | search: Rechercher 6 | tags: Mots-clés 7 | tagcloud: Nuage de mots-clés 8 | tweets: Tweets 9 | prev: Préc. 10 | next: Suiv. 11 | comment: Commentaires 12 | edit: Modifier 13 | archive_a: Archives 14 | archive_b: "Archives: %s" 15 | page: Page %d 16 | recent_posts: Articles récents 17 | newer: Récent(s) 18 | older: Ancien(s) 19 | share: Partager 20 | powered_by: Propulsé par 21 | rss_feed: Flux RSS 22 | category: Catégories 23 | tag: Mot-clé 24 | connect: 'Connexion' 25 | post_total_count: Il y a actuellement %d articles. 26 | right_reserved: "Droits réservés %s" 27 | site_uv: 'UV' 28 | site_pv: 'PV' 29 | article_pv: 'PV:' 30 | read_more: Lire la suite 31 | contents: Contenu 32 | none: Aucun 33 | donation: 34 | button_text: 'Faire un don' 35 | insight: 36 | hint: 'Écrivez ici' 37 | posts: 'Articles' 38 | pages: 'Pages' 39 | categories: 'Catégories' 40 | tags: 'Mots-clés' 41 | untitled: '(Sans titre)' 42 | -------------------------------------------------------------------------------- /languages/nl.yml: -------------------------------------------------------------------------------- 1 | 2 | categories: Categorieën 3 | search: Zoeken 4 | tags: Labels 5 | tagcloud: Tag Cloud 6 | tweets: Tweets 7 | prev: Vorige 8 | next: Volgende 9 | comment: Commentaren 10 | edit: Bewerk 11 | archive_a: Archieven 12 | archive_b: "Archieven: %s" 13 | page: Pagina %d 14 | recent_posts: Recente berichten 15 | newer: Nieuwer 16 | older: Ouder 17 | share: Delen 18 | powered_by: Powered by 19 | rss_feed: RSS Feed 20 | category: Categorie 21 | tag: Label 22 | -------------------------------------------------------------------------------- /languages/no.yml: -------------------------------------------------------------------------------- 1 | categories: Kategorier 2 | search: Søk 3 | tags: Tags 4 | tagcloud: Tag Cloud 5 | tweets: Tweets 6 | prev: Forrige 7 | next: Neste 8 | comment: Kommentarer 9 | edit: Redigere 10 | archive_a: Arkiv 11 | archive_b: "Arkiv: %s" 12 | page: Side %d 13 | recent_posts: Siste innlegg 14 | newer: Newer 15 | older: Older 16 | share: Share 17 | powered_by: Powered by 18 | rss_feed: RSS Feed 19 | category: Category 20 | tag: Tag -------------------------------------------------------------------------------- /languages/pt.yml: -------------------------------------------------------------------------------- 1 | categories: Categorias 2 | search: Buscar 3 | tags: Tags 4 | tagcloud: Nuvem de Tags 5 | tweets: Tweets 6 | prev: Anterior 7 | next: Próximo 8 | comment: Comentários 9 | edit: Editar 10 | archive_a: Arquivos 11 | archive_b: "Arquivos: %s" 12 | page: Página %d 13 | recent_posts: Postagens Recentes 14 | newer: Mais Novo 15 | older: Mais Velho 16 | share: Compartilhar 17 | powered_by: Desenvolvido por 18 | rss_feed: Feed RSS 19 | category: Categoria 20 | tag: Tag -------------------------------------------------------------------------------- /languages/ru.yml: -------------------------------------------------------------------------------- 1 | categories: Категории 2 | search: Поиск 3 | tags: Метки 4 | tagcloud: Облако меток 5 | tweets: Твиты 6 | prev: Назад 7 | next: Вперед 8 | comment: Комментарии 9 | edit: Редактировать 10 | archive_a: Архив 11 | archive_b: "Архив: %s" 12 | page: Страница %d 13 | recent_posts: Недавние записи 14 | newer: Следующий 15 | older: Предыдущий 16 | share: Поделиться 17 | powered_by: Создано с помощью 18 | rss_feed: RSS-каналы 19 | category: Категория 20 | tag: Метка -------------------------------------------------------------------------------- /languages/zh-CN.yml: -------------------------------------------------------------------------------- 1 | home: 首页 2 | archives: 归档 3 | about: 关于 4 | categories: 分类 5 | search: 搜索 6 | tags: 标签 7 | tagcloud: 标签云 8 | tweets: 推文 9 | prev: 上一页 10 | next: 下一页 11 | comment: 留言 12 | edit: 编辑 13 | archive_a: 归档 14 | archive_b: 归档:%s 15 | page: 第 %d 页 16 | recent_posts: 最新文章 17 | newer: 上一篇 18 | older: 下一篇 19 | share: 分享 20 | powered_by: Powered by 21 | rss_feed: RSS Feed 22 | category: Category 23 | tag: Tag 24 | connect: '关注我' 25 | post_total_count: 嗯,目前共计%d篇文章 26 | right_reserved: '%s 保留所有权利' 27 | site_uv: '访客数' 28 | site_pv: '访问量' 29 | article_pv: '阅读量' 30 | read_more: '阅读全文' 31 | contents: 文章目录 32 | none: 无 33 | donation: 34 | button_text: '打赏支持' 35 | insight: 36 | hint: '请输入关键词...' 37 | posts: '文章' 38 | pages: '页面' 39 | categories: '分类' 40 | tags: '标签' 41 | untitled: '(无标题)' 42 | copyright: 43 | author: "本文作者: " 44 | link: "本文链接: " 45 | license_title: "版权声明: " 46 | left_license_content: "本博客所有文章除特别声明外,均采用 " 47 | right_license_content: "许可协议。转载请注明出处" 48 | -------------------------------------------------------------------------------- /languages/zh-TW.yml: -------------------------------------------------------------------------------- 1 | home: 首頁 2 | archives: 彙整 3 | about: 關于 4 | categories: 分類 5 | search: 搜尋 6 | tags: 標籤 7 | tagcloud: 標籤雲 8 | tweets: 推文 9 | prev: 上一頁 10 | next: 下一頁 11 | comment: 留言 12 | edit: 編輯 13 | archive_a: 彙整 14 | archive_b: 彙整:%s 15 | page: 第 %d 頁 16 | recent_posts: 最新文章 17 | newer: Newer 18 | older: Older 19 | share: Share 20 | powered_by: Powered by 21 | rss_feed: RSS Feed 22 | category: Category 23 | tag: Tag 24 | connect: '關註我' 25 | post_total_count: 嗯,目前共計%d篇文章 26 | right_reserved: "%s 保留所有權利" 27 | site_uv: '訪客數' 28 | site_pv: '訪問量' 29 | article_pv: '閱讀量' 30 | read_more: '閱讀全文' 31 | contents: 文章目錄 32 | none: 無 33 | donation: 34 | button_text: '打賞支持' 35 | insight: 36 | hint: '請輸入關鍵詞...' 37 | posts: '文章' 38 | pages: '頁面' 39 | categories: '分類' 40 | tags: '標籤' 41 | untitled: '(無標題)' 42 | copyright: 43 | author: "作者: " 44 | link: "文章連結: " 45 | license_title: "版權聲明: " 46 | left_license_content: "本網誌所有文章除特別聲明外,均採用 " 47 | right_license_content: "許可協議。轉載請註明出處!" 48 | -------------------------------------------------------------------------------- /layout/_partial/after-footer.ejs: -------------------------------------------------------------------------------- 1 | <% if (config.disqus_shortname){ %> 2 | 15 | <% } %> 16 | 17 | <%- partial('post/mathjax.ejs') %> 18 | 19 | <% if (theme.fancybox){ %> 20 | <%- css('fancybox/jquery.fancybox') %> 21 | <%- js('fancybox/jquery.fancybox.pack') %> 22 | <% } %> 23 | 24 | <%- js('js/scripts') %> 25 | 26 | <% if (is_home() || !theme.home_background_image.enable){ %> 27 | <%- js('js/home') %> 28 | <% } %> 29 | 30 | <% if (is_post()){ %> 31 | <%- js('js/dialog') %> 32 | <% } %> 33 | 34 | <%- partial('google-analytics') %> 35 | <%- partial('gauges-analytics') %> 36 | <%- partial('cnzz-analytics') %> 37 | <%- partial('busuanzi-analytics') %> 38 | <%- partial('baidu-analytics') %> 39 | <%- partial('tencent-analytics') %> -------------------------------------------------------------------------------- /layout/_partial/archive-post.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | <%- partial('post/date', {class_name: 'archive-article-date', date_format: site.date_format}) %> 5 | <%- partial('post/title', {class_name: 'archive-article-title'}) %> 6 |
7 |
8 |
-------------------------------------------------------------------------------- /layout/_partial/archive.ejs: -------------------------------------------------------------------------------- 1 | <% if (pagination == 2){ %> 2 | <% page.posts.each(function(post){ %> 3 | <%- partial('article', {post: post, index: true}) %> 4 | <% }) %> 5 | <% } else { %> 6 | <% if (is_archive()){ %> 7 |
<%= __('post_total_count', site.posts.length) %>
8 | <% } %> 9 | <% var last; %> 10 | <% page.posts.each(function(post, i){ %> 11 | <% var year = post.date.year(); %> 12 | <% if (last != year){ %> 13 | <% if (last != null){ %> 14 |
15 | <% } %> 16 | <% last = year; %> 17 |
18 |
19 |

<%= year %>

20 |
21 |
22 | <% } %> 23 | <%- partial('archive-post', {post: post, even: i % 2 == 0}) %> 24 | <% }) %> 25 | <% if (page.posts.length){ %> 26 |
27 | <% } %> 28 | <% } %> 29 | <% if (page.total > 1){ %> 30 | 37 | <% } %> 38 | -------------------------------------------------------------------------------- /layout/_partial/article.ejs: -------------------------------------------------------------------------------- 1 |
style="width: 75%; float:left;"<% } %> class="article article-type-<%= post.layout %>" itemscope itemprop="blogPost" > 2 |
3 | <%- partial('post/gallery') %> 4 | <% if (post.link || post.title){ %> 5 |
6 | <%- partial('post/title', {class_name: 'article-title'}) %> 7 |
8 | <% } %> 9 | 15 |
16 | <% if (theme.post_excerpt && index){ %> 17 |

18 | <%- truncate(strip_html(post.content), {length: 250, omission: '...'}) %> 19 |

20 |

21 | <%= __('read_more') %> 22 |

23 | <% } else if (post.excerpt && index){ %> 24 | <%- post.excerpt %> 25 | <% } else { %> 26 | <%- post.content %> 27 | <% } %> 28 |
29 |
30 | <% if (!index && theme.donate.enable){ %> 31 | <%- partial('donate') %> 32 | <% } %> 33 | <% if (!index && theme.copyright.enable){ %> 34 | <%- partial('copyright') %> 35 | <% } %> 36 | <% if (!index && post.comments && (theme.gentie_productKey || theme.duoshuo_shortname || theme.disqus_shortname || theme.uyan_uid || theme.wumii || theme.livere_shortname)){ %> 37 | <%- partial('comment') %> 38 | <% } %> 39 | <% if (is_post()){ %> 40 | <%- partial('post/tag') %> 41 | <% } %> 42 | 43 |
44 |
45 | <% if (!index){ %> 46 | <%- partial('post/nav') %> 47 | <% } %> 48 |
49 | 50 | 51 | <% if (!index && is_post() && theme.post_catalog.enable){ %> 52 | 62 | <% } %> 63 | -------------------------------------------------------------------------------- /layout/_partial/baidu-analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.baidu_analytics){ %> 2 | 11 | <% }%> 12 | -------------------------------------------------------------------------------- /layout/_partial/busuanzi-analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.show_busuanzi_view_counts){ %> 2 | 4 | <% }%> 5 | -------------------------------------------------------------------------------- /layout/_partial/cnzz-analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.cnzz_siteid){ %> 2 | 3 |
4 | 5 |
6 | <% }%> 7 | -------------------------------------------------------------------------------- /layout/_partial/comment.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.gentie_productKey){ %> 2 | 3 |
4 | 12 | 13 | 14 | 15 | <% } else if (theme.duoshuo_shortname) {%> 16 |
17 | 18 | 19 |
20 | 21 | 22 | 33 | 34 | 35 |
36 | <% } else if (theme.disqus_shortname) {%> 37 |
38 |
39 | 40 |
41 |
42 | 43 | 60 | 61 | <% } else if (theme.uyan_uid) {%> 62 |
63 | 64 |
65 | 74 | 75 |
76 | <% } else if (theme.wumii) {%> 77 |
78 | 84 | 85 |
86 | <% } else if (theme.livere_shortname) {%> 87 |
88 | 89 |
90 | 103 | 104 |
105 | 106 |
107 | 108 | <% } %> 109 | -------------------------------------------------------------------------------- /layout/_partial/copyright.ejs: -------------------------------------------------------------------------------- 1 |
2 |
    3 |
  • 4 | <%= __('copyright.author') %> <%= config.author%> 5 |
  • 6 |
  • 7 | <%= __('copyright.link') %> 8 | <%- config.url %>/<%- post.path %> 9 |
  • 10 |
  • 11 | <%= __('copyright.license_title') %> 12 | <%= __('copyright.left_license_content') %>CC BY-NC-ND 4.0 13 | <%= __('copyright.right_license_content') %> 14 |
  • 15 | 16 |
17 |
18 | -------------------------------------------------------------------------------- /layout/_partial/dialog.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/_partial/donate.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 | <%- js('js/vdonate') %> 4 | -------------------------------------------------------------------------------- /layout/_partial/facebook-sdk.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.facebook_sdk.enable){ %> 2 | 3 | 20 | 21 | <% }%> 22 | -------------------------------------------------------------------------------- /layout/_partial/footer.ejs: -------------------------------------------------------------------------------- 1 |
2 | <% if (theme.sidebar === 'bottom'){ %> 3 | <%- partial('_partial/sidebar') %> 4 | <% } %> 5 | 6 |
7 |
8 |

<%= __('powered_by') %> Hexo and Hexo-theme-hiker

9 |

Copyright © <%= theme.since || (date(new Date(), 'YYYY')-1)%> - <%= date(new Date(), 'YYYY') %> <%= config.title || config.author %> All Rights Reserved.

10 | 11 | <% if (theme.show_busuanzi_view_counts){ %> 12 |

13 | <%= __('site_uv') %> : | 14 | <%= __('site_pv') %> : 15 |

16 | <% } else { %> 17 |

<%= __('right_reserved', config.author || config.title) %>

18 | <% } %> 19 |
20 | 21 | 22 |
23 |
24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /layout/_partial/gauges-analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.gauges_analytics){ %> 2 | 3 | 17 | 18 | <% } %> 19 | -------------------------------------------------------------------------------- /layout/_partial/google-analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.google_analytics){ %> 2 | 3 | 13 | 14 | <% } %> 15 | -------------------------------------------------------------------------------- /layout/_partial/head.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <% 6 | var title = page.title; 7 | 8 | if (is_archive()){ 9 | title = __('archive_a'); 10 | 11 | if (is_month()){ 12 | title += ': ' + page.year + '/' + page.month; 13 | } else if (is_year()){ 14 | title += ': ' + page.year; 15 | } 16 | } else if (is_category()){ 17 | title = __('category') + ': ' + page.category; 18 | } else if (is_tag()){ 19 | title = __('tag') + ': ' + page.tag; 20 | } 21 | %> 22 | <% if (title){ %><%= __(title.toLowerCase()) %> | <% } %><%= config.title %> 23 | 24 | <% if (page.keywords){ %> 25 | 26 | <% } else if (theme.keywords){ %> 27 | 28 | <% } else if (page.tags && page.tags.length){ %> 29 | 30 | <% }%> 31 | <% if (theme.google_site_verification){ %> 32 | 33 | <% } %> 34 | <% if (theme.baidu_site_verification){ %> 35 | 36 | <% } %> 37 | <% if (theme.qihu_site_verification){ %> 38 | 39 | <% } %> 40 | <%- open_graph({twitter_id: theme.twitter, google_plus: theme.google_plus, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %> 41 | <% if (theme.rss){ %> 42 | 43 | <% } %> 44 | 45 | <% 46 | var avatarurl = "css/images/avatar.jpg" 47 | if (theme.avatar.url){ 48 | avatarurl = theme.avatar.url; 49 | } 50 | %> 51 | 52 | 53 | 54 | <% if (config.highlight.enable){ %> 55 | 56 | <% } %> 57 | 58 | 59 | 60 | 67 | <%- css('css/style') %> 68 | 69 | <%- js('js/jquery-3.1.1.min.js') %> 70 | <%- js('js/bootstrap') %> 71 | 72 | 73 | 74 | 75 | <% if (is_home()){ %> 76 | 77 | <% } else {%> 78 | <%- css('css/dialog.css') %> 79 | <% } %> 80 | 81 | <% if (is_home() && theme.home_background_image.enable && theme.home_background_image.mode == "trianglify") { %> 82 | 83 | <% } %> 84 | 85 | <% if (!is_home() || !theme.home_background_image.enable){ %> 86 | 87 | <% } %> 88 | 89 | <% if (!is_post() && !is_home()){ %> 90 | 91 | <% } %> 92 | 93 | <% if (theme.donate.enable){ %> 94 | 95 | <% } %> 96 | 97 | 98 | -------------------------------------------------------------------------------- /layout/_partial/header-post.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 | 37 | 38 |
39 | 40 | <% if (is_current("about", false) && theme.about_big_image){ %> 41 | 42 | <% if (typeof(theme.about_big_image) == "string") { %> 43 |
44 |
45 | 46 |
47 |
48 | <% } else { %> 49 |
50 |
95 | 96 | <% } %> 97 | 98 | <% } %> 99 | -------------------------------------------------------------------------------- /layout/_partial/header.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/_partial/mobile-nav.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/_partial/post/busuanzi-analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if (!index && is_post() && theme.show_busuanzi_view_counts){ %> 2 | 3 | 4 | <%= __('article_pv') %> 5 | 6 | 7 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/post/category.ejs: -------------------------------------------------------------------------------- 1 | <% if (post.categories && post.categories.length){ %> 2 | <%- list_categories(post.categories, { 3 | show_count: false, 4 | class: 'article-category', 5 | style: 'none', 6 | separator: '' 7 | }) %> 8 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/post/date.ejs: -------------------------------------------------------------------------------- 1 | <% if (!is_current("about", false)){ %> 2 | 3 | 4 | 5 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/post/edit.ejs: -------------------------------------------------------------------------------- 1 | <% if (!index && is_post() && theme.post_edit_url){ %> 2 | 3 | <%= __('edit') %> 4 | 5 | 6 | <% } %> 7 | -------------------------------------------------------------------------------- /layout/_partial/post/gallery.ejs: -------------------------------------------------------------------------------- 1 | <% if (page.photos && page.photos.length){ %> 2 |
3 |
4 | <% page.photos.forEach(function(photo, i){ %> 5 | 6 | 7 | 8 | <% }) %> 9 |
10 |
11 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/post/mathjax.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 19 | 20 | 28 | 29 | -------------------------------------------------------------------------------- /layout/_partial/post/nav.ejs: -------------------------------------------------------------------------------- 1 | <% if (post.prev || post.next){ %> 2 | 22 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/post/tag.ejs: -------------------------------------------------------------------------------- 1 | <% if (post.tags && post.tags.length){ %> 2 | <%- list_tags(post.tags, { 3 | show_count: false, 4 | class: 'article-tag' 5 | }) %> 6 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/post/title.ejs: -------------------------------------------------------------------------------- 1 | <% if (post.link){ %> 2 |

3 | 4 |

5 | <% } else if (post.title){ %> 6 | <% if (index){ %> 7 |

8 | <%= post.title %> 9 |

10 | <% } else { %> 11 |

12 | <%= post.title %> 13 |

14 | <% } %> 15 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/post/urlconvert.ejs: -------------------------------------------------------------------------------- 1 | <% if (!(tempUrl.startsWith('http') || tempUrl.indexOf('://') >= 0)){ %><%- config.root %><% } %><%- tempUrl %> -------------------------------------------------------------------------------- /layout/_partial/sidebar.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/_partial/tencent-analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.tencent_analytics){ %> 2 | 3 | 11 | 12 | <% }%> 13 | -------------------------------------------------------------------------------- /layout/_widget/archive.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.posts.length){ %> 2 |
3 |

<%= __('archive_a') %>

4 | 5 |
6 | <%- list_archives({show_count: theme.show_count, type: theme.archive_type}) %> 7 |
8 |
9 | <% } %> 10 | -------------------------------------------------------------------------------- /layout/_widget/category.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.categories.length){ %> 2 |
3 |

<%= __('categories') %>

4 |
5 | <%- list_categories({show_count: theme.show_count}) %> 6 |
7 |
8 | <% } %> 9 | -------------------------------------------------------------------------------- /layout/_widget/curtains.ejs: -------------------------------------------------------------------------------- 1 |
2 |

起床了!

3 |
4 | 6 | 278 |
279 |
-------------------------------------------------------------------------------- /layout/_widget/recent_posts.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.posts.length){ %> 2 |
3 |

<%= __('recent_posts') %>

4 |
5 | 12 |
13 |
14 | <% } %> -------------------------------------------------------------------------------- /layout/_widget/social.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.social){ %> 2 |
3 |

<%= __('connect') %>

4 |
5 | 6 |
    7 | <% Object.keys(theme.social).forEach(function(key) { %> 8 | <% if (key == 'email'){ %> 9 |
  • 10 | <% } else {%> 11 |
  • 12 | <% }%> 13 | <% }) %> 14 |
15 | 16 | 17 | 26 | 27 |
28 |
29 | <% } %> 30 | -------------------------------------------------------------------------------- /layout/_widget/tag.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.tags.length){ %> 2 |
3 |

<%= __('tags') %>

4 |
5 | <%- list_tags({show_count: theme.show_count}) %> 6 |
7 |
8 | <% } %> 9 | -------------------------------------------------------------------------------- /layout/_widget/tagcloud.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.tags.length){ %> 2 |
3 |

<%= __('tagcloud') %>

4 |
5 | <%- tagcloud() %> 6 |
7 |
8 | <% } %> -------------------------------------------------------------------------------- /layout/archive.ejs: -------------------------------------------------------------------------------- 1 | <% if (is_archive()){ %> 2 |
<%= __('post_total_count', site.posts.length) %>
3 | <% } %> 4 | 5 | 6 | <% if (theme.archive_pagination == true){ %> 7 | <% var last; %> 8 | <% page.posts.each(function(post, i){ %> 9 | <% var year = post.date.year(); %> 10 | <% if (last != year){ %> 11 | <% if (last != null){ %> 12 |
13 | <% } %> 14 | <% last = year; %> 15 |
16 |
17 |

<%= year %>

18 |
19 |
20 | <% } %> 21 | <%- partial('_partial/archive-post', {post: post, even: i % 2 == 0, index: true}) %> 22 | <% }) %> 23 | <% if (page.posts.length){ %> 24 |
25 | <% } %> 26 | 27 | 28 | <% if (page.total > 1){ %> 29 | 36 | <% } %> 37 | <% } else { %> 38 | 39 | 40 | <% var last; %> 41 | <% site.posts.sort('-date').map(function(post, i){ %> 42 | <% var year = post.date.year(); %> 43 | <% if (last != year){ %> 44 | <% if (last != null){ %> 45 |
46 | <% } %> 47 | <% last = year; %> 48 |
49 |
50 |

<%= year %>

51 |
52 |
53 | <% } %> 54 | <%- partial('_partial/archive-post', {post: post, even: i % 2 == 0, index: true}) %> 55 | <% }) %> 56 | <% if (site.posts.length){ %> 57 |
58 | <% } %> 59 | <% } %> 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /layout/categories.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | <% if(site.categories.length) { %> 6 | <%- list_categories(site.categories) %> 7 | <% } %> 8 |
9 |
10 | 11 | 12 | 13 | <% site.categories.sort('name').map(function(category){ %> 14 |
15 |
16 |

<%= category.name %>

17 |
18 |
19 | <% category.posts.sort('-date').map(function(post, i){ %> 20 | <%- partial('_partial/archive-post', {post: post, index: true}) %> 21 | <% if (post.subtitle && post.subtitle.length) { %> 22 |

23 | <%- post.subtitle %> 24 |

25 | <% } %> 26 | <% }) %> 27 |
28 |
29 | <% }) %> 30 |
31 |
-------------------------------------------------------------------------------- /layout/category.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive', {pagination: config.category, index: true}) %> -------------------------------------------------------------------------------- /layout/index.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive', {pagination: 2, index: true}) %> -------------------------------------------------------------------------------- /layout/layout.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/head') %> 2 | 3 | <% if (is_post()){ %> 4 | 5 | <% } else {%> 6 | 7 | <% } %> 8 | 9 | <% if (is_home() && theme.home_background_image.enable){ %> 10 | <%- partial('_partial/header', null, {cache: !config.relative_link}) %> 11 | <% } %> 12 |
13 |
14 | <% if (!is_home() || !theme.home_background_image.enable){ %> 15 | <%- partial('_partial/header-post') %> 16 | <% } %> 17 | 18 |
19 | <% if (theme.sidebar && theme.sidebar !== 'bottom' && (is_archive())){ %> 20 |
<%- body %>
21 | <%- partial('_partial/sidebar', null, {cache: !config.relative_link}) %> 22 | <% } else {%> 23 |
<%- body %>
24 | <% } %> 25 |
26 | <% if (is_home()){ %> 27 |

28 | <% } %> 29 | <%- partial('_partial/footer', null, {cache: !config.relative_link}) %> 30 |
31 | 32 | <%- partial('_partial/after-footer') %> 33 |
34 | 35 | <%- partial('_partial/dialog') %> 36 | 37 | 38 | 39 | <% if (is_post() && theme.post_catalog.enable){ %> 40 | 41 | <% } %> 42 | 43 | -------------------------------------------------------------------------------- /layout/page.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/article', {post: page, index: false}) %> -------------------------------------------------------------------------------- /layout/post.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/article', {post: page, index: false}) %> -------------------------------------------------------------------------------- /layout/search/baidu.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /layout/search/index-mobile.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.search.insight) { %> 2 |
3 | 4 |
5 | <% } else if (theme.search.swiftype) { %> 6 |
7 | 8 |
9 | <% } else if (theme.search.baidu) { %> 10 | <%- partial('search/baidu') %> 11 | <% } else { %> 12 | <%- search_form({text: __('index.search')}) %> 13 | <% } %> -------------------------------------------------------------------------------- /layout/search/index.ejs: -------------------------------------------------------------------------------- 1 |
2 | <% if (theme.search.insight) { %> 3 |
4 | 5 | 6 |
7 | <%- partial('search/insight') %> 8 | <% } else if (theme.search.swiftype) { %> 9 |
10 | 11 | 12 |
13 | <%- partial('search/swiftype') %> 14 | <% } else if (theme.search.baidu) { %> 15 | <%- partial('search/baidu') %> 16 | <% } else { %> 17 | <%- search_form({ button: ' ', text: __('index.search') }) %> 18 | <% } %> 19 |
-------------------------------------------------------------------------------- /layout/search/insight.ejs: -------------------------------------------------------------------------------- 1 | 13 | 29 | <%- js('js/insight') %> -------------------------------------------------------------------------------- /layout/search/swiftype.ejs: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /layout/tag.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive', {pagination: config.tag, index: true}) %> -------------------------------------------------------------------------------- /layout/tags.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 | 6 |
7 | <% if(site.tags.length) { %> 8 |
9 | <%- tagcloud({min_font: 14, max_font: 28}) %> 10 |
11 | <% } %> 12 |
13 | 14 | 15 | 22 | 23 | 24 | 25 | <% site.tags.sort('name').map(function(tag){ %> 26 |
27 |
28 |

<%= tag.name %>

29 |
30 |
31 | <% tag.posts.sort('-date').map(function(post, i){ %> 32 | <%- partial('_partial/archive-post', {post: post, index: true}) %> 33 | <% if (post.subtitle && post.subtitle.length) { %> 34 |

35 | <%- post.subtitle %> 36 |

37 | <% } %> 38 | <% }) %> 39 |
40 |
41 | <% }) %> 42 | 43 | 44 |
45 |
46 |
-------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-theme-hiker", 3 | "version": "1.0.0", 4 | "description": "An attractive theme for Hexo.", 5 | "author": "iTimeTraveler", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/iTimeTraveler/hexo-theme-hiker" 9 | }, 10 | "license": "MIT", 11 | "private": true, 12 | "homepage": "https://github.com/iTimeTraveler/hexo-theme-hiker#readme", 13 | "devDependencies": { 14 | "grunt": "~0.4.2", 15 | "load-grunt-tasks": "~0.2.0", 16 | "grunt-git": "~0.2.2", 17 | "grunt-contrib-clean": "~0.5.0", 18 | "grunt-contrib-copy": "~0.4.1" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /scripts/fancybox.js: -------------------------------------------------------------------------------- 1 | var rUrl = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/; 2 | 3 | /** 4 | * Fancybox tag 5 | * 6 | * Syntax: 7 | * {% fancybox /path/to/image [/path/to/thumbnail] [title] %} 8 | */ 9 | 10 | hexo.extend.tag.register('fancybox', function(args){ 11 | var original = args.shift(), 12 | thumbnail = ''; 13 | 14 | if (args.length && rUrl.test(args[0])){ 15 | thumbnail = args.shift(); 16 | } 17 | 18 | var title = args.join(' '); 19 | 20 | return '' + 21 | '' + title + '' 22 | '' + 23 | (title ? '' + title + '' : ''); 24 | }); -------------------------------------------------------------------------------- /source/css/_extend.styl: -------------------------------------------------------------------------------- 1 | $block-caption 2 | text-decoration: none 3 | text-transform: uppercase 4 | letter-spacing: 2px 5 | color: color-grey 6 | margin-bottom: 1em 7 | margin-left: 5px 8 | line-height: 1em 9 | font-weight: bold 10 | 11 | $block 12 | background: color-background 13 | border: 1px solid color-border 14 | border-radius: 3px 15 | 16 | $block-night 17 | background: #1d1e1f 18 | 19 | $base-style 20 | h1 21 | font-size: 25px 22 | h2 23 | font-size: 23px 24 | h3 25 | font-size: 20px 26 | h4 27 | font-size: 17px 28 | h5 29 | font-size: 1em 30 | h6 31 | font-size: 1em 32 | color: color-grey 33 | @media mq-mobile 34 | h1 35 | font-size: 22px 36 | h2 37 | font-size: 20px 38 | h3 39 | font-size: 18px 40 | h4 41 | font-size: 16px 42 | h5 43 | font-size: 1em 44 | h6 45 | font-size: 1em 46 | hr 47 | border: 1px dashed color-border 48 | strong 49 | font-weight: bold 50 | em, cite 51 | font-style: italic 52 | sup, sub 53 | font-size: 0.75em 54 | line-height: 0 55 | position: relative 56 | vertical-align: baseline 57 | sup 58 | top: -0.5em 59 | sub 60 | bottom: -0.2em 61 | small 62 | font-size: 0.85em 63 | acronym, abbr 64 | border-bottom: 1px dotted 65 | ul, ol, dl 66 | margin: 0 20px 67 | line-height: line-height 68 | ul, ol 69 | ul, ol 70 | margin-top: 0 71 | margin-bottom: 0 72 | ul 73 | list-style: circle 74 | ol 75 | list-style: decimal 76 | dt 77 | font-weight: bold -------------------------------------------------------------------------------- /source/css/_partial/archive.styl: -------------------------------------------------------------------------------- 1 | .archives-wrap 2 | margin: block-margin 0 3 | 4 | .archives 5 | clearfix() 6 | margin-left: 2em 7 | @media mq-mobile 8 | margin-left: 0.5em 9 | 10 | .archive-year-wrap 11 | margin-bottom: 1em 12 | h1 13 | font-size: 1.3em 14 | 15 | .archive-year 16 | @extend $block-caption 17 | color: color-theme 18 | 19 | .archive-year:hover 20 | color: color-theme 21 | 22 | .archive-year:before 23 | font-family: "FontAwesome" 24 | content: "\f273" 25 | margin-right: .2em 26 | 27 | .archives-tags-wrap 28 | margin: block-margin 0 29 | blockquote 30 | padding: 1em 31 | margin: 4em 0 0 0 32 | font-size: 1.2em 33 | font-weight: bold 34 | color: color-black 35 | text-align: center; 36 | border-left: 0px solid color-theme 37 | background: rgba(208,211,248,0.15) 38 | a 39 | color: color-black 40 | margin: .2em 41 | &:hover 42 | color: color-theme 43 | 44 | .archive-tag 45 | @extend $block-caption 46 | text-transform: none; 47 | color: color-theme 48 | 49 | .archive-tag:hover 50 | color: color-theme 51 | 52 | .archive-tag:before 53 | font-family: "FontAwesome" 54 | content: "\f02c" 55 | margin-right: .2em 56 | 57 | .archives-category-wrap 58 | margin: block-margin 0 59 | blockquote 60 | padding: 1em 61 | font-size: 1.1em 62 | font-weight: bold 63 | line-height: 1.7em; 64 | color: color-theme 65 | text-align: left; 66 | border-left: 0px solid color-theme 67 | background: rgba(208,211,248,0.15) 68 | a 69 | color: color-black 70 | margin: .2em 71 | &:hover 72 | color: color-theme 73 | &:before 74 | font-family: "FontAwesome" 75 | content: "\f0da" 76 | margin-right: .5em 77 | 78 | .archive-category 79 | @extend $block-caption 80 | text-transform: none; 81 | color: color-theme 82 | 83 | .archive-category:before 84 | font-family: "FontAwesome" 85 | content: "\f07c" 86 | margin-right: .3em 87 | 88 | .archives 89 | column-gap: 10px 90 | @media mq-tablet 91 | column-count: 1 92 | @media mq-normal 93 | column-count: 1 94 | 95 | .archive-article 96 | avoid-column-break() 97 | 98 | .archive-article-header 99 | @media mq-mobile 100 | display: grid; 101 | h1 102 | @media mq-mobile 103 | font-size: 14px; 104 | 105 | .archive-article-inner 106 | padding: 0px 107 | margin-bottom: 0px 108 | 109 | .archive-article-title 110 | text-decoration: none 111 | color: color-default 112 | transition: color 0.2s 113 | line-height: line-height 114 | border-left: 1px solid color-theme; 115 | padding-left: 15px; 116 | @media mq-mobile 117 | padding-left: 8px; 118 | &:hover 119 | color: color-link-hover 120 | 121 | .archive-article-footer 122 | margin-top: 1em 123 | 124 | .archive-article-date 125 | min-width: 85px 126 | float: left 127 | color: #c7c7c7 128 | text-decoration: none 129 | line-height: 1.6em 130 | margin-right: 15px 131 | display: block 132 | font-size: 1.1em 133 | font-family: font-futura-pt 134 | 135 | .archive-article-date:hover 136 | color: color-theme 137 | 138 | #page-nav 139 | clearfix() 140 | margin: block-margin auto 141 | background: #fff 142 | border: 1px solid color-border 143 | border-radius: 3px 144 | text-align: center 145 | color: color-grey 146 | a, span 147 | padding: 10px 20px 148 | line-height: 1 149 | a 150 | color: color-grey 151 | text-decoration: none 152 | &:hover 153 | background: color-theme 154 | color: #fff 155 | .prev 156 | float: left 157 | .next 158 | float: right 159 | .page-number 160 | display: inline-block 161 | @media mq-mobile 162 | display: none 163 | .current 164 | color: color-default 165 | font-weight: bold 166 | .space 167 | color: color-border -------------------------------------------------------------------------------- /source/css/_partial/article.styl: -------------------------------------------------------------------------------- 1 | .article 2 | color: #555 3 | margin: block-margin 0 4 | transition:width .1s; 5 | -moz-transition:width .1s; /* Firefox 4 */ 6 | -webkit-transition:width .1s; /* Safari and Chrome */ 7 | -o-transition:width .1s; /* Opera */ 8 | transition-timing-function: ease-out; 9 | -moz-transition-timing-function: ease-out; /* Firefox 4 */ 10 | -webkit-transition-timing-function: ease-out; /* Safari 和 Chrome */ 11 | -o-transition-timing-function: ease-out; /* Opera */ 12 | @media mq-mobile 13 | width: 100% !important 14 | @media mq-tablet 15 | width: 100% !important 16 | 17 | .article-inner 18 | @extend $block 19 | overflow: hidden 20 | border: 0px solid color-border 21 | 22 | .article-inner-night 23 | @extend $block-night 24 | overflow: hidden 25 | border: 0px solid color-border 26 | 27 | .article-inner 28 | h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 29 | font-family: font-article-header 30 | 31 | .article-meta 32 | clearfix() 33 | text-align: center 34 | font-size: .9em 35 | margin: 1.5em 0 0em 0 36 | @media mq-mobile 37 | font-size: 12px; 38 | 39 | .article-date 40 | @extend $block-caption 41 | text-align: center 42 | font-weight: normal 43 | 44 | .article-date:before 45 | font-family: "FontAwesome"; 46 | content: "\f073"; 47 | @media mq-mobile 48 | display: none 49 | 50 | .article-date:hover 51 | color: color-theme 52 | 53 | .article-category 54 | text-align: center 55 | line-height: 1em 56 | color: #ccc 57 | margin-left: 8px 58 | &:before 59 | content: "\2022" 60 | 61 | .article-category-link 62 | @extend $block-caption 63 | margin: 0 12px 1em 64 | font-weight: normal 65 | @media mq-mobile 66 | margin: 0 .5em 1em 67 | 68 | .article-category-link:before 69 | font-family: "FontAwesome" 70 | content: "\f07c" 71 | padding-right: 0.3em 72 | @media mq-mobile 73 | display: none 74 | 75 | .article-category-link:hover 76 | color: color-theme 77 | 78 | .article-views 79 | @extend $block-caption 80 | text-align: center 81 | font-weight: normal 82 | 83 | .article-views:before 84 | font-family: "FontAwesome"; 85 | content: "\f06e"; 86 | @media mq-mobile 87 | display: none 88 | 89 | .article-views:hover 90 | color: color-theme 91 | 92 | .article-edit 93 | @extend $block-caption 94 | text-align: center 95 | font-weight: normal 96 | 97 | .article-edit:before 98 | font-family: "FontAwesome"; 99 | content: "\f044"; 100 | @media mq-mobile 101 | display: none 102 | 103 | .article-edit:hover 104 | color: color-theme 105 | 106 | .article-date, 107 | .article-category-link, 108 | .article-views, 109 | .article-edit 110 | .archive-year, 111 | .archive-tag, 112 | .archive-category, 113 | .widget-title 114 | text-transform: inherit; 115 | letter-spacing: 1px; 116 | color: #999; 117 | @media mq-mobile 118 | letter-spacing: .5px; 119 | 120 | 121 | .article-header 122 | text-align: center 123 | 124 | .article-header 125 | h1 126 | font-size: 25px; 127 | font-weight: bold 128 | font-family: font-article-header 129 | @media mq-mobile 130 | font-weight: normal 131 | 132 | .article-header .thumb 133 | font-size: 23px; 134 | margin-top: 20px; 135 | margin-bottom: 20px; 136 | @media mq-mobile 137 | color: #333 138 | font-size: 20px; 139 | margin-top: 0px; 140 | margin-bottom: 15px; 141 | 142 | .article-title 143 | text-decoration: none 144 | font-weight: bold 145 | color: #333 146 | line-height: line-height-title 147 | transition: color 0.2s 148 | a&:hover 149 | color: color-theme 150 | text-decoration: none; 151 | 152 | .article-entry 153 | @extend $base-style 154 | clearfix() 155 | color: color-default 156 | margin: 0 article-padding 157 | @media mq-mobile 158 | margin: 0 159 | p, table 160 | line-height: line-height 161 | margin: line-height 0 162 | h1, h2, h3, h4, h5, h6 163 | font-weight: bold 164 | h1, h2, h3, h4, h5, h6 165 | line-height: line-height-title 166 | margin: 0 167 | padding: line-height-title 0 0 168 | a 169 | color: color-link 170 | text-decoration: none 171 | &:hover 172 | color: color-theme 173 | text-decoration: none 174 | ul, ol, dl 175 | margin-top: line-height 176 | margin-bottom: line-height 177 | img, video 178 | max-width: 100% 179 | height: auto 180 | display: block 181 | margin: auto 182 | iframe 183 | border: none 184 | table 185 | width: 100% 186 | border-collapse: collapse 187 | border-spacing: 0 188 | th 189 | font-weight: bold 190 | border-bottom: 3px solid color-border 191 | padding-bottom: 0.5em 192 | td 193 | border-bottom: 1px solid color-border 194 | padding: 10px 0 195 | blockquote 196 | padding: 0.1px 20px; 197 | font-family: font-normal 198 | font-size: 1.1em 199 | color: rgba(44, 44, 44, .6) 200 | margin: 1.4em 0px 201 | border-left: 2px solid color-theme 202 | background: rgba(208,211,248,0.15) 203 | p 204 | font-size: font-size 205 | margin: 15px 0; 206 | footer 207 | font-size: font-size 208 | margin: line-height 0 209 | font-family: font-sans 210 | cite 211 | &:before 212 | content: "—" 213 | padding: 0 0.5em 214 | .pullquote 215 | background: transparent 216 | border-left: 0px 217 | padding: 10px 25px 218 | margin: 18px 0 219 | font-style: italic 220 | text-align: left; 221 | width: 45% 222 | margin: 0 223 | @media mq-mobile 224 | width: 100% 225 | p 226 | font-family: Georgia,Microsoft JhengHei,"sans serif" 227 | font-size: 1.2em 228 | &:before 229 | float: left 230 | font-family: "FontAwesome" 231 | content: "\f10d" 232 | margin-left: -0.5em 233 | &:after 234 | float: right 235 | font-family: "FontAwesome" 236 | content: "\f10e" 237 | margin-right: -0.5em 238 | margin-top: -1em 239 | &.left 240 | margin-left: 0.5em 241 | margin-right: 1em 242 | &.right 243 | margin-right: 0.5em 244 | margin-left: 1em 245 | .caption 246 | color: color-grey 247 | display: block 248 | font-size: 0.8em 249 | margin-top: 0.5em 250 | position: relative 251 | text-align: center 252 | // http://webdesignerwall.com/tutorials/css-elastic-videos 253 | .video-container 254 | position: relative 255 | padding-top: (9 / 16 * 100)% // 16:9 ratio 256 | height: 0 257 | overflow: hidden 258 | iframe, object, embed 259 | position: absolute 260 | top: 0 261 | left: 0 262 | width: 100% 263 | height: 100% 264 | margin-top: 0 265 | 266 | .article-excerpt-content 267 | margin 1.6em 0 268 | line-height 2em !important 269 | 270 | .article-more-link a 271 | display: inline-block 272 | font-size: 0.9em 273 | line-height: 1em 274 | padding: 8px 15px 275 | border-radius: 15px 276 | background: color-link-bg 277 | border: 1px solid #eef1f8; 278 | color: color-theme 279 | text-decoration: none 280 | -webkit-transition: all 0.2s ease-in-out; 281 | transition: all 0.2s ease-in-out; 282 | &:hover 283 | background: color-theme 284 | color: #fff 285 | text-decoration: none 286 | 287 | .article-footer 288 | clearfix() 289 | font-size: 0.85em 290 | line-height: line-height 291 | border-top: 1px solid rgba(208,211,248,0.25) 292 | padding-top: line-height 293 | margin: 0 article-padding article-padding 294 | @media mq-mobile 295 | margin: 0 0 296 | a 297 | color: color-grey 298 | text-decoration: none 299 | &:hover 300 | color: color-default 301 | 302 | .article-tag-list-item 303 | float: left 304 | margin-right: 10px 305 | 306 | .article-tag-list-link 307 | &:before 308 | font-family: "FontAwesome"; 309 | content: "\f0c6" 310 | padding-right: 0.3em 311 | 312 | .article-comment-link 313 | float: right 314 | &:before 315 | content: "\f075" 316 | font-family: font-icon 317 | padding-right: 8px 318 | 319 | .article-share-link 320 | cursor: pointer 321 | float: right 322 | margin-left: 20px 323 | &:before 324 | content: "\f064" 325 | font-family: font-icon 326 | padding-right: 6px 327 | 328 | #article-nav 329 | clearfix() 330 | position: relative 331 | @media mq-normal 332 | margin: block-margin 0 333 | &:before 334 | absolute-center(8px) 335 | content: "" 336 | border-radius: 50% 337 | background: color-border 338 | box-shadow: 0 1px 2px #fff 339 | 340 | .article-nav-link-wrap 341 | text-decoration: none 342 | color: color-grey 343 | box-sizing: border-box 344 | margin-top: block-margin 345 | text-align: center 346 | display: block 347 | &:hover 348 | color: color-default 349 | @media mq-normal 350 | width: 50% 351 | margin-top: 0 352 | 353 | #article-nav-newer 354 | @media mq-normal 355 | float: left 356 | text-align: right 357 | padding-right: 20px 358 | 359 | #article-nav-older 360 | @media mq-normal 361 | float: right 362 | text-align: left 363 | padding-left: 20px 364 | 365 | .article-nav-caption 366 | text-transform: uppercase 367 | letter-spacing: 2px 368 | color: color-border 369 | line-height: 1em 370 | font-weight: bold 371 | #article-nav-newer & 372 | margin-right: -2px 373 | 374 | .article-nav-title 375 | font-size: 0.85em 376 | line-height: line-height 377 | margin-top: 0.5em 378 | 379 | .article-share-box 380 | position: absolute 381 | display: none 382 | background: #fff 383 | box-shadow: 1px 2px 10px rgba(0, 0, 0, 0.2) 384 | border-radius: 3px 385 | margin-left: -145px 386 | overflow: hidden 387 | z-index: 1 388 | &.on 389 | display: block 390 | 391 | .article-share-input 392 | width: 100% 393 | background: none 394 | box-sizing: border-box 395 | font: 14px font-sans 396 | padding: 0 15px 397 | color: color-default 398 | outline: none 399 | border: 1px solid color-border 400 | border-radius: 3px 3px 0 0 401 | height: 36px 402 | line-height: 36px 403 | 404 | .article-share-links 405 | clearfix() 406 | background: color-background 407 | 408 | $article-share-link 409 | width: 50px 410 | height: 36px 411 | display: block 412 | float: left 413 | position: relative 414 | color: #999 415 | &:before 416 | font-size: 20px 417 | font-family: font-icon 418 | absolute-center(@font-size) 419 | text-align: center 420 | &:hover 421 | color: #fff 422 | 423 | .article-share-twitter 424 | @extend $article-share-link 425 | &:before 426 | content: "\f099" 427 | &:hover 428 | background: color-twitter 429 | 430 | .article-share-facebook 431 | @extend $article-share-link 432 | &:before 433 | content: "\f09a" 434 | &:hover 435 | background: color-facebook 436 | 437 | .article-share-pinterest 438 | @extend $article-share-link 439 | &:before 440 | content: "\f0d2" 441 | &:hover 442 | background: color-pinterest 443 | 444 | .article-share-google 445 | @extend $article-share-link 446 | &:before 447 | content: "\f0d5" 448 | &:hover 449 | background: color-google 450 | 451 | .article-gallery 452 | background: transparent 453 | position: relative 454 | 455 | .article-gallery-photos 456 | position: relative 457 | overflow: hidden 458 | margin: 20px; 459 | @media mq-mobile 460 | margin: 20px 0 461 | 462 | .article-gallery-img 463 | display: none 464 | max-width: 100% 465 | &:first-child 466 | display: block 467 | &.loaded 468 | position: absolute 469 | display: block 470 | img 471 | display: block 472 | max-width: 100% 473 | margin: 0 auto 474 | /* 475 | $article-gallery-ctrl 476 | position: absolute 477 | top: 0 478 | height: 100% 479 | width: 60px 480 | color: #fff 481 | opacity: 0.3 482 | transition: opacity 0.2s 483 | cursor: pointer 484 | &:hover 485 | opacity: 0.8 486 | &:before 487 | font-size: 30px 488 | font-family: font-icon 489 | position: absolute 490 | top: 50% 491 | margin-top: @font-size * -0.5 492 | 493 | .article-gallery-prev 494 | @extend $article-gallery-ctrl 495 | left: 0 496 | &:before 497 | content: "\f053" 498 | left: 15px 499 | 500 | .article-gallery-next 501 | @extend $article-gallery-ctrl 502 | right: 0 503 | &:before 504 | content: "\f054" 505 | right: 15px*/ 506 | 507 | 508 | /*toc*/ 509 | #toc-sidebar 510 | @media mq-normal 511 | column(sidebar-column) 512 | transition:all .2s; 513 | -moz-transition:all .2s; /* Firefox 4 */ 514 | -webkit-transition:all .2s; /* Safari and Chrome */ 515 | -o-transition:all .2s; /* Opera */ 516 | transition-timing-function: linear; 517 | -moz-transition-timing-function: linear; /* Firefox 4 */ 518 | -webkit-transition-timing-function: linear; /* Safari 和 Chrome */ 519 | -o-transition-timing-function: linear; /* Opera */ 520 | visibility: visible 521 | opacity: 1 522 | @media mq-mobile 523 | display: none 524 | 525 | .toc-article 526 | position: absolute 527 | border-left: rgba(88,88,88,0.1) 1px solid 528 | margin: 50px 0 529 | padding 1em 1em 0 1em 530 | 531 | .toc-title 532 | font-size 120% 533 | 534 | #toc 535 | width: inherit 536 | line-height 1em 537 | font-size 0.9em 538 | float left 539 | overflow-x: hidden 540 | overflow-y: auto 541 | @media mq-mobile 542 | display: none 543 | @media mq-tablet 544 | display: none 545 | 546 | .toc-fixed 547 | position: fixed; 548 | top: 30px; 549 | margin-top: 0; 550 | max-height: auto; 551 | overflow: hidden; 552 | z-index: 1; 553 | 554 | .nav 555 | max-height: -webkit-fill-available 556 | padding 0 557 | margin 1em 558 | line-height 1.8em 559 | li 560 | list-style-type none 561 | a:hover 562 | background-color: transparent !important 563 | .active > a 564 | color: color-theme 565 | 566 | .nav-link 567 | font-family: font-apple-pingfang 568 | color: color-sidebar-text 569 | padding 1px !important 570 | &:hover 571 | color: color-theme 572 | 573 | .nav-child 574 | margin-left 1.0em 575 | 576 | 577 | .post-copyright { 578 | margin: 2em 0 0; 579 | padding: 0.5em 1em; 580 | border-left: 3px solid #FF1700; 581 | background-color: #F9F9F9; 582 | list-style: none; 583 | } 584 | 585 | .post-copyright li { 586 | line-height: 30px; 587 | } 588 | -------------------------------------------------------------------------------- /source/css/_partial/comment.styl: -------------------------------------------------------------------------------- 1 | #comments 2 | padding: article-padding 3 | margin: block-margin 0 4 | a 5 | color: color-link -------------------------------------------------------------------------------- /source/css/_partial/footer.styl: -------------------------------------------------------------------------------- 1 | #footer 2 | width: 100%; 3 | background: color-footer-background; 4 | text-align: center; 5 | color: #88888b; 6 | padding: 30px 0 15px; 7 | line-height: 22px; 8 | border-color: #e0e0e0; 9 | font-size: 0.85em; 10 | a 11 | text-decoration: none 12 | &:hover 13 | color: color-theme; 14 | text-decoration: none 15 | 16 | #footer-info 17 | line-height: line-height 18 | font-size: 0.85em -------------------------------------------------------------------------------- /source/css/_partial/header-post.styl: -------------------------------------------------------------------------------- 1 | avatarEnable = hexo-config("avatar.enable") 2 | avatarUrl = hexo-config("avatar.url") 3 | avatarWidth = hexo-config("avatar.width") 4 | avatarBorder = hexo-config("avatar.border") 5 | 6 | if avatarEnable == true 7 | _display = inline 8 | _margin = avatarWidth/-2 9 | _left = 50% 10 | if avatarBorder 11 | _margin -= 8 12 | else 13 | _display = block 14 | _margin = 0 15 | _left = 0% 16 | 17 | 18 | 19 | 20 | 21 | .navbar-nav>li>a:hover, .navbar-nav>li>a:focus 22 | border-bottom: 5px solid color-theme 23 | color: color-theme !important 24 | 25 | .navbar-inner 26 | min-height: 90px; 27 | box-shadow: 0 0 5px rgba(0,0,0,.1); 28 | border-top: 2px solid color-theme; 29 | 30 | .brand 31 | float: left; 32 | display: block; 33 | position: absolute; 34 | z-index: 1500; 35 | font-size: 20px; 36 | font-weight: 200; 37 | color: #555; 38 | border-style: solid; 39 | border-color: rgba(24,24,21,0.07); 40 | border-width: 0 8px 8px 8px; 41 | @media mq-mobile 42 | display: _display 43 | margin-left: 1px * _margin; 44 | left: _left; 45 | p 46 | margin: 0; 47 | padding: 0 20px 0 20px; 48 | color: #1d1d1b; 49 | height: 88px; 50 | line-height: 86px; 51 | text-transform: capitalize; 52 | font-family: "华文中宋", serif; 53 | font-weight: bold; 54 | font-size: 27px; 55 | letter-spacing: .2px; 56 | &:first-letter 57 | font-size:160%; 58 | background: #000; 59 | color: #fff; 60 | padding: 0 .2em 0 .2em 61 | margin: 0 3px 0 0 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | #search-form-wrap 71 | height: 50px 72 | .search-form 73 | position: relative 74 | height: 100% 75 | .search-form-input 76 | padding: 0 30px 0 15px 77 | height: 100% !important 78 | &::-webkit-search-results-decoration 79 | &::-webkit-search-cancel-button 80 | -webkit-appearance: none 81 | .search-form-submit 82 | top: 50% 83 | right: 10px 84 | border: none 85 | background: none 86 | cursor: pointer 87 | margin-top: -12px 88 | position: absolute 89 | font-family: 'FontAwesome' 90 | &:before 91 | color: #555 92 | content: '\f002' 93 | @media mq-mobile 94 | color: #fff 95 | &:hover, &:focus 96 | color: color-theme 97 | 98 | .search-form-input, 99 | .search-form-input.ins-search-input, 100 | .search-form-input.st-ui-search-input, 101 | .search-form-input.st-default-search-input 102 | -webkit-appearance: textarea 103 | appearance: textarea 104 | padding: 0 105 | width: 45px 106 | box-shadow: none 107 | color: color-default 108 | transition: 0.2s ease 109 | box-sizing: border-box 110 | height: auto !important 111 | line-height: line-height 112 | outline: none !important 113 | background: none !important 114 | font: font-size font-sans 115 | border: 0px 116 | &:focus 117 | border-color: color-link !important 118 | &::-webkit-search-results-decoration 119 | &::-webkit-search-cancel-button 120 | -webkit-appearance: none -------------------------------------------------------------------------------- /source/css/_partial/header.styl: -------------------------------------------------------------------------------- 1 | .navigater-list>a:hover { 2 | color: color-theme 3 | border-bottom: 5px solid color-theme; 4 | text-decoration: none; 5 | } 6 | 7 | .hr{ 8 | background: color-theme 9 | } 10 | 11 | 12 | /* for carousel */ 13 | .carousel-fade .carousel-inner .item { 14 | max-width: 100%; 15 | max-height: 100%; 16 | overflow: hidden; 17 | left:0; 18 | opacity: 0; 19 | transition-property: all; 20 | transition-duration: .6s; 21 | transition-timing-function:ease-in; 22 | } 23 | 24 | .carousel-fade .carousel-inner .item > img{ 25 | left: 0; 26 | position: relative; 27 | max-width: 1000000000%; 28 | } 29 | 30 | .carousel-fade .carousel-inner .active { 31 | left:0; 32 | opacity: 1; 33 | transition-property: all; 34 | transition-duration: .6s; 35 | transition-timing-function:ease-out; 36 | } 37 | 38 | .carousel-fade .carousel-inner .active.left, 39 | .carousel-fade .carousel-inner .active.right { 40 | left:0; 41 | opacity: 1; 42 | } 43 | 44 | .carousel-fade .carousel-inner .next.left, 45 | .carousel-fade .carousel-inner .prev.right { 46 | left:0; 47 | opacity: 1; 48 | } 49 | 50 | .carousel { 51 | position: absolute; 52 | max-width: 100%; 53 | max-height: 100%; 54 | overflow: hidden; 55 | } 56 | 57 | .carousel-inner { 58 | max-width: 100%; 59 | max-height: 100%; 60 | overflow: hidden; 61 | } 62 | 63 | .glyphicon-chevron-left:before { 64 | content: "" !important; 65 | } 66 | .glyphicon-chevron-right:before { 67 | content: "" !important; 68 | } 69 | 70 | /* 71 | WHAT IS NEW IN 3.3: "Added transforms to improve carousel performance in modern browsers." 72 | now override the 3.3 new styles for modern browsers & apply opacity 73 | */ 74 | @media all and (transform-3d), (-webkit-transform-3d) { 75 | .carousel-fade .carousel-inner > .item.next, 76 | .carousel-fade .carousel-inner > .item.active.right { 77 | left:0; 78 | opacity: 0; 79 | -webkit-transform: translate3d(0, 0, 0); 80 | transform: translate3d(0, 0, 0); 81 | } 82 | .carousel-fade .carousel-inner > .item.prev, 83 | .carousel-fade .carousel-inner > .item.active.left { 84 | left:0; 85 | opacity: 0; 86 | -webkit-transform: translate3d(0, 0, 0); 87 | transform: translate3d(0, 0, 0); 88 | } 89 | .carousel-fade .carousel-inner > .item.next.left, 90 | .carousel-fade .carousel-inner > .item.prev.right, 91 | .carousel-fade .carousel-inner > .item.active { 92 | left:0; 93 | opacity: 1; 94 | -webkit-transform: translate3d(0, 0, 0); 95 | transform: translate3d(0, 0, 0); 96 | } 97 | } -------------------------------------------------------------------------------- /source/css/_partial/insight.styl: -------------------------------------------------------------------------------- 1 | // Insight Search Styles 2 | ins-container-width = 540px 3 | ins-text-grey = #9a9a9a 4 | ins-border-grey = #e2e2e2 5 | ins-background-grey = #f7f7f7 6 | ins-background-blue = color-theme 7 | 8 | $ins-full-screen 9 | top: 0 10 | left: 0 11 | margin: 0 12 | width: 100% 13 | height: 100% 14 | 15 | .ins-search 16 | display: none 17 | &.show 18 | display: block 19 | 20 | .ins-selectable 21 | cursor: pointer 22 | 23 | .ins-search-mask, 24 | .ins-search-container 25 | position: fixed 26 | 27 | .ins-search-mask 28 | top: 0 29 | left: 0 30 | width: 100% 31 | height: 100% 32 | z-index: 100 33 | background: rgba(0,0,0,0.5) 34 | 35 | .ins-input-wrapper 36 | position: relative 37 | 38 | .ins-search-input 39 | width: 100% 40 | border: none 41 | outline: none 42 | font-size: 16px 43 | box-shadow: none 44 | font-weight: 200 45 | border-radius: 0 46 | background: white 47 | line-height: 20px 48 | box-sizing: border-box 49 | padding: 12px 28px 12px 20px 50 | border-bottom: 1px solid ins-border-grey 51 | font-family: "Microsoft Yahei Light", "Microsoft Yahei", Helvetica, Arial, sans-serif 52 | 53 | .ins-close 54 | top: 50% 55 | right: 6px 56 | width: 20px 57 | height: 20px 58 | font-size: 16px 59 | margin-top: -11px 60 | position: absolute 61 | text-align: center 62 | display: inline-block 63 | &:hover 64 | color: ins-background-blue 65 | 66 | .ins-search-container 67 | left: 50% 68 | top: 100px 69 | z-index: 101 70 | bottom: 100px 71 | box-sizing: border-box 72 | width: ins-container-width 73 | margin-left: -(ins-container-width/2) 74 | @media screen and (max-width: 559px), screen and (max-height: 479px) 75 | top: 0 76 | left: 0 77 | margin: 0 78 | width: 100% 79 | height: 100% 80 | background: ins-background-grey 81 | 82 | .ins-section-wrapper 83 | left: 0 84 | right: 0 85 | top: 45px 86 | bottom: 0 87 | overflow-y: auto 88 | position: absolute 89 | 90 | .ins-section-container 91 | position: relative 92 | background: ins-background-grey 93 | 94 | .ins-section 95 | font-size: 14px 96 | line-height: 16px 97 | .ins-section-header, 98 | .ins-search-item 99 | padding: 8px 15px 100 | .ins-section-header 101 | color: ins-text-grey 102 | border-bottom: 1px solid ins-border-grey 103 | .ins-slug 104 | margin-left: 5px 105 | color: ins-text-grey 106 | &:before 107 | content: '(' 108 | &:after 109 | content: ')' 110 | .ins-search-item 111 | header, 112 | .ins-search-preview 113 | overflow: hidden 114 | white-space: nowrap 115 | text-overflow: ellipsis 116 | header 117 | .fa 118 | margin-right: 8px 119 | .ins-search-preview 120 | height: 15px 121 | font-size: 12px 122 | color: ins-text-grey 123 | margin: 5px 0 0 20px 124 | &:hover, 125 | &.active 126 | color: white 127 | background: ins-background-blue 128 | .ins-slug, 129 | .ins-search-preview 130 | color: white -------------------------------------------------------------------------------- /source/css/_partial/mobile.styl: -------------------------------------------------------------------------------- 1 | @media mq-mobile 2 | #mobile-nav 3 | position: absolute 4 | top: 0 5 | left: 0 6 | width: 100% 7 | height: 100% 8 | background: color-mobile-nav-background 9 | border-right: 1px solid #fff 10 | 11 | @media mq-mobile 12 | .mobile-nav-link 13 | display: block 14 | color: color-grey 15 | text-decoration: none 16 | padding: 15px 20px 17 | font-weight: bold 18 | &:hover 19 | color: #fff 20 | -------------------------------------------------------------------------------- /source/css/_partial/sidebar-aside.styl: -------------------------------------------------------------------------------- 1 | #sidebar 2 | @media mq-normal 3 | column(sidebar-column) 4 | @media mq-mobile 5 | display: none 6 | 7 | .widget-wrap 8 | margin: block-margin 0 9 | 10 | .widget-title 11 | @extend $block-caption 12 | 13 | .widget 14 | color: color-sidebar-text 15 | background: transparent 16 | border: 1px solid color-widget-border 17 | padding: 15px 18 | border-radius: 3px 19 | a 20 | color: #555 21 | text-decoration: none 22 | &:hover 23 | color: color-link-hover 24 | text-decoration: none 25 | ul, ol, dl 26 | ul, ol, dl 27 | margin-left: 15px 28 | list-style: disc 29 | 30 | 31 | .widget_athemes_social_icons li 32 | float: left; -------------------------------------------------------------------------------- /source/css/_partial/sidebar-bottom.styl: -------------------------------------------------------------------------------- 1 | .widget-wrap 2 | margin-bottom: block-margin !important 3 | @media mq-normal 4 | column(main-column) 5 | 6 | .widget-title 7 | color: #ccc 8 | text-transform: uppercase 9 | letter-spacing: 2px 10 | margin-bottom: .5em 11 | line-height: 1em 12 | font-weight: bold 13 | 14 | .widget 15 | color: color-grey 16 | ul, ol 17 | li 18 | display: inline-block 19 | zoom:1 20 | *display:inline 21 | padding-right: .75em 22 | /* Having problems getting balanced white space between items 23 | li:before 24 | content: " | " 25 | li:first-child:before 26 | content: none 27 | */ 28 | 29 | 30 | .widget_athemes_social_icons li 31 | float: none; 32 | -------------------------------------------------------------------------------- /source/css/_partial/sidebar.styl: -------------------------------------------------------------------------------- 1 | if sidebar is bottom 2 | @import "sidebar-bottom" 3 | else 4 | @import "sidebar-aside" 5 | 6 | .widget 7 | @extend $base-style 8 | line-height: line-height 9 | word-wrap: break-word 10 | font-size: 0.9em 11 | ul, ol 12 | list-style: none 13 | margin: 0 14 | ul, ol 15 | margin: 0 20px 16 | ul 17 | list-style: disc 18 | ol 19 | list-style: decimal 20 | 21 | .category-list-count 22 | .tag-list-count 23 | .archive-list-count 24 | padding-left: 5px 25 | color: color-grey 26 | font-size: 0.85em 27 | &:before 28 | content: "(" 29 | &:after 30 | content: ")" 31 | 32 | .tagcloud 33 | a 34 | margin-right: 5px 35 | display: inline-block 36 | 37 | 38 | .widget_athemes_social_icons li 39 | padding: 0; 40 | text-align: center; 41 | border: none; 42 | 43 | 44 | .widget_athemes_social_icons li a [class^="fa"]:before 45 | width: 39px; 46 | margin: 0; 47 | font-size: 23px; 48 | line-height: 40px; 49 | 50 | [class^="ico-"]:before, [class*=" ico-"]:before, [class^="fa-"]:before, [class*=" fa-"]:before { 51 | font-family: "athemes-glyphs"; 52 | font-family: 'FontAwesome'; 53 | font-style: normal; 54 | font-weight: normal; 55 | speak: none; 56 | display: inline-block; 57 | text-decoration: inherit; 58 | width: 1em; 59 | margin-right: .2em; 60 | text-align: center; 61 | /* opacity: .8; */ 62 | font-variant: normal; 63 | text-transform: none; 64 | line-height: 1em; 65 | margin-left: 0em; 66 | /* font-size: 120%; */ 67 | /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ 68 | } -------------------------------------------------------------------------------- /source/css/_util/grid.styl: -------------------------------------------------------------------------------- 1 | ///////////////// 2 | // Semantic.gs // for Stylus: http://learnboost.github.com/stylus/ 3 | ///////////////// 4 | 5 | // Utility function — you should never need to modify this 6 | // _gridsystem-width = (column-width + gutter-width) * columns 7 | gridsystem-width(_columns = columns) 8 | (column-width + gutter-width) * _columns 9 | 10 | // Set @total-width to 100% for a fluid layout 11 | // total-width = gridsystem-width(columns) 12 | total-width = 100% 13 | 14 | ////////// 15 | // GRID // 16 | ////////// 17 | 18 | body 19 | clearfix() 20 | width: 100% 21 | 22 | row(_columns = columns) 23 | clearfix() 24 | display: block 25 | width: total-width * ((gutter-width + gridsystem-width(_columns)) / gridsystem-width(_columns)) 26 | margin: 0 total-width * (((gutter-width * .5) / gridsystem-width(_columns)) * -1) 27 | 28 | column(x, _columns = columns) 29 | display: inline 30 | float: left 31 | width: total-width * ((((gutter-width + column-width) * x) - gutter-width) / gridsystem-width(_columns)) 32 | margin: 0 total-width * ((gutter-width * .5) / gridsystem-width(_columns)) 33 | 34 | push(offset = 1) 35 | margin-left: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns)) 36 | 37 | pull(offset = 1) 38 | margin-right: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns)) -------------------------------------------------------------------------------- /source/css/_util/mixin.styl: -------------------------------------------------------------------------------- 1 | // http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/ 2 | hide-text() 3 | text-indent: 100% 4 | white-space: nowrap 5 | overflow: hidden 6 | 7 | // http://codepen.io/shshaw/full/gEiDt 8 | absolute-center(width, height = width) 9 | // margin: auto 10 | // position: absolute 11 | // top: 50% 12 | // top: 0 13 | // left: 0 14 | // bottom: 0 15 | // right: 0 16 | // width: width 17 | // height: height 18 | // overflow: auto 19 | width: width 20 | height: height 21 | position: absolute 22 | top: 50% 23 | left: 50% 24 | margin-top: width * -0.5 25 | margin-left: height * -0.5 26 | 27 | avoid-column-break() 28 | vendor("column-break-inside", avoid, only: webkit) 29 | page-break-inside: avoid // for firefox 30 | overflow: hidden // fix for firefox 31 | break-inside: avoid-column 32 | -------------------------------------------------------------------------------- /source/css/_variables.styl: -------------------------------------------------------------------------------- 1 | // Config 2 | support-for-ie = false 3 | vendor-prefixes = webkit moz ms official 4 | 5 | // Colors 6 | color-default = #444 7 | color-grey = #999 8 | color-black = #33363b 9 | color-border = #eef1f8 10 | color-link = #0e83cd 11 | color-link-bg = #f9fbfd 12 | color-link-hover = color-theme 13 | color-background = #fff 14 | color-code-background = #f8f8f8 15 | color-sidebar-text = #777 16 | color-widget-background = #ddd 17 | color-widget-border = rgba(58,61,98,0.1) 18 | color-footer-background = #f0f0f0 19 | color-mobile-nav-background = #191919 20 | color-theme-blue-twitter = #00aced 21 | color-theme-red = #ff7e79 22 | color-theme-orange = #fb6d19 23 | color-theme-green = #39aa56 24 | color-theme-green-light = #42b983 25 | color-theme-black = #414141 26 | 27 | // Theme 28 | color-theme = color-theme-orange 29 | 30 | random(min,max) 31 | return floor(math(0, 'random')*(max - min + 1) + min) 32 | 33 | theme_color = hexo-config("theme_color") 34 | 35 | if theme_color and theme_color is 'random' 36 | num = random(0, 5) 37 | if num == 0 38 | color-theme = color-theme-green 39 | if num == 1 40 | color-theme = color-theme-black 41 | if num == 2 42 | color-theme = color-theme-green-light 43 | if num == 3 44 | color-theme = color-theme-red 45 | if num == 4 46 | color-theme = color-theme-blue-twitter 47 | if num == 5 48 | color-theme = color-theme-orange 49 | else if theme_color is 'orange' 50 | color-theme = color-theme-orange 51 | else if theme_color is 'blue' 52 | color-theme = color-theme-blue-twitter 53 | else if theme_color is 'red' 54 | color-theme = color-theme-red 55 | else if theme_color is 'green' 56 | color-theme = color-theme-green 57 | else if theme_color is 'black' 58 | color-theme = color-theme-black 59 | 60 | 61 | // Fonts 62 | font-sans = -apple-system, "Arial", BlinkMacSystemFont, 63 | "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", 64 | "Fira Sans", "Droid Sans", "Helvetica Neue", 65 | sans-serif 66 | font-normal = Arial,"open sans", "Helvetica Neue",Helvetica Neue,Helvetica,Hiragino Sans GB,Microsoft Yahei, sans-serif; 67 | font-serif = Georgia, "Arial", "Times New Roman", serif 68 | font-mono = "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace 69 | font-apple-pingfang = 'HanHei SC', 'PingFang SC', 'Helvetica Neue', 'Helvetica', 'Microsoft Yahei Light', 'STHeitiSC-Light', 'Arial', sans-serif 70 | font-futura-pt = "futura-pt", Helvetica, Arial, "Hiragino Sans GB", "Hiragino Sans GB W3", Microsoft JhengHei, WenQuanYi Micro Hei, "Microsoft YaHei", sans-serif 71 | font-article-header = Arial, "Hiragino Sans GB", "Microsoft YaHei Light", "微软雅黑", SimSun, "宋体", Helvetica, Tahoma, "Arial sans-serif" 72 | font-icon = FontAwesome 73 | font-icon-path = "fonts/fontawesome-webfont" 74 | font-icon-version = "4.0.3" 75 | font-size = 14px 76 | line-height = 1.6em 77 | line-height-title = 1em 78 | 79 | // Header 80 | logo-size = 40px 81 | subtitle-size = 16px 82 | banner-height = 300px 83 | banner-url = "images/banner.jpg" 84 | 85 | sidebar = hexo-config("sidebar") 86 | 87 | // Layout 88 | block-margin = 50px 89 | article-padding = 20px 90 | mobile-nav-width = 280px 91 | main-column = 9 92 | sidebar-column = 3 93 | 94 | if sidebar and sidebar isnt bottom 95 | _sidebar-column = sidebar-column 96 | main-column = 9 97 | else 98 | _sidebar-column = 0 99 | main-column = 12 100 | 101 | // Grids 102 | column-width = 65px 103 | gutter-width = 20px 104 | columns = main-column + _sidebar-column 105 | 106 | // Media queries 107 | mq-mobile = "screen and (max-width: 479px)" 108 | mq-tablet = "screen and (min-width: 480px) and (max-width: 767px)" 109 | mq-normal = "screen and (min-width: 768px)" -------------------------------------------------------------------------------- /source/css/archive.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | font-size: 16px; 3 | margin-top: 8px; 4 | margin-bottom: 8px; 5 | } 6 | h1>a { 7 | font-family: arial, "Hiragino Sans GB", "Microsoft Yahei", 微软雅黑, 宋体, Tahoma, Arial, Helvetica, STHeiti; 8 | } -------------------------------------------------------------------------------- /source/css/dialog.css: -------------------------------------------------------------------------------- 1 | 2 | .modal-content { 3 | background-color: #ffffff; 4 | border: 1px solid #999999; 5 | border: 1px solid rgba(0, 0, 0, 0.2); 6 | border-radius: 0px; 7 | } 8 | .modal-body { 9 | text-align: center; 10 | position: relative; 11 | margin: 0; 12 | } 13 | .modal-title { 14 | color: #000; 15 | font-family: "黑体",Sans-Serif; 16 | text-align: center; 17 | font-weight: bold; 18 | } 19 | .modal-body>div>a{ 20 | text-decoration:none; 21 | padding: 20px; 22 | line-height:300%; 23 | font-size: 20px; 24 | color: #000; 25 | } 26 | .modal-body>div>a:hover,.modal-body>div>a:focus{ 27 | border-bottom: 0px; 28 | background-color: #333; 29 | color:#fff; 30 | } 31 | .modal-header { 32 | padding: 20px; 33 | border-bottom: 0px; 34 | } 35 | .modal-footer { 36 | padding: 10px 20px 10px; 37 | margin-top: 0px; 38 | text-align: center; 39 | border-top: 0px; 40 | } 41 | .close { 42 | float:inherit; 43 | font-size: 50px; 44 | font-weight: bold; 45 | line-height: 1; 46 | color: #555; 47 | text-shadow: 0 1px 0 #ffffff; 48 | opacity: 1.0; 49 | filter: alpha(opacity=100); 50 | } 51 | .modal-dialog { 52 | padding-top: 150px; 53 | padding-bottom: 80px; 54 | } 55 | .panel-body { 56 | font-family: "楷体", "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace; 57 | color:#333; 58 | } -------------------------------------------------------------------------------- /source/css/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /source/css/fonts/FuturaPTBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/FuturaPTBold.otf -------------------------------------------------------------------------------- /source/css/fonts/FuturaPTBoldOblique.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/FuturaPTBoldOblique.otf -------------------------------------------------------------------------------- /source/css/fonts/FuturaPTBook.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/FuturaPTBook.otf -------------------------------------------------------------------------------- /source/css/fonts/FuturaPTBookOblique.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/FuturaPTBookOblique.otf -------------------------------------------------------------------------------- /source/css/fonts/FuturaPTMedium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/FuturaPTMedium.otf -------------------------------------------------------------------------------- /source/css/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /source/css/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /source/css/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /source/css/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /source/css/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /source/css/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /source/css/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /source/css/header-post.css: -------------------------------------------------------------------------------- 1 | .hnav { 2 | position: relative; 3 | left: 0; 4 | display: block; 5 | float: right; 6 | margin: 20px 0 0 0; 7 | font-family: Microsoft JhengHei,Roboto,Helvetica,Arial,sans-serif; 8 | font-size: 16px; 9 | font-weight: 100; 10 | letter-spacing: .1px; 11 | } 12 | 13 | #allheader { 14 | background: linear-gradient(120deg, #155799, #159957); 15 | background: transparent; 16 | z-index: 2; 17 | } 18 | .navbar-default .navbar-nav > li > a { 19 | color: #555; 20 | position: relative; 21 | display: block; 22 | padding: 15px 15px; 23 | } 24 | .navbar-toggle { 25 | margin-top: 28px; 26 | margin-bottom: 28px; 27 | margin-right: 0px; 28 | background-color: transparent; 29 | border: 1px solid transparent; 30 | } 31 | 32 | @media (max-width: 767px) { 33 | .container{ 34 | padding-top: 0px; 35 | } 36 | .navbar .container { 37 | text-align: center; 38 | width: auto; 39 | } 40 | .navbar-collapse { 41 | max-height: inherit; 42 | background: rgba(48,51,58,0.98); 43 | color: #fff; 44 | width: 100%; 45 | top: 91px; 46 | left: 20px; 47 | right: 0; 48 | margin: 0 0 0 -20px; 49 | padding: 0; 50 | float: none; 51 | position: absolute; 52 | text-align: center; 53 | font-weight: lighter; 54 | } 55 | .hnav { 56 | float: none; 57 | margin: 80px 0 40px 0; 58 | padding: 0 20%; 59 | } 60 | .container > .navbar-collapse { 61 | margin-right: 0px; 62 | margin-left: -20px; 63 | border: 0px; 64 | } 65 | .navbar-default .navbar-nav>li>a { 66 | color: #fff; 67 | } 68 | .navbar-default .navbar-nav>li>a:hover, .navbar-nav>li>a:focus { 69 | border-bottom: 0px; 70 | background-color: #fff; 71 | } 72 | } -------------------------------------------------------------------------------- /source/css/home.css: -------------------------------------------------------------------------------- 1 | 2 | body{ 3 | width:100%; 4 | height:100%; 5 | padding: 0; 6 | margin: 0; 7 | } 8 | 9 | html{ 10 | width:100%; 11 | height:100%; 12 | } 13 | 14 | #header { 15 | height: 100%; 16 | overflow: hidden; 17 | } 18 | 19 | .section-intro { 20 | display: table; 21 | width: 100%; 22 | height: 100%; 23 | text-align: center; 24 | background-color: #ffffff; 25 | } 26 | 27 | .section-content { 28 | padding-top: 20px; 29 | padding-bottom: 60px; 30 | background-color: #ffffff; 31 | } 32 | 33 | .intro-logo{ 34 | width: 100%; 35 | height: 100%; 36 | margin-bottom: -5px; 37 | -moz-user-select: none; 38 | -webkit-user-select: none; 39 | -ms-user-select: none; 40 | -khtml-user-select: none; 41 | user-select: none; 42 | text-align: center; 43 | overflow: hidden; 44 | } 45 | .intro-navigate{ 46 | width: 100%; 47 | position: absolute; 48 | bottom: 0px; 49 | padding-top: 10px; 50 | padding-bottom: 10px; 51 | text-align: center; 52 | border-bottom: 1px solid #eef1f8; 53 | background: rgba(255,255,255,.9); 54 | backdrop-filter: saturate(180%) blur(20px); 55 | -webkit-backdrop-filter: saturate(180%) blur(20px); 56 | -moz-user-select: none; 57 | -webkit-user-select: none; 58 | -ms-user-select: none; 59 | -khtml-user-select: none; 60 | user-select: none; 61 | } 62 | /*.intro-logo:before{ 63 | content: ""; 64 | display: block; 65 | top: 0; 66 | right: 0; 67 | left: 0; 68 | bottom: 0; 69 | position: absolute; 70 | background: #a83279; 71 | background-repeat: repeat-x; 72 | background-image: -webkit-linear-gradient(-45deg,#a83279,#d38312); 73 | background-image: linear-gradient(-45deg,#a83279,#d38312); 74 | opacity: .7; 75 | filter: alpha(opacity=70); 76 | }*/ 77 | .intro-navigate>p{ 78 | text-align: center; 79 | margin: 0px; 80 | } 81 | .intro-navigate.fixed { 82 | width: 100%; 83 | left: 0; 84 | position: fixed; 85 | top: 0; 86 | bottom: inherit; 87 | z-index: 99; 88 | background: rgba(255,255,255,.95); 89 | transition: background 2s; 90 | } 91 | .navigater-list{ 92 | font-family: "Microsoft YaHei","微软雅黑",Arial,simsun,"宋体"; 93 | color:#444444; 94 | font-weight: 100; 95 | font-size: 1.2em; 96 | } 97 | .navigater-list>a { 98 | padding: 25px 20px 25px 20px; 99 | line-height: 60px; 100 | } 101 | .home-bg{ 102 | width: 100%; 103 | height: 100%; 104 | text-align: center; 105 | position: absolute; 106 | bottom: 100px; 107 | background: url(../images/sample.jpg) no-repeat bottom center scroll; 108 | background-color: #fff; 109 | -webkit-background-size: cover; 110 | -moz-background-size: cover; 111 | background-size: cover; 112 | -o-background-size: cover; 113 | } 114 | 115 | .blur{ 116 | filter: url(blur.svg#blur); /* FireFox, Chrome, Opera */ 117 | 118 | -webkit-filter: blur(5px); /* Chrome, Opera */ 119 | -moz-filter: blur(5px); 120 | -ms-filter: blur(5px); 121 | filter: blur(5px); 122 | 123 | filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=5, MakeShadow=false); /* IE6~IE9 */ 124 | } 125 | 126 | .homelogo{ 127 | max-width: 400px; 128 | height: auto; 129 | padding: 10px; 130 | position: absolute; 131 | top: 50%; 132 | left: 50%; 133 | margin-top: -100px; 134 | backdrop-filter: saturate(180%) blur(20px); 135 | -webkit-backdrop-filter: saturate(180%) blur(20px); 136 | -webkit-background-size: cover; 137 | -moz-background-size: cover; 138 | background-size: cover; 139 | -o-background-size: cover; 140 | filter:alpha(opacity=90); -moz-opacity:0.9; -khtml-opacity: 0.9; opacity: 0.9; 141 | } 142 | .homelogoback { 143 | overflow: hidden; 144 | padding: 20px; 145 | margin-left: auto; 146 | margin-right: auto; 147 | filter:alpha(opacity=90); -moz-opacity:0.9; -khtml-opacity: 0.9; opacity: 0.9; 148 | } 149 | .homelogoback>h1>a { 150 | color: #000; 151 | letter-spacing: 9px; 152 | text-transform: uppercase; 153 | } 154 | 155 | .thumb{ 156 | display: block; 157 | height: auto; 158 | max-width: 100%; 159 | padding: 5px; 160 | margin-bottom: 20px; 161 | line-height: 1.428571429; 162 | background-color: #fff; 163 | border: 1px solid #fff; 164 | -webkit-transition: all 0.5s ease-in-out; 165 | transition: all 0.5s ease-in-out; 166 | } 167 | .thumb:hover{ 168 | opacity: 0.95; 169 | } 170 | .image{ 171 | height: 200px; 172 | width: auto; 173 | overflow: hidden; 174 | } 175 | .image>img{ 176 | height: 100%; 177 | width: 100%; 178 | display: block; 179 | } 180 | 181 | #footer { 182 | width: 100%; 183 | background: #292b31; 184 | text-align: center; 185 | color: #BBB; 186 | padding: 30px 0 15px; 187 | line-height: 22px; 188 | } 189 | 190 | h1 { 191 | font-family: "futura-pt",Helvetica,Arial,"Hiragino Sans GB","Hiragino Sans GB W3",Microsoft JhengHei,WenQuanYi Micro Hei,"Microsoft YaHei",sans-serif; 192 | font-weight: bold; 193 | font-size: 25px; 194 | margin: 12px 0; 195 | left: 4px; 196 | } 197 | h3 { 198 | font-family: "futura-pt-light", Helvetica, Arial, "Hiragino Sans GB", "Hiragino Sans GB W3", Microsoft JhengHei, WenQuanYi Micro Hei, "Microsoft YaHei", sans-serif; 199 | font-weight: normal; 200 | font-size: 20px; 201 | margin-bottom: 30px; 202 | left: 3px; 203 | } 204 | #beautifont{ 205 | font-family: Microsoft JhengHei,Roboto,Helvetica,Arial,sans-serif; 206 | } 207 | canvas { 208 | top: 0; 209 | left: 0; 210 | z-index: 0; 211 | width: 100%; 212 | height: 100%; 213 | pointer-events: none; 214 | } 215 | a { 216 | color: #000; 217 | text-decoration: none; 218 | transition: color,background-color .2s ease; 219 | } 220 | 221 | footer>.container>.row>p>a { 222 | color: #ddd; 223 | } 224 | footer>.container>.row>p>a:hover { 225 | color: #f33; 226 | } 227 | 228 | @media (max-width: 680px) { 229 | .pagination-lg > li > a, .pagination-lg > li > span { 230 | padding: 10px 12px; 231 | font-size: 16px; 232 | } 233 | .navigater-list>a { 234 | padding: 5px; 235 | line-height: 40px; 236 | } 237 | .homelogoback>h1>a { 238 | font-size: 20px; 239 | font-weight: bold; 240 | letter-spacing: 5px; 241 | } 242 | .homelogoback>h3 { 243 | font-size: 16px; 244 | } 245 | h1{ 246 | font-size: 1.5em; 247 | } 248 | h2{ 249 | font-size: 1.3em; 250 | } 251 | h3{ 252 | font-size: 1.2em; 253 | } 254 | h4{ 255 | font-size: 1.1em; 256 | } 257 | 258 | } 259 | 260 | @media (max-width: 400px) { 261 | .homelogoback>h1>a { 262 | font-size: 22px; 263 | font-weight: bold; 264 | letter-spacing: 4px; 265 | } 266 | } 267 | -------------------------------------------------------------------------------- /source/css/images/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/images/avatar.jpg -------------------------------------------------------------------------------- /source/css/images/home-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/images/home-bg.jpg -------------------------------------------------------------------------------- /source/css/images/homelogo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/images/homelogo.jpg -------------------------------------------------------------------------------- /source/css/images/mylogo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/images/mylogo.jpg -------------------------------------------------------------------------------- /source/css/images/pose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/images/pose.jpg -------------------------------------------------------------------------------- /source/css/images/rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/images/rocket.png -------------------------------------------------------------------------------- /source/css/images/sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/css/images/sample.jpg -------------------------------------------------------------------------------- /source/css/style.styl: -------------------------------------------------------------------------------- 1 | @import "nib" 2 | @import "_variables" 3 | @import "_util/mixin" 4 | @import "_util/grid" 5 | 6 | global-reset() 7 | 8 | input, button 9 | margin: 0 10 | padding: 0 11 | &::-moz-focus-inner 12 | border: 0 13 | padding: 0 14 | 15 | @font-face 16 | font-family: "微软雅黑" 17 | font-style: normal 18 | font-weight: normal 19 | src: url(font-icon-path + ".eot?v=#" + font-icon-version) 20 | src: url(font-icon-path + ".eot?#iefix&v=#" + font-icon-version) format("embedded-opentype"), 21 | url(font-icon-path + ".woff?v=#" + font-icon-version) format("woff"), 22 | url(font-icon-path + ".ttf?v=#" + font-icon-version) format("truetype"), 23 | url(font-icon-path + ".svg#fontawesomeregular?v=#" + font-icon-version) format("svg") 24 | 25 | html, body, #container 26 | height: 100% 27 | 28 | body 29 | background: color-background 30 | font: font-size font-normal 31 | -webkit-text-size-adjust: 100% 32 | text-rendering: optimizelegibility; 33 | 34 | ::selection { 35 | background: color-theme 36 | color: #fff 37 | } 38 | 39 | .MathJax_Display 40 | overflow: auto 41 | padding: 1em 0 42 | 43 | .article-entry h2, .article-entry h3, .article-entry h4, .article-entry h5, .article-entry h6 44 | color: color-theme 45 | 46 | #rocket 47 | position: fixed; 48 | right: 50px; 49 | bottom: 60px; 50 | display: block; 51 | visibility: hidden; 52 | width: 26px; 53 | height: 48px; 54 | background: url(images/rocket.png) no-repeat 50% 0; 55 | opacity: 0; 56 | -webkit-transition: visibility 0.6s cubic-bezier(0.6, 0.04, 0.98, 0.335), opacity 0.6s cubic-bezier(0.6, 0.04, 0.98, 0.335), -webkit-transform 0.6s cubic-bezier(0.6, 0.04, 0.98, 0.335); 57 | -moz-transition: visibility 0.6s cubic-bezier(0.6, 0.04, 0.98, 0.335), opacity 0.6s cubic-bezier(0.6, 0.04, 0.98, 0.335), -moz-transform 0.6s cubic-bezier(0.6, 0.04, 0.98, 0.335); 58 | transition: visibility 0.6s cubic-bezier(0.6, 0.04, 0.98, 0.335), opacity 0.6s cubic-bezier(0.6, 0.04, 0.98, 0.335), transform 0.6s cubic-bezier(0.6, 0.04, 0.98, 0.335); 59 | @media mq-mobile 60 | right: 12px; 61 | bottom: 20px; 62 | @media mq-tablet 63 | right: 12px; 64 | bottom: 20px; 65 | #rocket i { 66 | display: block; 67 | margin-top: 48px; 68 | height: 14px; 69 | background: url(images/rocket.png) no-repeat 50% -48px; 70 | opacity: .5; 71 | -webkit-transition: -webkit-transform .2s; 72 | -moz-transition: -moz-transform .2s; 73 | transition: transform .2s; 74 | -webkit-transform-origin: 50% 0; 75 | -moz-transform-origin: 50% 0; 76 | transform-origin: 50% 0; } 77 | #rocket:hover { 78 | background-position: 50% -62px; } 79 | #rocket:hover i { 80 | background-position: 50% 100%; 81 | -webkit-animation: flaming .7s infinite; 82 | -moz-animation: flaming .7s infinite; 83 | animation: flaming .7s infinite; } 84 | #rocket.show { 85 | visibility: visible; 86 | opacity: 1; } 87 | #rocket.launch { 88 | background-position: 50% -62px; 89 | opacity: 0; 90 | -webkit-transform: translateY(-500px); 91 | -moz-transform: translateY(-500px); 92 | -ms-transform: translateY(-500px); 93 | transform: translateY(-500px); 94 | pointer-events: none; } 95 | #rocket.launch i { 96 | background-position: 50% 100%; 97 | -webkit-transform: scale(1.4, 3.2); 98 | -moz-transform: scale(1.4, 3.2); 99 | transform: scale(1.4, 3.2); } 100 | 101 | #menu-switch 102 | display: block; 103 | position: fixed; 104 | right: 49px; 105 | bottom: 20px; 106 | padding: 0.2em 0 0.2em 0.2em; 107 | border: 1px solid #DDD; 108 | border-radius: 3px 109 | color: color-grey 110 | opacity: .6; 111 | @media mq-mobile 112 | display: none 113 | @media mq-tablet 114 | display: none 115 | &:hover 116 | background: #F3F3F3 117 | opacity: 1; 118 | 119 | 120 | .toc-hide 121 | visibility: hidden !important 122 | opacity: 0 !important 123 | 124 | .outer 125 | clearfix() 126 | max-width: (column-width + gutter-width) * columns + gutter-width 127 | margin: 0 auto 128 | padding: 0 gutter-width 129 | 130 | .inner 131 | column(columns) 132 | 133 | .left, .alignleft 134 | float: left 135 | 136 | .right, .alignright 137 | float: right 138 | 139 | .clear 140 | clear: both 141 | 142 | #container 143 | position: relative 144 | 145 | .mobile-nav-on 146 | overflow: hidden 147 | 148 | #wrap 149 | width: 100% 150 | top: 0 151 | left: 0 152 | transition: 0.2s ease-out 153 | z-index: 1 154 | background: color-background 155 | .mobile-nav-on & 156 | left: mobile-nav-width 157 | 158 | if sidebar and sidebar isnt bottom 159 | #main 160 | @media mq-normal 161 | column(main-column) 162 | 163 | if sidebar is left 164 | @media mq-normal 165 | #main 166 | float: right 167 | 168 | @import "_extend" 169 | @import "_partial/header" 170 | @import "_partial/header-post" 171 | @import "_partial/article" 172 | @import "_partial/comment" 173 | @import "_partial/archive" 174 | @import "_partial/footer" 175 | @import "_partial/highlight" 176 | @import "_partial/mobile" 177 | @import "_partial/insight" 178 | 179 | if sidebar 180 | @import "_partial/sidebar" -------------------------------------------------------------------------------- /source/css/vdonate.css: -------------------------------------------------------------------------------- 1 | #donation_div{ 2 | text-align: center; 3 | } 4 | 5 | #donation_div a { 6 | color: #fff; 7 | font-size: 1.2em; 8 | text-decoration: none; 9 | } 10 | 11 | #donate-modal-container { 12 | display: none; 13 | height: 100%; 14 | width: 100%; 15 | top: 0; 16 | left: 0; 17 | z-index: 999; 18 | transform: scale(0) 19 | } 20 | 21 | #donate-modal-container.active { 22 | display: table; 23 | transform: scale(1) 24 | } 25 | 26 | #donate-modal-container.active .donate-modal-background { 27 | background: rgba(0,0,0,.05) 28 | } 29 | 30 | #donate-modal-container.active .donate-modal-background .donate-modal { 31 | animation: blowUpModal .5s cubic-bezier(.165,.84,.44,1) forwards 32 | } 33 | 34 | #donate-modal-container .donate-quote { 35 | padding: 0; 36 | margin: 0 37 | } 38 | 39 | #donate-modal-container .donate-quote-left { 40 | display: inline-block; 41 | vertical-align: text-bottom; 42 | width: 32px; 43 | height: 32px; 44 | background: url("https://ooo.0o0.ooo/2017/03/09/58c158afac35c.png") 45 | } 46 | 47 | #donate-modal-container .donate-quote-word { 48 | font-size: 1.2em; 49 | color: #bbb; 50 | } 51 | 52 | #donate-modal-container .donate-quote-right { 53 | display: inline-block; 54 | vertical-align: text-bottom; 55 | width: 32px; 56 | height: 32px; 57 | background: url("https://ooo.0o0.ooo/2017/03/09/58c1584d5fd9d.png") 58 | } 59 | 60 | #donate-modal-container .donate-tab { 61 | margin-top: 20px; 62 | font-size: 0 63 | } 64 | 65 | #donate-modal-container .donate-tab a { 66 | display: inline-block; 67 | padding: 10px 0; 68 | width: 120px; 69 | font-size: 16px; 70 | text-decoration: none; 71 | color: #333; 72 | background-color: #eee; 73 | transition: all .3s 74 | } 75 | 76 | #donate-modal-container .donate-tab .donate-wechat.active { 77 | background-color: #44b549; 78 | color: #fff 79 | } 80 | 81 | #donate-modal-container .donate-tab .donate-alipay.active { 82 | background-color: #059AE3; 83 | color: #fff 84 | } 85 | 86 | #donate-modal-container .donate-image { 87 | display: none; 88 | max-width: 300px; 89 | margin: 20px auto 90 | } 91 | 92 | #donate-modal-container .donate-image.active { 93 | display: block 94 | } 95 | 96 | #donate-modal-container .donate-modal-background { 97 | display: table-cell; 98 | background: transparent; 99 | text-align: center; 100 | vertical-align: middle 101 | } 102 | 103 | #donate-modal-container .donate-modal-background .donate-modal { 104 | display: inline-block; 105 | position: relative; 106 | box-sizing: border-box; 107 | background: #fff; 108 | width: 100%; 109 | padding: 50px; 110 | border-radius: 3px; 111 | font-weight: 300 112 | } 113 | 114 | .donate-btn { 115 | display: inline-block; 116 | padding: 8px 16px; 117 | border-radius: 5px; 118 | background-color: #44b549; 119 | color: #fff; 120 | text-decoration: none; 121 | margin: 20px 0; 122 | transition: all .3s 123 | } 124 | 125 | .donate-btn:hover { 126 | opacity: .8 127 | } 128 | 129 | .donate-btn .donate-qrcode { 130 | display: inline-block; 131 | margin-right: 5px; 132 | vertical-align: -0.2em; 133 | width: 16px; 134 | height: 16px; 135 | background: url("https://ooo.0o0.ooo/2017/03/09/58c16b1f3eaa4.png") no-repeat 136 | } 137 | 138 | @keyframes blowUpModal { 139 | 0% { 140 | transform: scale(0) 141 | } 142 | 143 | 100% { 144 | transform: scale(1) 145 | } 146 | } 147 | 148 | @media (max-width:768px) { 149 | #donate-modal-container .donate-modal-background .donate-modal { 150 | padding: 20px; 151 | width: 100% 152 | } 153 | 154 | #donate-modal-container .donate-modal-background .donate-image { 155 | width: 100% 156 | } 157 | } -------------------------------------------------------------------------------- /source/fancybox/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/fancybox/blank.gif -------------------------------------------------------------------------------- /source/fancybox/fancybox_loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/fancybox/fancybox_loading.gif -------------------------------------------------------------------------------- /source/fancybox/fancybox_loading@2x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/fancybox/fancybox_loading@2x.gif -------------------------------------------------------------------------------- /source/fancybox/fancybox_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/fancybox/fancybox_overlay.png -------------------------------------------------------------------------------- /source/fancybox/fancybox_sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/fancybox/fancybox_sprite.png -------------------------------------------------------------------------------- /source/fancybox/fancybox_sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/fancybox/fancybox_sprite@2x.png -------------------------------------------------------------------------------- /source/fancybox/helpers/fancybox_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/fancybox/helpers/fancybox_buttons.png -------------------------------------------------------------------------------- /source/fancybox/helpers/jquery.fancybox-buttons.css: -------------------------------------------------------------------------------- 1 | #fancybox-buttons { 2 | position: fixed; 3 | left: 0; 4 | width: 100%; 5 | z-index: 8050; 6 | } 7 | 8 | #fancybox-buttons.top { 9 | top: 10px; 10 | } 11 | 12 | #fancybox-buttons.bottom { 13 | bottom: 10px; 14 | } 15 | 16 | #fancybox-buttons ul { 17 | display: block; 18 | width: 166px; 19 | height: 30px; 20 | margin: 0 auto; 21 | padding: 0; 22 | list-style: none; 23 | border: 1px solid #111; 24 | border-radius: 3px; 25 | -webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); 26 | -moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); 27 | box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); 28 | background: rgb(50,50,50); 29 | background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%); 30 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51))); 31 | background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); 32 | background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); 33 | background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); 34 | background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); 35 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 ); 36 | } 37 | 38 | #fancybox-buttons ul li { 39 | float: left; 40 | margin: 0; 41 | padding: 0; 42 | } 43 | 44 | #fancybox-buttons a { 45 | display: block; 46 | width: 30px; 47 | height: 30px; 48 | text-indent: -9999px; 49 | background-color: transparent; 50 | background-image: url('fancybox_buttons.png'); 51 | background-repeat: no-repeat; 52 | outline: none; 53 | opacity: 0.8; 54 | } 55 | 56 | #fancybox-buttons a:hover { 57 | opacity: 1; 58 | } 59 | 60 | #fancybox-buttons a.btnPrev { 61 | background-position: 5px 0; 62 | } 63 | 64 | #fancybox-buttons a.btnNext { 65 | background-position: -33px 0; 66 | border-right: 1px solid #3e3e3e; 67 | } 68 | 69 | #fancybox-buttons a.btnPlay { 70 | background-position: 0 -30px; 71 | } 72 | 73 | #fancybox-buttons a.btnPlayOn { 74 | background-position: -30px -30px; 75 | } 76 | 77 | #fancybox-buttons a.btnToggle { 78 | background-position: 3px -60px; 79 | border-left: 1px solid #111; 80 | border-right: 1px solid #3e3e3e; 81 | width: 35px 82 | } 83 | 84 | #fancybox-buttons a.btnToggleOn { 85 | background-position: -27px -60px; 86 | } 87 | 88 | #fancybox-buttons a.btnClose { 89 | border-left: 1px solid #111; 90 | width: 35px; 91 | background-position: -56px 0px; 92 | } 93 | 94 | #fancybox-buttons a.btnDisabled { 95 | opacity : 0.4; 96 | cursor: default; 97 | } -------------------------------------------------------------------------------- /source/fancybox/helpers/jquery.fancybox-buttons.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Buttons helper for fancyBox 3 | * version: 1.0.5 (Mon, 15 Oct 2012) 4 | * @requires fancyBox v2.0 or later 5 | * 6 | * Usage: 7 | * $(".fancybox").fancybox({ 8 | * helpers : { 9 | * buttons: { 10 | * position : 'top' 11 | * } 12 | * } 13 | * }); 14 | * 15 | */ 16 | ;(function ($) { 17 | //Shortcut for fancyBox object 18 | var F = $.fancybox; 19 | 20 | //Add helper object 21 | F.helpers.buttons = { 22 | defaults : { 23 | skipSingle : false, // disables if gallery contains single image 24 | position : 'top', // 'top' or 'bottom' 25 | tpl : '
' 26 | }, 27 | 28 | list : null, 29 | buttons: null, 30 | 31 | beforeLoad: function (opts, obj) { 32 | //Remove self if gallery do not have at least two items 33 | 34 | if (opts.skipSingle && obj.group.length < 2) { 35 | obj.helpers.buttons = false; 36 | obj.closeBtn = true; 37 | 38 | return; 39 | } 40 | 41 | //Increase top margin to give space for buttons 42 | obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30; 43 | }, 44 | 45 | onPlayStart: function () { 46 | if (this.buttons) { 47 | this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn'); 48 | } 49 | }, 50 | 51 | onPlayEnd: function () { 52 | if (this.buttons) { 53 | this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn'); 54 | } 55 | }, 56 | 57 | afterShow: function (opts, obj) { 58 | var buttons = this.buttons; 59 | 60 | if (!buttons) { 61 | this.list = $(opts.tpl).addClass(opts.position).appendTo('body'); 62 | 63 | buttons = { 64 | prev : this.list.find('.btnPrev').click( F.prev ), 65 | next : this.list.find('.btnNext').click( F.next ), 66 | play : this.list.find('.btnPlay').click( F.play ), 67 | toggle : this.list.find('.btnToggle').click( F.toggle ), 68 | close : this.list.find('.btnClose').click( F.close ) 69 | } 70 | } 71 | 72 | //Prev 73 | if (obj.index > 0 || obj.loop) { 74 | buttons.prev.removeClass('btnDisabled'); 75 | } else { 76 | buttons.prev.addClass('btnDisabled'); 77 | } 78 | 79 | //Next / Play 80 | if (obj.loop || obj.index < obj.group.length - 1) { 81 | buttons.next.removeClass('btnDisabled'); 82 | buttons.play.removeClass('btnDisabled'); 83 | 84 | } else { 85 | buttons.next.addClass('btnDisabled'); 86 | buttons.play.addClass('btnDisabled'); 87 | } 88 | 89 | this.buttons = buttons; 90 | 91 | this.onUpdate(opts, obj); 92 | }, 93 | 94 | onUpdate: function (opts, obj) { 95 | var toggle; 96 | 97 | if (!this.buttons) { 98 | return; 99 | } 100 | 101 | toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn'); 102 | 103 | //Size toggle button 104 | if (obj.canShrink) { 105 | toggle.addClass('btnToggleOn'); 106 | 107 | } else if (!obj.canExpand) { 108 | toggle.addClass('btnDisabled'); 109 | } 110 | }, 111 | 112 | beforeClose: function () { 113 | if (this.list) { 114 | this.list.remove(); 115 | } 116 | 117 | this.list = null; 118 | this.buttons = null; 119 | } 120 | }; 121 | 122 | }(jQuery)); 123 | -------------------------------------------------------------------------------- /source/fancybox/helpers/jquery.fancybox-media.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Media helper for fancyBox 3 | * version: 1.0.6 (Fri, 14 Jun 2013) 4 | * @requires fancyBox v2.0 or later 5 | * 6 | * Usage: 7 | * $(".fancybox").fancybox({ 8 | * helpers : { 9 | * media: true 10 | * } 11 | * }); 12 | * 13 | * Set custom URL parameters: 14 | * $(".fancybox").fancybox({ 15 | * helpers : { 16 | * media: { 17 | * youtube : { 18 | * params : { 19 | * autoplay : 0 20 | * } 21 | * } 22 | * } 23 | * } 24 | * }); 25 | * 26 | * Or: 27 | * $(".fancybox").fancybox({, 28 | * helpers : { 29 | * media: true 30 | * }, 31 | * youtube : { 32 | * autoplay: 0 33 | * } 34 | * }); 35 | * 36 | * Supports: 37 | * 38 | * Youtube 39 | * http://www.youtube.com/watch?v=opj24KnzrWo 40 | * http://www.youtube.com/embed/opj24KnzrWo 41 | * http://youtu.be/opj24KnzrWo 42 | * http://www.youtube-nocookie.com/embed/opj24KnzrWo 43 | * Vimeo 44 | * http://vimeo.com/40648169 45 | * http://vimeo.com/channels/staffpicks/38843628 46 | * http://vimeo.com/groups/surrealism/videos/36516384 47 | * http://player.vimeo.com/video/45074303 48 | * Metacafe 49 | * http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/ 50 | * http://www.metacafe.com/watch/7635964/ 51 | * Dailymotion 52 | * http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people 53 | * Twitvid 54 | * http://twitvid.com/QY7MD 55 | * Twitpic 56 | * http://twitpic.com/7p93st 57 | * Instagram 58 | * http://instagr.am/p/IejkuUGxQn/ 59 | * http://instagram.com/p/IejkuUGxQn/ 60 | * Google maps 61 | * http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17 62 | * http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 63 | * http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56 64 | */ 65 | ;(function ($) { 66 | "use strict"; 67 | 68 | //Shortcut for fancyBox object 69 | var F = $.fancybox, 70 | format = function( url, rez, params ) { 71 | params = params || ''; 72 | 73 | if ( $.type( params ) === "object" ) { 74 | params = $.param(params, true); 75 | } 76 | 77 | $.each(rez, function(key, value) { 78 | url = url.replace( '$' + key, value || '' ); 79 | }); 80 | 81 | if (params.length) { 82 | url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params; 83 | } 84 | 85 | return url; 86 | }; 87 | 88 | //Add helper object 89 | F.helpers.media = { 90 | defaults : { 91 | youtube : { 92 | matcher : /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i, 93 | params : { 94 | autoplay : 1, 95 | autohide : 1, 96 | fs : 1, 97 | rel : 0, 98 | hd : 1, 99 | wmode : 'opaque', 100 | enablejsapi : 1 101 | }, 102 | type : 'iframe', 103 | url : '//www.youtube.com/embed/$3' 104 | }, 105 | vimeo : { 106 | matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/, 107 | params : { 108 | autoplay : 1, 109 | hd : 1, 110 | show_title : 1, 111 | show_byline : 1, 112 | show_portrait : 0, 113 | fullscreen : 1 114 | }, 115 | type : 'iframe', 116 | url : '//player.vimeo.com/video/$1' 117 | }, 118 | metacafe : { 119 | matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/, 120 | params : { 121 | autoPlay : 'yes' 122 | }, 123 | type : 'swf', 124 | url : function( rez, params, obj ) { 125 | obj.swf.flashVars = 'playerVars=' + $.param( params, true ); 126 | 127 | return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf'; 128 | } 129 | }, 130 | dailymotion : { 131 | matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, 132 | params : { 133 | additionalInfos : 0, 134 | autoStart : 1 135 | }, 136 | type : 'swf', 137 | url : '//www.dailymotion.com/swf/video/$1' 138 | }, 139 | twitvid : { 140 | matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i, 141 | params : { 142 | autoplay : 0 143 | }, 144 | type : 'iframe', 145 | url : '//www.twitvid.com/embed.php?guid=$1' 146 | }, 147 | twitpic : { 148 | matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i, 149 | type : 'image', 150 | url : '//twitpic.com/show/full/$1/' 151 | }, 152 | instagram : { 153 | matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, 154 | type : 'image', 155 | url : '//$1/p/$2/media/?size=l' 156 | }, 157 | google_maps : { 158 | matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i, 159 | type : 'iframe', 160 | url : function( rez ) { 161 | return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed'); 162 | } 163 | } 164 | }, 165 | 166 | beforeLoad : function(opts, obj) { 167 | var url = obj.href || '', 168 | type = false, 169 | what, 170 | item, 171 | rez, 172 | params; 173 | 174 | for (what in opts) { 175 | if (opts.hasOwnProperty(what)) { 176 | item = opts[ what ]; 177 | rez = url.match( item.matcher ); 178 | 179 | if (rez) { 180 | type = item.type; 181 | params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null)); 182 | 183 | url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params ); 184 | 185 | break; 186 | } 187 | } 188 | } 189 | 190 | if (type) { 191 | obj.href = url; 192 | obj.type = type; 193 | 194 | obj.autoHeight = false; 195 | } 196 | } 197 | }; 198 | 199 | }(jQuery)); -------------------------------------------------------------------------------- /source/fancybox/helpers/jquery.fancybox-thumbs.css: -------------------------------------------------------------------------------- 1 | #fancybox-thumbs { 2 | position: fixed; 3 | left: 0; 4 | width: 100%; 5 | overflow: hidden; 6 | z-index: 8050; 7 | } 8 | 9 | #fancybox-thumbs.bottom { 10 | bottom: 2px; 11 | } 12 | 13 | #fancybox-thumbs.top { 14 | top: 2px; 15 | } 16 | 17 | #fancybox-thumbs ul { 18 | position: relative; 19 | list-style: none; 20 | margin: 0; 21 | padding: 0; 22 | } 23 | 24 | #fancybox-thumbs ul li { 25 | float: left; 26 | padding: 1px; 27 | opacity: 0.5; 28 | } 29 | 30 | #fancybox-thumbs ul li.active { 31 | opacity: 0.75; 32 | padding: 0; 33 | border: 1px solid #fff; 34 | } 35 | 36 | #fancybox-thumbs ul li:hover { 37 | opacity: 1; 38 | } 39 | 40 | #fancybox-thumbs ul li a { 41 | display: block; 42 | position: relative; 43 | overflow: hidden; 44 | border: 1px solid #222; 45 | background: #111; 46 | outline: none; 47 | } 48 | 49 | #fancybox-thumbs ul li img { 50 | display: block; 51 | position: relative; 52 | border: 0; 53 | padding: 0; 54 | max-width: none; 55 | } -------------------------------------------------------------------------------- /source/fancybox/helpers/jquery.fancybox-thumbs.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Thumbnail helper for fancyBox 3 | * version: 1.0.7 (Mon, 01 Oct 2012) 4 | * @requires fancyBox v2.0 or later 5 | * 6 | * Usage: 7 | * $(".fancybox").fancybox({ 8 | * helpers : { 9 | * thumbs: { 10 | * width : 50, 11 | * height : 50 12 | * } 13 | * } 14 | * }); 15 | * 16 | */ 17 | ;(function ($) { 18 | //Shortcut for fancyBox object 19 | var F = $.fancybox; 20 | 21 | //Add helper object 22 | F.helpers.thumbs = { 23 | defaults : { 24 | width : 50, // thumbnail width 25 | height : 50, // thumbnail height 26 | position : 'bottom', // 'top' or 'bottom' 27 | source : function ( item ) { // function to obtain the URL of the thumbnail image 28 | var href; 29 | 30 | if (item.element) { 31 | href = $(item.element).find('img').attr('src'); 32 | } 33 | 34 | if (!href && item.type === 'image' && item.href) { 35 | href = item.href; 36 | } 37 | 38 | return href; 39 | } 40 | }, 41 | 42 | wrap : null, 43 | list : null, 44 | width : 0, 45 | 46 | init: function (opts, obj) { 47 | var that = this, 48 | list, 49 | thumbWidth = opts.width, 50 | thumbHeight = opts.height, 51 | thumbSource = opts.source; 52 | 53 | //Build list structure 54 | list = ''; 55 | 56 | for (var n = 0; n < obj.group.length; n++) { 57 | list += '
  • '; 58 | } 59 | 60 | this.wrap = $('
    ').addClass(opts.position).appendTo('body'); 61 | this.list = $('
      ' + list + '
    ').appendTo(this.wrap); 62 | 63 | //Load each thumbnail 64 | $.each(obj.group, function (i) { 65 | var el = obj.group[ i ], 66 | href = thumbSource( el ); 67 | 68 | if (!href) { 69 | return; 70 | } 71 | 72 | $("").load(function () { 73 | var width = this.width, 74 | height = this.height, 75 | widthRatio, heightRatio, parent; 76 | 77 | if (!that.list || !width || !height) { 78 | return; 79 | } 80 | 81 | //Calculate thumbnail width/height and center it 82 | widthRatio = width / thumbWidth; 83 | heightRatio = height / thumbHeight; 84 | 85 | parent = that.list.children().eq(i).find('a'); 86 | 87 | if (widthRatio >= 1 && heightRatio >= 1) { 88 | if (widthRatio > heightRatio) { 89 | width = Math.floor(width / heightRatio); 90 | height = thumbHeight; 91 | 92 | } else { 93 | width = thumbWidth; 94 | height = Math.floor(height / widthRatio); 95 | } 96 | } 97 | 98 | $(this).css({ 99 | width : width, 100 | height : height, 101 | top : Math.floor(thumbHeight / 2 - height / 2), 102 | left : Math.floor(thumbWidth / 2 - width / 2) 103 | }); 104 | 105 | parent.width(thumbWidth).height(thumbHeight); 106 | 107 | $(this).hide().appendTo(parent).fadeIn(300); 108 | 109 | }) 110 | .attr('src', href) 111 | .attr('title', el.title); 112 | }); 113 | 114 | //Set initial width 115 | this.width = this.list.children().eq(0).outerWidth(true); 116 | 117 | this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))); 118 | }, 119 | 120 | beforeLoad: function (opts, obj) { 121 | //Remove self if gallery do not have at least two items 122 | if (obj.group.length < 2) { 123 | obj.helpers.thumbs = false; 124 | 125 | return; 126 | } 127 | 128 | //Increase bottom margin to give space for thumbs 129 | obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15); 130 | }, 131 | 132 | afterShow: function (opts, obj) { 133 | //Check if exists and create or update list 134 | if (this.list) { 135 | this.onUpdate(opts, obj); 136 | 137 | } else { 138 | this.init(opts, obj); 139 | } 140 | 141 | //Set active element 142 | this.list.children().removeClass('active').eq(obj.index).addClass('active'); 143 | }, 144 | 145 | //Center list 146 | onUpdate: function (opts, obj) { 147 | if (this.list) { 148 | this.list.stop(true).animate({ 149 | 'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)) 150 | }, 150); 151 | } 152 | }, 153 | 154 | beforeClose: function () { 155 | if (this.wrap) { 156 | this.wrap.remove(); 157 | } 158 | 159 | this.wrap = null; 160 | this.list = null; 161 | this.width = 0; 162 | } 163 | } 164 | 165 | }(jQuery)); -------------------------------------------------------------------------------- /source/fancybox/jquery.fancybox.css: -------------------------------------------------------------------------------- 1 | /*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ 2 | .fancybox-wrap, 3 | .fancybox-skin, 4 | .fancybox-outer, 5 | .fancybox-inner, 6 | .fancybox-image, 7 | .fancybox-wrap iframe, 8 | .fancybox-wrap object, 9 | .fancybox-nav, 10 | .fancybox-nav span, 11 | .fancybox-tmp 12 | { 13 | padding: 0; 14 | margin: 0; 15 | border: 0; 16 | outline: none; 17 | vertical-align: top; 18 | } 19 | 20 | .fancybox-wrap { 21 | position: absolute; 22 | top: 0; 23 | left: 0; 24 | z-index: 8020; 25 | } 26 | 27 | .fancybox-skin { 28 | position: relative; 29 | background: #f9f9f9; 30 | color: #444; 31 | text-shadow: none; 32 | -webkit-border-radius: 4px; 33 | -moz-border-radius: 4px; 34 | border-radius: 4px; 35 | } 36 | 37 | .fancybox-opened { 38 | z-index: 8030; 39 | } 40 | 41 | .fancybox-opened .fancybox-skin { 42 | -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 43 | -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 44 | box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 45 | } 46 | 47 | .fancybox-outer, .fancybox-inner { 48 | position: relative; 49 | } 50 | 51 | .fancybox-inner { 52 | overflow: hidden; 53 | } 54 | 55 | .fancybox-type-iframe .fancybox-inner { 56 | -webkit-overflow-scrolling: touch; 57 | } 58 | 59 | .fancybox-error { 60 | color: #444; 61 | font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; 62 | margin: 0; 63 | padding: 15px; 64 | white-space: nowrap; 65 | } 66 | 67 | .fancybox-image, .fancybox-iframe { 68 | display: block; 69 | width: 100%; 70 | height: 100%; 71 | } 72 | 73 | .fancybox-image { 74 | max-width: 100%; 75 | max-height: 100%; 76 | } 77 | 78 | #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { 79 | background-image: url(fancybox_sprite.png); 80 | } 81 | 82 | #fancybox-loading { 83 | position: fixed; 84 | top: 50%; 85 | left: 50%; 86 | margin-top: -22px; 87 | margin-left: -22px; 88 | background-position: 0 -108px; 89 | opacity: 0.8; 90 | cursor: pointer; 91 | z-index: 8060; 92 | } 93 | 94 | #fancybox-loading div { 95 | width: 44px; 96 | height: 44px; 97 | background: url(fancybox_loading.gif) center center no-repeat; 98 | } 99 | 100 | .fancybox-close { 101 | position: absolute; 102 | top: -18px; 103 | right: -18px; 104 | width: 36px; 105 | height: 36px; 106 | cursor: pointer; 107 | z-index: 8040; 108 | } 109 | 110 | .fancybox-nav { 111 | position: absolute; 112 | top: 0; 113 | width: 40%; 114 | height: 100%; 115 | cursor: pointer; 116 | text-decoration: none; 117 | background: transparent url(blank.gif); /* helps IE */ 118 | -webkit-tap-highlight-color: rgba(0,0,0,0); 119 | z-index: 8040; 120 | } 121 | 122 | .fancybox-prev { 123 | left: 0; 124 | } 125 | 126 | .fancybox-next { 127 | right: 0; 128 | } 129 | 130 | .fancybox-nav span { 131 | position: absolute; 132 | top: 50%; 133 | width: 36px; 134 | height: 34px; 135 | margin-top: -18px; 136 | cursor: pointer; 137 | z-index: 8040; 138 | visibility: hidden; 139 | } 140 | 141 | .fancybox-prev span { 142 | left: 10px; 143 | background-position: 0 -36px; 144 | } 145 | 146 | .fancybox-next span { 147 | right: 10px; 148 | background-position: 0 -72px; 149 | } 150 | 151 | .fancybox-nav:hover span { 152 | visibility: visible; 153 | } 154 | 155 | .fancybox-tmp { 156 | position: absolute; 157 | top: -99999px; 158 | left: -99999px; 159 | max-width: 99999px; 160 | max-height: 99999px; 161 | overflow: visible !important; 162 | } 163 | 164 | /* Overlay helper */ 165 | 166 | .fancybox-lock { 167 | overflow: visible !important; 168 | width: auto; 169 | } 170 | 171 | .fancybox-lock body { 172 | overflow: hidden !important; 173 | } 174 | 175 | .fancybox-lock-test { 176 | overflow-y: hidden !important; 177 | } 178 | 179 | .fancybox-overlay { 180 | position: absolute; 181 | top: 0; 182 | left: 0; 183 | overflow: hidden; 184 | display: none; 185 | z-index: 8010; 186 | background: url(fancybox_overlay.png); 187 | } 188 | 189 | .fancybox-overlay-fixed { 190 | position: fixed; 191 | bottom: 0; 192 | right: 0; 193 | } 194 | 195 | .fancybox-lock .fancybox-overlay { 196 | overflow: auto; 197 | overflow-y: scroll; 198 | } 199 | 200 | /* Title helper */ 201 | 202 | .fancybox-title { 203 | visibility: hidden; 204 | font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; 205 | position: relative; 206 | text-shadow: none; 207 | z-index: 8050; 208 | } 209 | 210 | .fancybox-opened .fancybox-title { 211 | visibility: visible; 212 | } 213 | 214 | .fancybox-title-float-wrap { 215 | position: absolute; 216 | bottom: 0; 217 | right: 50%; 218 | margin-bottom: -35px; 219 | z-index: 8050; 220 | text-align: center; 221 | } 222 | 223 | .fancybox-title-float-wrap .child { 224 | display: inline-block; 225 | margin-right: -100%; 226 | padding: 2px 20px; 227 | background: transparent; /* Fallback for web browsers that doesn't support RGBa */ 228 | background: rgba(0, 0, 0, 0.8); 229 | -webkit-border-radius: 15px; 230 | -moz-border-radius: 15px; 231 | border-radius: 15px; 232 | text-shadow: 0 1px 2px #222; 233 | color: #FFF; 234 | font-weight: bold; 235 | line-height: 24px; 236 | white-space: nowrap; 237 | } 238 | 239 | .fancybox-title-outside-wrap { 240 | position: relative; 241 | margin-top: 10px; 242 | color: #fff; 243 | } 244 | 245 | .fancybox-title-inside-wrap { 246 | padding-top: 10px; 247 | } 248 | 249 | .fancybox-title-over-wrap { 250 | position: absolute; 251 | bottom: 0; 252 | left: 0; 253 | color: #fff; 254 | padding: 10px; 255 | background: #000; 256 | background: rgba(0, 0, 0, .8); 257 | } 258 | 259 | /*Retina graphics!*/ 260 | @media only screen and (-webkit-min-device-pixel-ratio: 1.5), 261 | only screen and (min--moz-device-pixel-ratio: 1.5), 262 | only screen and (min-device-pixel-ratio: 1.5){ 263 | 264 | #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { 265 | background-image: url(fancybox_sprite@2x.png); 266 | background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/ 267 | } 268 | 269 | #fancybox-loading div { 270 | background-image: url(fancybox_loading@2x.gif); 271 | background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/ 272 | } 273 | } -------------------------------------------------------------------------------- /source/js/dialog.js: -------------------------------------------------------------------------------- 1 | var toc = document.getElementById('toc') 2 | 3 | if (toc != null) { 4 | window.addEventListener("scroll", scrollcatelogHandler); 5 | var tocPosition = toc.offsetTop; 6 | 7 | function scrollcatelogHandler(e) { 8 | var event = e || window.event, 9 | target = event.target || event.srcElement; 10 | var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; 11 | if (scrollTop > tocPosition-30) { 12 | toc.classList.add("toc-fixed"); 13 | } else { 14 | toc.classList.remove("toc-fixed"); 15 | } 16 | } 17 | } 18 | 19 | 20 | var night_model=false; //夜间阅读模式 21 | var content_fontsize_big=false; //夜间阅读模式 22 | 23 | function getStyle(obj, attri) { 24 | if (obj == null) { 25 | return "" 26 | } 27 | return obj.currentStyle ? obj.currentStyle[attri] : window.getComputedStyle(obj, null)[attri]; 28 | } 29 | 30 | var header = document.getElementById('allheader'); 31 | var footer = document.getElementById('footer'); 32 | var wrap = document.getElementById('wrap'); 33 | var articleInner = document.getElementById('articleInner'); 34 | var h1title = document.getElementsByTagName('h1'); 35 | var h2title = document.getElementsByTagName('h2'); 36 | var h3title = document.getElementsByTagName('h3'); 37 | var figure = document.getElementsByTagName('figure'); 38 | var code = document.getElementsByTagName('code'); 39 | var pre = document.getElementsByTagName('pre'); 40 | var all_p = document.getElementsByTagName('p'); 41 | 42 | var header_bg_d = getStyle(header, "background"), 43 | header_border_d = getStyle(header, "border-color"), 44 | footer_bg_d = getStyle(footer, "background"), 45 | body_bg_d = '#fff', 46 | article_title_d = '#555555', 47 | article_p_d = '#444444'; 48 | code_bg_d = '#f8f8f8'; 49 | code_border_d = '#eef1f8'; 50 | code_color_d = getStyle(document.getElementsByTagName('code')[0], "color"); 51 | 52 | var header_bg_n = '#161718', 53 | header_border_n = '#1f2021', 54 | footer_bg_n = header_bg_n, 55 | body_bg_n = '#1d1e1f', 56 | article_title_n = '#9da5ae', 57 | article_p_n = '#83868a'; 58 | code_bg_n = '#2d2f31'; 59 | code_border_n = '#333333'; 60 | code_color_n = article_p_n; 61 | 62 | 63 | 64 | 65 | function setBackground(){ 66 | var i = 0; 67 | 68 | night_model = !night_model; 69 | if(night_model == false){ 70 | header.style.background = header_bg_d; 71 | footer.style.background = footer_bg_d; 72 | header.style.borderColor = header_border_d; 73 | wrap.style.background = body_bg_d; 74 | articleInner.setAttribute('class','article-inner'); 75 | 76 | for (i=0;i h - navbar.offsetHeight) { 15 | navbar.classList.add("fixed"); 16 | } else { 17 | navbar.classList.remove("fixed"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /source/js/insight.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Insight search plugin 3 | * @author PPOffice { @link https://github.com/ppoffice } 4 | */ 5 | (function ($, CONFIG) { 6 | var $main = $('.ins-search'); 7 | var $input = $main.find('.ins-search-input'); 8 | var $wrapper = $main.find('.ins-section-wrapper'); 9 | var $container = $main.find('.ins-section-container'); 10 | $main.parent().remove('.ins-search'); 11 | $('body').append($main); 12 | 13 | function section (title) { 14 | return $('
    ').addClass('ins-section') 15 | .append($('
    ').addClass('ins-section-header').text(title)); 16 | } 17 | 18 | function searchItem (icon, title, slug, preview, url) { 19 | return $('
    ').addClass('ins-selectable').addClass('ins-search-item') 20 | .append($('
    ').append($('').addClass('fa').addClass('fa-' + icon)).append(title != null && title != '' ? title : CONFIG.TRANSLATION['UNTITLED']) 21 | .append(slug ? $('').addClass('ins-slug').text(slug) : null)) 22 | .append(preview ? $('

    ').addClass('ins-search-preview').text(preview) : null) 23 | .attr('data-url', url); 24 | } 25 | 26 | function sectionFactory (type, array) { 27 | var sectionTitle; 28 | var $searchItems; 29 | if (array.length === 0) return null; 30 | sectionTitle = CONFIG.TRANSLATION[type]; 31 | switch (type) { 32 | case 'POSTS': 33 | case 'PAGES': 34 | $searchItems = array.map(function (item) { 35 | // Use config.root instead of permalink to fix url issue 36 | return searchItem('file', item.title, null, item.text.slice(0, 150), CONFIG.ROOT_URL + item.path); 37 | }); 38 | break; 39 | case 'CATEGORIES': 40 | case 'TAGS': 41 | $searchItems = array.map(function (item) { 42 | return searchItem(type === 'CATEGORIES' ? 'folder' : 'tag', item.name, item.slug, null, item.permalink); 43 | }); 44 | break; 45 | default: 46 | return null; 47 | } 48 | return section(sectionTitle).append($searchItems); 49 | } 50 | 51 | function extractToSet (json, key) { 52 | var values = {}; 53 | var entries = json.pages.concat(json.posts); 54 | entries.forEach(function (entry) { 55 | if (entry[key]) { 56 | entry[key].forEach(function (value) { 57 | values[value.name] = value; 58 | }); 59 | } 60 | }); 61 | var result = []; 62 | for (var key in values) { 63 | result.push(values[key]); 64 | } 65 | return result; 66 | } 67 | 68 | function parseKeywords (keywords) { 69 | return keywords.split(' ').filter(function (keyword) { 70 | return !!keyword; 71 | }).map(function (keyword) { 72 | return keyword.toUpperCase(); 73 | }); 74 | } 75 | 76 | /** 77 | * Judge if a given post/page/category/tag contains all of the keywords. 78 | * @param Object obj Object to be weighted 79 | * @param Array fields Object's fields to find matches 80 | */ 81 | function filter (keywords, obj, fields) { 82 | var result = false; 83 | var keywordArray = parseKeywords(keywords); 84 | var containKeywords = keywordArray.filter(function (keyword) { 85 | var containFields = fields.filter(function (field) { 86 | if (!obj.hasOwnProperty(field)) 87 | return false; 88 | if (obj[field].toUpperCase().indexOf(keyword) > -1) 89 | return true; 90 | }); 91 | if (containFields.length > 0) 92 | return true; 93 | return false; 94 | }); 95 | return containKeywords.length === keywordArray.length; 96 | } 97 | 98 | function filterFactory (keywords) { 99 | return { 100 | POST: function (obj) { 101 | return filter(keywords, obj, ['title', 'text']); 102 | }, 103 | PAGE: function (obj) { 104 | return filter(keywords, obj, ['title', 'text']); 105 | }, 106 | CATEGORY: function (obj) { 107 | return filter(keywords, obj, ['name', 'slug']); 108 | }, 109 | TAG: function (obj) { 110 | return filter(keywords, obj, ['name', 'slug']); 111 | } 112 | }; 113 | } 114 | 115 | /** 116 | * Calculate the weight of a matched post/page/category/tag. 117 | * @param Object obj Object to be weighted 118 | * @param Array fields Object's fields to find matches 119 | * @param Array weights Weight of every field 120 | */ 121 | function weight (keywords, obj, fields, weights) { 122 | var value = 0; 123 | parseKeywords(keywords).forEach(function (keyword) { 124 | var pattern = new RegExp(keyword, 'img'); // Global, Multi-line, Case-insensitive 125 | fields.forEach(function (field, index) { 126 | if (obj.hasOwnProperty(field)) { 127 | var matches = obj[field].match(pattern); 128 | value += matches ? matches.length * weights[index] : 0; 129 | } 130 | }); 131 | }); 132 | return value; 133 | } 134 | 135 | function weightFactory (keywords) { 136 | return { 137 | POST: function (obj) { 138 | return weight(keywords, obj, ['title', 'text'], [3, 1]); 139 | }, 140 | PAGE: function (obj) { 141 | return weight(keywords, obj, ['title', 'text'], [3, 1]); 142 | }, 143 | CATEGORY: function (obj) { 144 | return weight(keywords, obj, ['name', 'slug'], [1, 1]); 145 | }, 146 | TAG: function (obj) { 147 | return weight(keywords, obj, ['name', 'slug'], [1, 1]); 148 | } 149 | }; 150 | } 151 | 152 | function search (json, keywords) { 153 | var WEIGHTS = weightFactory(keywords); 154 | var FILTERS = filterFactory(keywords); 155 | var posts = json.posts; 156 | var pages = json.pages; 157 | var tags = extractToSet(json, 'tags'); 158 | var categories = extractToSet(json, 'categories'); 159 | return { 160 | posts: posts.filter(FILTERS.POST).sort(function (a, b) { return WEIGHTS.POST(b) - WEIGHTS.POST(a); }).slice(0, 5), 161 | pages: pages.filter(FILTERS.PAGE).sort(function (a, b) { return WEIGHTS.PAGE(b) - WEIGHTS.PAGE(a); }).slice(0, 5), 162 | categories: categories.filter(FILTERS.CATEGORY).sort(function (a, b) { return WEIGHTS.CATEGORY(b) - WEIGHTS.CATEGORY(a); }).slice(0, 5), 163 | tags: tags.filter(FILTERS.TAG).sort(function (a, b) { return WEIGHTS.TAG(b) - WEIGHTS.TAG(a); }).slice(0, 5) 164 | }; 165 | } 166 | 167 | function searchResultToDOM (searchResult) { 168 | $container.empty(); 169 | for (var key in searchResult) { 170 | $container.append(sectionFactory(key.toUpperCase(), searchResult[key])); 171 | } 172 | } 173 | 174 | function scrollTo ($item) { 175 | if ($item.length === 0) return; 176 | var wrapperHeight = $wrapper[0].clientHeight; 177 | var itemTop = $item.position().top - $wrapper.scrollTop(); 178 | var itemBottom = $item[0].clientHeight + $item.position().top; 179 | if (itemBottom > wrapperHeight + $wrapper.scrollTop()) { 180 | $wrapper.scrollTop(itemBottom - $wrapper[0].clientHeight); 181 | } 182 | if (itemTop < 0) { 183 | $wrapper.scrollTop($item.position().top); 184 | } 185 | } 186 | 187 | function selectItemByDiff (value) { 188 | var $items = $.makeArray($container.find('.ins-selectable')); 189 | var prevPosition = -1; 190 | $items.forEach(function (item, index) { 191 | if ($(item).hasClass('active')) { 192 | prevPosition = index; 193 | return; 194 | } 195 | }); 196 | var nextPosition = ($items.length + prevPosition + value) % $items.length; 197 | $($items[prevPosition]).removeClass('active'); 198 | $($items[nextPosition]).addClass('active'); 199 | scrollTo($($items[nextPosition])); 200 | } 201 | 202 | function gotoLink ($item) { 203 | if ($item && $item.length) { 204 | location.href = $item.attr('data-url'); 205 | } 206 | } 207 | 208 | $.getJSON(CONFIG.CONTENT_URL, function (json) { 209 | if (location.hash.trim() === '#ins-search') { 210 | $main.addClass('show'); 211 | } 212 | $input.on('input', function () { 213 | var keywords = $(this).val(); 214 | searchResultToDOM(search(json, keywords)); 215 | }); 216 | $input.trigger('input'); 217 | }); 218 | 219 | 220 | $(document).on('click focus', '.search-form-submit', function (event) { 221 | event.preventDefault(); 222 | $main.addClass('show'); 223 | $main.find('.ins-search-input').focus(); 224 | }).on('click', '.ins-search-item', function () { 225 | gotoLink($(this)); 226 | }).on('click', '.ins-close', function () { 227 | $main.removeClass('show'); 228 | }).on('keydown', function (e) { 229 | if (!$main.hasClass('show')) return; 230 | switch (e.keyCode) { 231 | case 27: // ESC 232 | $main.removeClass('show'); break; 233 | case 38: // UP 234 | selectItemByDiff(-1); break; 235 | case 40: // DOWN 236 | selectItemByDiff(1); break; 237 | case 13: //ENTER 238 | gotoLink($container.find('.ins-selectable.active').eq(0)); break; 239 | } 240 | }); 241 | })(jQuery, window.INSIGHT_CONFIG); -------------------------------------------------------------------------------- /source/js/scripts.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | // Search 3 | var $searchWrap = $('#search-form-wrap'), 4 | isSearchAnim = false, 5 | searchAnimDuration = 200; 6 | 7 | var startSearchAnim = function(){ 8 | isSearchAnim = true; 9 | }; 10 | 11 | var stopSearchAnim = function(callback){ 12 | setTimeout(function(){ 13 | isSearchAnim = false; 14 | callback && callback(); 15 | }, searchAnimDuration); 16 | }; 17 | 18 | var s = [ 19 | '

    ', 20 | '', 21 | '
    ' 22 | ].join(''); 23 | 24 | var di = $(s); 25 | 26 | $('#container').append(di); 27 | 28 | $('#nav-search-btn').on('click', function(){ 29 | if (isSearchAnim) return; 30 | 31 | startSearchAnim(); 32 | $searchWrap.addClass('on'); 33 | stopSearchAnim(function(){ 34 | $('.search-form-input').focus(); 35 | }); 36 | }); 37 | 38 | $('.search-form-input').on('blur', function(){ 39 | startSearchAnim(); 40 | $searchWrap.removeClass('on'); 41 | stopSearchAnim(); 42 | }); 43 | 44 | // Share 45 | $('body').on('click', function(){ 46 | $('.article-share-box.on').removeClass('on'); 47 | }).on('click', '.article-share-link', function(e){ 48 | e.stopPropagation(); 49 | 50 | var $this = $(this), 51 | url = $this.attr('data-url'), 52 | encodedUrl = encodeURIComponent(url), 53 | id = 'article-share-box-' + $this.attr('data-id'), 54 | offset = $this.offset(); 55 | 56 | if ($('#' + id).length){ 57 | var box = $('#' + id); 58 | 59 | if (box.hasClass('on')){ 60 | box.removeClass('on'); 61 | return; 62 | } 63 | } else { 64 | var html = [ 65 | '
    ', 66 | '', 67 | '
    ', 68 | '', 69 | '', 70 | '', 71 | '', 72 | '
    ', 73 | '
    ' 74 | ].join(''); 75 | 76 | var box = $(html); 77 | 78 | $('body').append(box); 79 | } 80 | 81 | $('.article-share-box.on').hide(); 82 | 83 | box.css({ 84 | top: offset.top + 25, 85 | left: offset.left 86 | }).addClass('on'); 87 | }).on('click', '.article-share-box', function(e){ 88 | e.stopPropagation(); 89 | }).on('click', '.article-share-box-input', function(){ 90 | $(this).select(); 91 | }).on('click', '.article-share-box-link', function(e){ 92 | e.preventDefault(); 93 | e.stopPropagation(); 94 | 95 | window.open(this.href, 'article-share-box-window-' + Date.now(), 'width=500,height=450'); 96 | }); 97 | 98 | // Caption 99 | $('.article-entry').each(function(i){ 100 | $(this).find('img').each(function(){ 101 | if ($(this).parent().hasClass('fancybox')) return; 102 | 103 | var alt = this.alt; 104 | 105 | if (alt) $(this).after('' + alt + ''); 106 | 107 | $(this).wrap(''); 108 | }); 109 | 110 | $(this).find('.fancybox').each(function(){ 111 | $(this).attr('rel', 'article' + i); 112 | }); 113 | }); 114 | 115 | if ($.fancybox){ 116 | $('.fancybox').fancybox(); 117 | } 118 | 119 | // Mobile nav 120 | var $container = $('#container'), 121 | isMobileNavAnim = false, 122 | mobileNavAnimDuration = 200; 123 | 124 | var startMobileNavAnim = function(){ 125 | isMobileNavAnim = true; 126 | }; 127 | 128 | var stopMobileNavAnim = function(){ 129 | setTimeout(function(){ 130 | isMobileNavAnim = false; 131 | }, mobileNavAnimDuration); 132 | } 133 | 134 | $('#main-nav-toggle').on('click', function(){ 135 | if (isMobileNavAnim) return; 136 | 137 | startMobileNavAnim(); 138 | $container.toggleClass('mobile-nav-on'); 139 | stopMobileNavAnim(); 140 | }); 141 | 142 | $('#wrap').on('click', function(){ 143 | if (isMobileNavAnim || !$container.hasClass('mobile-nav-on')) return; 144 | 145 | $container.removeClass('mobile-nav-on'); 146 | }); 147 | })(jQuery); -------------------------------------------------------------------------------- /source/js/totop.js: -------------------------------------------------------------------------------- 1 | $(window).scroll(function() { 2 | $(window).scrollTop() > $(window).height()*0.5 ? $("#rocket").addClass("show") : $("#rocket").removeClass("show"); 3 | }); 4 | 5 | $("#rocket").click(function() { 6 | $("#rocket").addClass("launch"); 7 | $("html, body").animate({ 8 | scrollTop: 0 9 | }, 1000, function() { 10 | $("#rocket").removeClass("show launch"); 11 | }); 12 | return false; 13 | }); 14 | 15 | $("#homelogo").click(function() { 16 | $("html, body").animate({ 17 | scrollTop: $(window).height() 18 | }, 1000, null); 19 | return false; 20 | }); 21 | 22 | var articleW = $('#main>article').css("width"); 23 | 24 | $("#menu-switch").click(function() { 25 | if($("#toc-sidebar").hasClass("toc-hide")){ 26 | setTimeout(function () { 27 | $("#toc-sidebar").removeClass("toc-hide"); 28 | }, 200); 29 | $('#main>article').css("width", articleW); 30 | }else{ 31 | $("#toc-sidebar").addClass("toc-hide"); 32 | setTimeout(function () { 33 | $('#main>article').css("width", "100%"); 34 | }, 200); 35 | } 36 | }); -------------------------------------------------------------------------------- /source/preview/browser-support.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/preview/browser-support.png -------------------------------------------------------------------------------- /source/preview/code-theme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/preview/code-theme.jpg -------------------------------------------------------------------------------- /source/preview/donation-btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/preview/donation-btn.png -------------------------------------------------------------------------------- /source/preview/preview-abstract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/preview/preview-abstract.png -------------------------------------------------------------------------------- /source/preview/preview-mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/preview/preview-mobile.png -------------------------------------------------------------------------------- /source/preview/preview-pc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/preview/preview-pc.png -------------------------------------------------------------------------------- /source/preview/theme-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hiker/35c307934e2af096966470b09f6908b9dd9f7cd8/source/preview/theme-color.png --------------------------------------------------------------------------------