├── LICENSE ├── README.md ├── _config.yml ├── languages ├── de.yml ├── default.yml ├── en.yml ├── es.yml ├── fr.yml ├── ko.yml ├── no.yml ├── pl.yml ├── pt.yml ├── ru.yml ├── zh-CN.yml └── zh-TW.yml ├── layout ├── _partial │ ├── after-footer.ejs │ ├── article-archive.ejs │ ├── article-categories.ejs │ ├── article-full.ejs │ ├── article-index.ejs │ ├── article-tags.ejs │ ├── comments.ejs │ ├── footer.ejs │ ├── gallery.ejs │ ├── google-analytics.ejs │ ├── head.ejs │ ├── menu.ejs │ ├── pagination.ejs │ └── tag-category-index.ejs ├── archive.ejs ├── index.ejs ├── layout.ejs ├── page.ejs └── post.ejs └── source ├── css ├── article.styl ├── base.styl ├── mixins.styl ├── style.styl └── variables.styl └── img ├── about-bg.jpg ├── contact-bg.jpg └── home-bg.jpg /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013-2016 Blackrock Digital LLC. 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 13 | all 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 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Clean Blog Hexo 2 | 3 | ![](http://www.codeblocq.com/img/hexo-theme-thumbnail/CleanBlog.png) 4 | 5 | Hexo implementation of [Clean Blog](http://blackrockdigital.github.io/startbootstrap-clean-blog/index.html) 6 | 7 | Clean blog is a full featured, responsive Hexo theme. [Demo here](http://www.codeblocq.com/assets/projects/hexo-theme-clean-blog/). 8 | 9 | ## Features 10 | 11 | - Disqus and Facebook comments 12 | - Google Analytics 13 | - Addthis 14 | - Cover image for posts and pages 15 | - Tags and Categories Support 16 | - Responsive Images 17 | - Image Gallery 18 | - Code syntax highlighting 19 | 20 | ## External libraries used 21 | 22 | - [Bootstrap](http://getbootstrap.com/css/) 23 | - [FeatherLight.js](http://noelboss.github.io/featherlight/) (Gallery) 24 | - [jQuery](https://jquery.com/) 25 | 26 | ## Installation 27 | 28 | ``` 29 | $ git clone https://github.com/klugjo/hexo-theme-clean-blog.git themes/clean-blog 30 | ``` 31 | 32 | Then update your blog's main `_config.yml` to set the theme to `clean-blog`: 33 | 34 | ``` 35 | # Extensions 36 | ## Plugins: http://hexo.io/plugins/ 37 | ## Themes: http://hexo.io/themes/ 38 | theme: clean-blog 39 | ``` 40 | 41 | ## Configuration 42 | 43 | ### Menu 44 | 45 | The menu is configured in the theme's `_config.yml`. 46 | 47 | ``` 48 | # Header 49 | menu: 50 | Home: / 51 | Archives: /archives 52 | Github: 53 | url: https://github.com/klugjo/hexo-theme-clean-blog 54 | icon: github 55 | ``` 56 | 57 | The object key is the label and the value is the path, or you can use a icon (font awesome) like menu item. 58 | 59 | ### Top Left Label 60 | 61 | The top left label is configured in the theme's `_config.yml`. When clicked it will lead to the Home Page. 62 | 63 | ``` 64 | # Title on top left of menu. Leave empty to use main blog title 65 | menu_title: Configurable Title 66 | ``` 67 | 68 | ### Home Page cover image 69 | 70 | The Home Page cover is configured in the theme's `_config.yml`. It will be the same for all index type pages. 71 | 72 | ``` 73 | # URL of the Home page image 74 | index_cover: /img/home-bg.jpg 75 | ``` 76 | 77 | ### Default post title 78 | 79 | The default post title (used when no title is specified) is configured in the theme's `_config.yml`. 80 | 81 | ``` 82 | # Default post title 83 | default_post_title: Untitled 84 | ``` 85 | 86 | ### Comments 87 | 88 | The comments provider is specified in the theme's `_config.yml`. If you specify both a `disqus_shortname` and a `facebook.appid` there will be 2 sets of comment per post. So choose one. 89 | 90 | ``` 91 | # Comments. Choose one by filling up the information 92 | comments: 93 | # Disqus comments 94 | disqus_shortname: klugjotest 95 | # Facebook comments 96 | facebook: 97 | appid: 123456789012345 98 | comment_count: 5 99 | comment_colorscheme: light 100 | ``` 101 | 102 | You can too hide the comment in the posts front-matter: 103 | 104 | ``` 105 | comment: false 106 | --- 107 | ``` 108 | 109 | ### Google Analytics 110 | 111 | The Google Analytics Tracking ID is configured in the theme's `_config.yml`. 112 | 113 | ``` 114 | # Google Analytics Tracking ID 115 | google_analytics: 116 | ``` 117 | 118 | ### Addthis 119 | 120 | The Addthis ID is configured in the theme's `_config.yml`. 121 | 122 | ``` 123 | # Addthis ID 124 | addthis: 125 | ``` 126 | 127 | ### Social Account 128 | 129 | Setup the links to your social pages in the theme's `_config.yml`. Links are in the footer. 130 | 131 | ``` 132 | # Social Accounts 133 | twitter_url: 134 | facebook_url: 135 | github_url: https://github.com/klugjo/hexo-theme-clean-blog 136 | linkedin_url: 137 | mailto: 138 | ``` 139 | 140 | ### Author 141 | 142 | The post's author is specified in the posts front-matter: 143 | 144 | ``` 145 | author: Klug Jo 146 | --- 147 | ``` 148 | 149 | ### Post's Cover Image 150 | 151 | By default, posts will use the home page cover image. You can specify a custom cover in the front-matter: 152 | 153 | ``` 154 | title: Excerpts 155 | date: 2013-12-25 00:23:23 156 | tags: ["Excertps"] 157 | cover: /assets/contact-bg.jpg 158 | --- 159 | ``` 160 | 161 | ### Post's Share Cover Image 162 | 163 | You can specify a custom cover to share yours posts in social medias: 164 | 165 | ``` 166 | share_cover: /assets/contact-bg.jpg 167 | --- 168 | ``` 169 | 170 | ### Post's Excerpt 171 | 172 | This theme does not support traditional excerpts. To show excerpts on the index page, use `subtitle` in the front-matter: 173 | 174 | ``` 175 | title: Excerpts 176 | date: 2013-12-25 00:23:23 177 | tags: ["Excertps"] 178 | subtitle: Standard Excerpts are not supported in Clean Blog but you can use subtitles in the front matter to display text in the index. 179 | --- 180 | 181 | ``` 182 | 183 | ## Tags page. 184 | 185 | > Follow these steps to add a `tags` page that contains all the tags in your site. 186 | 187 | - Create a page named `tags` 188 | 189 | ``` 190 | $ hexo new page "tags" 191 | ``` 192 | 193 | - Edit the newly created page and set page type to `tags` in the front matter. 194 | 195 | ``` 196 | title: All tags 197 | type: "tags" 198 | ``` 199 | 200 | - Add `tags` to the menu in the theme `_config.yml`: 201 | 202 | ``` 203 | # Header 204 | menu: 205 | Home: / 206 | Archives: /archives 207 | Tags: /tags 208 | ``` 209 | 210 | ## Categories page. 211 | 212 | > Follow these steps to add a `categories` page that contains all the categories in your site. 213 | 214 | - Create a page named `categories` 215 | 216 | ``` 217 | $ hexo new page "categories" 218 | ``` 219 | 220 | - Edit the newly created page and set page type to `categories` in the front matter. 221 | 222 | ``` 223 | title: All categories 224 | type: "categories" 225 | ``` 226 | 227 | - Add `Categories` to the menu in the theme `_config.yml`: 228 | 229 | ``` 230 | # Header 231 | menu: 232 | Home: / 233 | Archives: /archives 234 | Categories: /categories 235 | ``` 236 | 237 | 238 | ## Creator 239 | 240 | This theme was created by [Blackrock Digital](https://github.com/BlackrockDigital) and adapted for Hexo by [Jonathan Klughertz](http://www.codeblocq.com/). 241 | 242 | ## License 243 | 244 | MIT 245 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Header 2 | menu: 3 | Home: / 4 | Archives: /archives 5 | Tags: /tags 6 | Categories: /categories 7 | Github: 8 | url: https://github.com/klugjo/hexo-theme-clean-blog 9 | icon: github 10 | 11 | # Title on top left of menu. Leave empty to use main blog title 12 | menu_title: Configurable Title 13 | 14 | # URL of the Home page image 15 | index_cover: img/home-bg.jpg 16 | 17 | # Default post title 18 | default_post_title: Untitled 19 | 20 | # Comments. Choose one by filling up the information 21 | comments: 22 | # Disqus comments 23 | disqus_shortname: 24 | # Facebook comments 25 | facebook: 26 | appid: 27 | comment_count: 5 28 | comment_colorscheme: light 29 | 30 | # Google Analytics Tracking ID 31 | google_analytics: 32 | 33 | # Addthis ID 34 | addthis: 35 | 36 | # set your own favicon 37 | favicon: 38 | 39 | # Social Accounts 40 | twitter_url: 41 | twitter_handle: 42 | facebook_url: 43 | github_url: https://github.com/klugjo/hexo-theme-clean-blog 44 | gitlab_url: 45 | linkedin_url: 46 | mailto: -------------------------------------------------------------------------------- /languages/de.yml: -------------------------------------------------------------------------------- 1 | prev: Vorherige Seite 2 | next: Nächste Seite 3 | comment: Kommentare 4 | archive_a: Archiv 5 | archive_b: "Archiv: %s" -------------------------------------------------------------------------------- /languages/default.yml: -------------------------------------------------------------------------------- 1 | prev: Older Posts 2 | next: Newer Posts 3 | comment: Comments 4 | archive_a: Archives 5 | archive_b: "Archives: %s" -------------------------------------------------------------------------------- /languages/en.yml: -------------------------------------------------------------------------------- 1 | prev: Older Posts 2 | next: Newer Posts 3 | comment: Comments 4 | archive_a: Archives 5 | archive_b: "Archives: %s" -------------------------------------------------------------------------------- /languages/es.yml: -------------------------------------------------------------------------------- 1 | prev: Anterior 2 | next: Siguiente 3 | comment: Comentarios 4 | archive_a: Archivo 5 | archive_b: "Archivo: %s" -------------------------------------------------------------------------------- /languages/fr.yml: -------------------------------------------------------------------------------- 1 | prev: Précedent 2 | next: Suivant 3 | comment: Commentaires 4 | archive_a: Archives 5 | archive_b: "Archives: %s" 6 | -------------------------------------------------------------------------------- /languages/ko.yml: -------------------------------------------------------------------------------- 1 | prev: 이전글 2 | next: 다음글 3 | comment: 코멘트 4 | archive_a: 아카이브 5 | archive_b: "아카이브: %s" 6 | -------------------------------------------------------------------------------- /languages/no.yml: -------------------------------------------------------------------------------- 1 | prev: Forrige 2 | next: Neste 3 | comment: Kommentarer 4 | archive_a: Arkiv 5 | archive_b: "Arkiv: %s" -------------------------------------------------------------------------------- /languages/pl.yml: -------------------------------------------------------------------------------- 1 | prev: Poprzednia 2 | next: Następna 3 | comment: Komentarze 4 | archive_a: Archiwa 5 | archive_b: "Archiwa: %s" -------------------------------------------------------------------------------- /languages/pt.yml: -------------------------------------------------------------------------------- 1 | prev: Antigos 2 | next: Novos 3 | comment: Comentários 4 | archive_a: Arquivos 5 | archive_b: "Arquivados: %s" 6 | tagcloud: Tags 7 | categories: Categorias -------------------------------------------------------------------------------- /languages/ru.yml: -------------------------------------------------------------------------------- 1 | prev: Назад 2 | next: Вперед 3 | comment: Комментарии 4 | archive_a: Архив 5 | archive_b: "Архив: %s" -------------------------------------------------------------------------------- /languages/zh-CN.yml: -------------------------------------------------------------------------------- 1 | prev: 上一页 2 | next: 下一页 3 | comment: 留言 4 | archive_a: 归档 5 | archive_b: 归档:%s 6 | -------------------------------------------------------------------------------- /languages/zh-TW.yml: -------------------------------------------------------------------------------- 1 | prev: 上一頁 2 | next: 下一頁 3 | comment: 留言 4 | archive_a: 彙整 5 | archive_b: 彙整:%s -------------------------------------------------------------------------------- /layout/_partial/after-footer.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | <% if (theme.comments && theme.comments.disqus_shortname){ %> 13 | 24 | <% } %> 25 | -------------------------------------------------------------------------------- /layout/_partial/article-archive.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 |

4 | <%- item.title || theme.default_post_title || "Untitled" %> 5 |

6 |
7 |

8 | 9 | <% if(item.author) { %> 10 | Posted by <%- item.author %> on 11 | <% } %> 12 | <%= item.date.format(config.date_format) %> 13 |

14 |
-------------------------------------------------------------------------------- /layout/_partial/article-categories.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var categories = []; 3 | item.categories.forEach(function(category){ 4 | categories.push('' + category.name + ''); 5 | }); 6 | %> 7 | 8 | <%- categories.join('/ ') %> 9 | -------------------------------------------------------------------------------- /layout/_partial/article-full.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <% 4 | var cover = item.cover || theme.index_cover; 5 | %> 6 |
7 |
8 |
9 |
10 |
11 |

<%- item.title || theme.default_post_title || "Untitled" %>

12 | <% if (item.subtitle && item.subtitle.length) { %> 13 |

14 | <%- item.subtitle %> 15 |

16 | <% } %> 17 | 18 | 19 | <% if(item.author) { %> 20 | Posted by <%- item.author %> on 21 | <% } %> 22 | <% if(item.date) { %> 23 | <%= item.date.format(config.date_format) %> 24 | <% } %> 25 | 26 |
27 |
28 |
29 |
30 |
31 | 32 | 33 |
34 |
35 |
36 | 37 | 38 | <% if (item.categories && item.categories.length || item.tags && item.tags.length) { %> 39 | 46 |
47 | <% if (item.tags && item.tags.length && item.categories && item.categories.length){ %> 48 | <%- partial('article-categories', {item: item}) %> 49 | <% } %> 50 |
51 | <% } %> 52 | 53 | 54 | <% if (item.photos && item.photos.length){ %> 55 | <%- partial('gallery') %> 56 | <% } %> 57 | 58 | 59 |
60 | <%- item.content %> 61 | 62 | <% if(theme.addthis) { %> 63 | 64 | 65 | 66 | 67 |
68 | <% } %> 69 |
70 | 71 | 72 | <% if (item.comment != false) { %> 73 |
74 | <%- partial("_partial/comments.ejs") %> 75 |
76 | <% } %> 77 |
78 |
79 |
-------------------------------------------------------------------------------- /layout/_partial/article-index.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 |

4 | <%- item.title || theme.default_post_title || "Untitled" %> 5 |

6 | <% if (item.subtitle && item.subtitle.length) { %> 7 |

8 | <%- item.subtitle %> 9 |

10 | <% } %> 11 |
12 |

13 | 14 | <% if(item.author) { %> 15 | Posted by <%- item.author %> on 16 | <% } %> 17 | <%= item.date.format(config.date_format) %> 18 |

19 |
20 |
-------------------------------------------------------------------------------- /layout/_partial/article-tags.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% 3 | var tags = []; 4 | item.tags.forEach(function(tag){ 5 | tags.push('#' + tag.name + ''); 6 | }); 7 | %> 8 | 9 | <%- tags.join(' ') %> 10 | 11 | -------------------------------------------------------------------------------- /layout/_partial/comments.ejs: -------------------------------------------------------------------------------- 1 | <% if(page.comments && theme.comments && theme.comments.disqus_shortname){ %> 2 |
3 |

<%- __('comment')%>:

4 |
5 | 6 |
7 | <% } %> 8 | 9 | <% if(page.comments && theme.comments && theme.comments.facebook && theme.comments.facebook.appid) { %> 10 |
11 |

<%- __('comment')%>:

12 |
13 | 22 | 23 |
24 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/footer.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 82 | -------------------------------------------------------------------------------- /layout/_partial/gallery.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | <% if (item.photos.length){ %> 5 | <% item.photos.forEach(function(photo){ %> 6 |
7 | 8 | 9 | 10 |
11 | <% }); %> 12 | <% } %> 13 |
14 |
-------------------------------------------------------------------------------- /layout/_partial/google-analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.google_analytics){ %> 2 | 12 | <% } %> 13 | -------------------------------------------------------------------------------- /layout/_partial/head.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | <% 10 | var description = ''; 11 | 12 | if (page.description) { 13 | description = page.description; 14 | } else if (config.description) { 15 | description = config.description; 16 | } else if (page.excerpt) { 17 | description = strip_html(page.excerpt).replace(/^\s*/, '').replace(/\s*$/, ''); 18 | } else if (page.content) { 19 | description = strip_html(page.content).replace(/^\s*/, '').replace(/\s*$/, '').substring(0, 150); 20 | } 21 | %> 22 | 23 | <% if (description) { %> 24 | 25 | <% } %> 26 | 27 | 28 | <% if (config.author) { %> 29 | 30 | <% } %> 31 | 32 | 33 | <% if (page.title) { %> 34 | 35 | <% } else { %> 36 | 37 | <% } %> 38 | 39 | 40 | <% if (description) { %> 41 | 42 | <% } %> 43 | 44 | 45 | 46 | 47 | 48 | <% if(page.title) { %> 49 | 50 | <% } else { %> 51 | 52 | <% } %> 53 | 54 | 55 | <% 56 | var image = ''; 57 | if (page.share_cover) { 58 | image = page.share_cover; 59 | } else if (config.cover) { 60 | image = config.cover; 61 | } else if (theme.index_cover) { 62 | image = theme.index_cover; 63 | } 64 | %> 65 | <% if (image) { %> 66 | 67 | <% } %> 68 | 69 | 70 | 71 | <% if(theme.twitter_handle) { %> 72 | 73 | <% } %> 74 | 75 | <% if(image) { %> 76 | 77 | <% } %> 78 | 79 | 80 | <% 81 | var title = []; 82 | if (page.current > 1) title.push(__('page', page.current)); 83 | if (page.title) title.push(page.title); 84 | if (page.category) title.push(page.category); 85 | if (page.tag) title.push(page.tag); 86 | if (page.archive) { 87 | if (page.year) title.push(__('archive_b', page.year + (page.month ? '/' + page.month : ''))); 88 | else title.push(__('archive_a')); 89 | } 90 | title.push(config.title); 91 | %> 92 | <%= title.join(' - ') %> 93 | 94 | 95 | 96 | 97 | 98 | <%- css('css/style.css') %> 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 111 | 112 | 113 | 114 | 115 | 116 | <%- partial('google-analytics') %> 117 | 118 | 119 | <% if (theme.favicon) { %> 120 | 121 | <% } %> 122 | 123 | 124 | -------------------------------------------------------------------------------- /layout/_partial/menu.ejs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layout/_partial/pagination.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/_partial/tag-category-index.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 |

4 | <%- item.name || "Untitled" %> 5 |

6 |
7 |
-------------------------------------------------------------------------------- /layout/archive.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var title = ''; 3 | if (page.category) title = page.category; 4 | if (page.tag) title = "#" + page.tag; 5 | if (page.archive) { 6 | if (page.year) title = page.year + (page.month ? '/' + page.month : ''); 7 | else title = __('archive_a'); 8 | } 9 | %> 10 | 11 | 12 | 13 |
14 |
15 |
16 |
17 |
18 |

<%- title %>

19 |
20 |
21 |
22 |
23 |
24 | 25 | 26 |
27 |
28 |
29 | <% page.posts.each(function(item){ %> 30 | <%- partial('_partial/article-archive', {item: item}) %> 31 | <% }); %> 32 |
33 | <%- partial('_partial/pagination') %> 34 |
35 |
36 |
37 | -------------------------------------------------------------------------------- /layout/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 |
6 |
7 |
8 |

<%- config.title %>

9 |
10 | <%- config.subtitle %> 11 |
12 |
13 |
14 |
15 |
16 | 17 | 18 |
19 |
20 |
21 | <% page.posts.each(function(item){ %> 22 | <%- partial('_partial/article-index', {item: item}) %> 23 | <% }); %> 24 | 25 | <%- partial('_partial/pagination') %> 26 |
27 |
28 |
29 | 30 | -------------------------------------------------------------------------------- /layout/layout.ejs: -------------------------------------------------------------------------------- 1 | 2 | lang="<%= config.language %>"<% } else { %>lang="en"<% }%>> 3 | 4 | 5 | <%- partial('_partial/head') %> 6 | 7 | 8 | 9 | 10 | <%- partial('_partial/menu') %> 11 | 12 | 13 | <%- body %> 14 | 15 | 16 | <%- partial('_partial/footer') %> 17 | 18 | 19 | <%- partial('_partial/after-footer') %> 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /layout/page.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var items = []; 3 | var title = ''; 4 | var isTagIndex = page.type === 'tags' || page.type === 'tag'; 5 | var isCategoryIndex = page.type === 'categories' || page.type === 'category'; 6 | if (isTagIndex) { 7 | items = site.tags; 8 | title = __('tags'); 9 | } else if (isCategoryIndex) { 10 | items = site.categories; 11 | title = __('categories'); 12 | } 13 | %> 14 | 15 | <% if (isTagIndex || isCategoryIndex) { %> 16 |
17 |
18 |
19 |
20 |
21 |

<%- page.title %>

22 |
23 |
24 |
25 |
26 |
27 | 28 | 29 |
30 |
31 |
32 | <% items.forEach(function(item){ %> 33 | <%- partial('_partial/tag-category-index', {item: item}) %> 34 | <% }); %> 35 |
36 |
37 |
38 |
39 | <% } else { %> 40 |
41 | <%- partial('_partial/article-full', {item: page}) %> 42 |
43 | <% } %> 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /layout/post.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/article-full', {item: page}) %> -------------------------------------------------------------------------------- /source/css/article.styl: -------------------------------------------------------------------------------- 1 | article 2 | .container 3 | .row 4 | // Responsive Images 5 | img 6 | max-width 100% !important 7 | height auto 8 | display inline-block 9 | // Video Containers 10 | .video-container 11 | position relative 12 | padding-bottom 56.25% 13 | padding-top 30px 14 | height 0 15 | overflow hidden 16 | iframe, object, embed 17 | position absolute 18 | top 0 19 | left 0 20 | width 100% 21 | height 100% 22 | margin-top 0 23 | blockquote 24 | font-style italic 25 | font-family font-serif 26 | font-size 1.2em 27 | padding 0 30px 15px 28 | text-align center 29 | footer 30 | border-top none 31 | font-size 0.8em 32 | line-height 1 33 | margin 20px 0 0 34 | padding-top 0 35 | cite 36 | &:before 37 | content '—' 38 | color #ccc 39 | padding 0 0.5em 40 | 41 | .pullquote 42 | float right 43 | border none 44 | padding 0 45 | margin 1em 0 0.5em 1.5em 46 | text-align left 47 | width 45% 48 | font-size 1.5em 49 | &.left 50 | float left 51 | 52 | figure.highlight 53 | background #eee 54 | border 1px solid color-border 55 | margin-top 15px 56 | padding 7px 15px 57 | border-radius 2px 58 | text-shadow 0 0 1px #fff 59 | line-height 1.6 60 | overflow auto 61 | position relative 62 | font-size 0.9em 63 | figcaption 64 | color color-meta 65 | font-family font-mono 66 | margin-bottom 5px 67 | text-shadow 0 0 1px #fff 68 | a 69 | position absolute 70 | right 15px 71 | 72 | pre 73 | border none 74 | padding 0 75 | margin 0 76 | background none 77 | 78 | table 79 | margin-top 0 80 | border-spacing 0 81 | 82 | .gutter 83 | color color-meta 84 | padding-right 15px 85 | border-right 1px solid color-border 86 | text-align right 87 | 88 | .code 89 | padding-left 15px 90 | border-left 1px solid #fff 91 | color #666 92 | 93 | .line 94 | height: 20px 95 | 96 | .line.marked 97 | background: #d6d6d6 98 | 99 | pre 100 | // Theme: Solarized - Light 101 | // More theme here: http://softwaremaniacs.org/media/soft/highlight/test.html 102 | .comment 103 | .template_comment 104 | .diff .header 105 | .doctype 106 | .pi 107 | .lisp .string 108 | .javadoc 109 | color #93a1a1 110 | font-style italic 111 | 112 | .keyword 113 | .winutils 114 | .method 115 | .addition 116 | .css .tag 117 | .request 118 | .status 119 | .nginx .title 120 | color #859900 121 | 122 | .number 123 | .command 124 | .string 125 | .tag .value 126 | .phpdoc 127 | .tex .formula 128 | .regexp 129 | .hexcolor 130 | color #2aa198 131 | 132 | .title 133 | .localvars 134 | .chunk 135 | .decorator 136 | .built_in 137 | .identifier 138 | .vhdl 139 | .literal 140 | .id 141 | color #268bd2 142 | 143 | .attribute 144 | .variable 145 | .lisp .body 146 | .smalltalk .number 147 | .constant 148 | .class .title 149 | .parent 150 | .haskell .type 151 | color #b58900 152 | 153 | .preprocessor 154 | .preprocessor .keyword 155 | .shebang 156 | .symbol 157 | .symbol .string 158 | .diff .change 159 | .special 160 | .attr_selector 161 | .important 162 | .subst 163 | .cdata 164 | .clojure .title 165 | color #cb4b16 166 | 167 | .deletion 168 | color #dc322f 169 | -------------------------------------------------------------------------------- /source/css/base.styl: -------------------------------------------------------------------------------- 1 | @import "variables.styl" 2 | @import "mixins.styl" 3 | 4 | body 5 | @extend .serif 6 | font-size 20px 7 | color gray-dark 8 | 9 | p 10 | line-height 1.5 11 | margin 30px 0 12 | 13 | p, li 14 | a 15 | text-decoration underline 16 | 17 | h1, h2, h3, h4, h5, h6 18 | @extend .sans-serif 19 | font-weight 800 20 | 21 | a 22 | color gray-dark 23 | &:hover, &:focus 24 | color brand-primary 25 | a img 26 | &:hover, &:focus 27 | cursor zoom-in 28 | 29 | hr.small 30 | max-width 100px 31 | margin 15px auto 32 | border-width 4px 33 | border-color white 34 | 35 | .fa-stack-1x, .fa-stack-2x 36 | bottom 0 37 | 38 | .navbar-custom 39 | position absolute 40 | top 0 41 | left 0 42 | width 100% 43 | z-index 3 44 | @extend .sans-serif 45 | .navbar-brand 46 | font-weight 800 47 | .nav 48 | li 49 | a 50 | text-transform uppercase 51 | font-size 12px 52 | font-weight 800 53 | letter-spacing 1px 54 | text-decoration none 55 | @media only screen and (min-width: 768px) 56 | background transparent 57 | border-bottom 1px solid transparent 58 | .navbar-brand 59 | color white 60 | padding 20px 61 | &:hover, &:focus 62 | color white-faded 63 | .nav 64 | li 65 | a 66 | color white 67 | padding 20px 68 | &:hover, &:focus 69 | color white-faded 70 | @media only screen and (min-width: 1170px) 71 | -webkit-transition background-color 0.3s 72 | -moz-transition background-color 0.3s 73 | transition background-color 0.3s 74 | /* Force Hardware Acceleration in WebKit */ 75 | -webkit-transform translate3d(0, 0, 0) 76 | -moz-transform translate3d(0, 0, 0) 77 | -ms-transform translate3d(0, 0, 0) 78 | -o-transform translate3d(0, 0, 0) 79 | transform translate3d(0, 0, 0) 80 | -webkit-backface-visibility hidden 81 | backface-visibility hidden 82 | &.is-fixed 83 | /* when the user scrolls down, we hide the header right above the viewport */ 84 | position fixed 85 | top -61px 86 | background-color rgba(255, 255, 255, 0.9) 87 | border-bottom 1px solid darken(rgb(255, 255, 255, 1), 5%) 88 | -webkit-transition -webkit-transform 0.3s 89 | -moz-transition -moz-transform 0.3s 90 | transition transform 0.3s 91 | .navbar-brand 92 | color gray-dark 93 | &:hover, &:focus 94 | color brand-primary 95 | .nav 96 | li 97 | a 98 | color gray-dark 99 | &:hover, &:focus 100 | color brand-primary 101 | &.is-visible 102 | /* if the user changes the scrolling direction, we show the header */ 103 | -webkit-transform translate3d(0, 100%, 0) 104 | -moz-transform translate3d(0, 100%, 0) 105 | -ms-transform translate3d(0, 100%, 0) 106 | -o-transform translate3d(0, 100%, 0) 107 | transform translate3d(0, 100%, 0) 108 | 109 | .intro-header 110 | background-color gray 111 | background-position center center 112 | background-attachment scroll 113 | @extend .background-cover 114 | margin-bottom 50px 115 | .site-heading, .post-heading, .page-heading 116 | padding 100px 0 50px 117 | color white 118 | @media only screen and (min-width: 768px) 119 | padding 150px 0 120 | &.archives 121 | color brand-primary 122 | margin-top 60px 123 | .site-heading, .page-heading 124 | text-align center 125 | h1 126 | margin-top 0 127 | font-size 50px 128 | .subheading 129 | font-size 24px 130 | line-height 1.1 131 | display block 132 | @extend .sans-serif 133 | font-weight 300 134 | margin 10px 0 0 135 | @media only screen and (min-width: 768px) 136 | h1 137 | font-size 80px 138 | .post-heading 139 | h1 140 | font-size 35px 141 | .subheading, .meta 142 | line-height 1.1 143 | display block 144 | .subheading 145 | @extend .sans-serif 146 | font-size 24px 147 | margin 10px 0 30px 148 | font-weight 600 149 | .meta 150 | @extend .serif 151 | font-style italic 152 | font-weight 300 153 | font-size 20px 154 | a 155 | color white 156 | @media only screen and (min-width: 768px) 157 | h1 158 | font-size 55px 159 | .subheading 160 | font-size 30px 161 | 162 | .post-preview 163 | > a 164 | color gray-dark 165 | &:hover, &:focus 166 | text-decoration none 167 | color brand-primary 168 | > .post-title 169 | font-size 30px 170 | margin-top 30px 171 | margin-bottom 10px 172 | &.archive 173 | font-size 22px 174 | > .post-subtitle 175 | margin 0 176 | font-weight 300 177 | margin-bottom 10px 178 | > .post-meta 179 | color gray 180 | font-size 18px 181 | font-style italic 182 | margin-top 0 183 | &.archive 184 | font-size 16px 185 | > a 186 | text-decoration none 187 | color gray-dark 188 | &:hover, &:focus 189 | color brand-primary 190 | text-decoration underline 191 | @media only screen and (min-width: 768px) 192 | > a 193 | > .post-title 194 | font-size 36px 195 | 196 | .section-heading 197 | font-size 36px 198 | margin-top 60px 199 | font-weight 700 200 | 201 | .caption 202 | text-align center 203 | font-size 14px 204 | padding 10px 205 | font-style italic 206 | margin 0 207 | display block 208 | border-bottom-right-radius 5px 209 | border-bottom-left-radius 5px 210 | 211 | .post-tags, .post-categories 212 | font-size 15px 213 | margin-top 30px 214 | margin-bottom 30px 215 | a 216 | border-bottom 1px dotted #ABABAB 217 | text-transform uppercase 218 | margin-right 10px 219 | &:hover, &:visited, &:active 220 | text-decoration none 221 | border-bottom none 222 | 223 | .archive-before-pagination 224 | height 30px 225 | footer 226 | padding 50px 0 65px 227 | .list-inline 228 | margin 0 229 | padding 0 230 | .copyright 231 | font-size 14px 232 | text-align center 233 | margin-bottom 0 234 | 235 | .floating-label-form-group 236 | font-size 14px 237 | position relative 238 | margin-bottom 0 239 | padding-bottom 0.5em 240 | border-bottom 1px solid gray-light 241 | input, textarea 242 | z-index 1 243 | position relative 244 | padding-right 0 245 | padding-left 0 246 | border none 247 | border-radius 0 248 | font-size 1.5em 249 | background none 250 | box-shadow none !important 251 | resize none 252 | label 253 | display block 254 | z-index 0 255 | position relative 256 | top 2em 257 | margin 0 258 | font-size 0.85em 259 | line-height 1.764705882em 260 | vertical-align middle 261 | vertical-align baseline 262 | opacity 0 263 | -webkit-transition top 0.3s ease,opacity 0.3s ease 264 | -moz-transition top 0.3s ease,opacity 0.3s ease 265 | -ms-transition top 0.3s ease,opacity 0.3s ease 266 | transition top 0.3s ease,opacity 0.3s ease 267 | &::not(:first-child) 268 | padding-left 14px 269 | border-left 1px solid gray-light 270 | 271 | .floating-label-form-group-with-value 272 | label 273 | top 0 274 | opacity 1 275 | 276 | .floating-label-form-group-with-focus 277 | label 278 | color brand-primary 279 | 280 | form .row:first-child .floating-label-form-group 281 | border-top 1px solid gray-light 282 | 283 | .btn 284 | @extend .sans-serif 285 | text-transform uppercase 286 | font-size 14px 287 | font-weight 800 288 | letter-spacing 1px 289 | border-radius 0 290 | padding 15px 25px 291 | 292 | .btn-lg 293 | font-size 16px 294 | padding 25px 35px 295 | 296 | .btn-default 297 | &:hover, &:focus 298 | background-color brand-primary 299 | border 1px solid brand-primary 300 | color white 301 | 302 | .pager 303 | margin 20px 0 0 304 | li 305 | > a, > span 306 | @extend .sans-serif 307 | text-transform uppercase 308 | font-size 14px 309 | font-weight 800 310 | letter-spacing 1px 311 | padding 15px 25px 312 | background-color white 313 | border-radius 0 314 | > a:hover, > a:focus 315 | color white 316 | background-color brand-primary 317 | border 1px solid brand-primary 318 | .disabled 319 | > a, > a:hover, > a:focus, > span 320 | color gray 321 | background-color gray-dark 322 | cursor not-allowed 323 | 324 | ::-moz-selection 325 | color white 326 | text-shadow none 327 | background brand-primary 328 | 329 | ::selection 330 | color white 331 | text-shadow none 332 | background brand-primary 333 | 334 | img::selection 335 | color white 336 | background transparent 337 | 338 | img::-moz-selection 339 | color white 340 | background transparent 341 | 342 | body 343 | webkit-tap-highlight-color brand-primary 344 | -------------------------------------------------------------------------------- /source/css/mixins.styl: -------------------------------------------------------------------------------- 1 | transition-all() 2 | -webkit-transition all 0.5s 3 | -moz-transition all 0.5s 4 | transition all 0.5s 5 | 6 | .transition-all 7 | transition-all() 8 | 9 | background-cover() 10 | -webkit-background-size cover 11 | -moz-background-size cover 12 | background-size cover 13 | -o-background-size cover 14 | 15 | .background-cover 16 | background-cover() 17 | 18 | serif() 19 | font-family 'Lora', 'Times New Roman', serif 20 | 21 | .serif 22 | serif() 23 | 24 | sans-serif() 25 | font-family 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif 26 | 27 | .sans-serif 28 | sans-serif() 29 | -------------------------------------------------------------------------------- /source/css/style.styl: -------------------------------------------------------------------------------- 1 | @import "base.styl" 2 | @import "article.styl" 3 | -------------------------------------------------------------------------------- /source/css/variables.styl: -------------------------------------------------------------------------------- 1 | 2 | brand-primary = rgb(0, 133, 161, 1) 3 | gray-dark = lighten(rgb(0, 0, 0, 1), 25%) 4 | gray = lighten(rgb(0, 0, 0, 1), 50%) 5 | white-faded = rgba(255, 255, 255, .8) 6 | gray-light = rgb(238, 238, 238, 1) 7 | color-border = #ddd 8 | color-meta = #999 9 | 10 | font-mono = Monaco, Menlo, Consolas, Courier New, monospace 11 | font-serif = "Georgia", serif 12 | -------------------------------------------------------------------------------- /source/img/about-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klugjo/hexo-theme-clean-blog/6273299d8bfa2af16175f3784891046425164601/source/img/about-bg.jpg -------------------------------------------------------------------------------- /source/img/contact-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klugjo/hexo-theme-clean-blog/6273299d8bfa2af16175f3784891046425164601/source/img/contact-bg.jpg -------------------------------------------------------------------------------- /source/img/home-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klugjo/hexo-theme-clean-blog/6273299d8bfa2af16175f3784891046425164601/source/img/home-bg.jpg --------------------------------------------------------------------------------