├── 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 | 
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 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | <% if (item.categories && item.categories.length || item.tags && item.tags.length) { %>
39 |
40 | <% if (item.tags && item.tags.length){ %>
41 | <%- partial('article-tags', {item: item}) %>
42 | <% } else { %>
43 | <%- partial('article-categories', {item: item}) %>
44 | <% } %>
45 |
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 |
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 |
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 |
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 |
--------------------------------------------------------------------------------
/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 |
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 |
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 |
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
--------------------------------------------------------------------------------