├── LICENSE ├── README.md ├── archives.ftl ├── categories.ftl ├── category.ftl ├── index.ftl ├── journals.ftl ├── layout ├── categories.ftl ├── category.ftl ├── comment │ ├── comment.ftl │ └── comments.ftl ├── common │ ├── advert.ftl │ ├── article.ftl │ ├── footer.ftl │ ├── head.ftl │ ├── navbar.ftl │ ├── notice.ftl │ ├── scripts.ftl │ └── widget.ftl ├── donate │ ├── alipay.ftl │ └── wechat.ftl ├── layout-custom.ftl ├── layout-navbar.ftl ├── layout.ftl ├── plugin │ ├── animejs.ftl │ ├── back-to-top.ftl │ ├── gallery.ftl │ ├── mathjax.ftl │ ├── outdated-browser.ftl │ └── show-mobile-menu.ftl ├── search │ └── local.ftl ├── share │ ├── addtoany.ftl │ ├── bdshare.ftl │ └── sharejs.ftl ├── tag.ftl ├── tags.ftl ├── widget │ ├── archive.ftl │ ├── category.ftl │ ├── journals.ftl │ ├── links.ftl │ ├── menu_tag.ftl │ ├── photos.ftl │ ├── profile.ftl │ ├── recent_comments.ftl │ ├── recent_posts.ftl │ ├── slider.ftl │ ├── slider_list.ftl │ ├── slider_tag.ftl │ ├── tag.ftl │ ├── tagcloud.ftl │ ├── toc.ftl │ └── url_menu_tag.ftl └── wiki.ftl ├── links.ftl ├── photos.ftl ├── post.ftl ├── screenshot.png ├── search.ftl ├── settings.yaml ├── sheet.ftl ├── sheet_wikis.ftl ├── source ├── css │ ├── back-to-top.css │ ├── bundle.css │ ├── insight.css │ ├── progressbar.css │ ├── search.css │ ├── style.css │ └── style.styl ├── doc │ └── bulma_doc.txt ├── images │ ├── avatar.png │ ├── favicon.svg │ ├── logo.svg │ ├── og_image.png │ └── thumbnail.svg ├── js │ ├── animation.js │ ├── back-to-top.js │ ├── bundle.js │ ├── common.js │ ├── gallery.js │ └── main.js └── lib │ ├── hwslider │ ├── css │ │ └── hwslider.css │ ├── index.1.html │ ├── index.html │ └── js │ │ └── jquery.hwSlider.min.js │ ├── hydrogen │ ├── css │ │ ├── animate.css │ │ ├── magnific-popup.css │ │ ├── salvattore.css │ │ └── style.css │ ├── images │ │ ├── img_1.jpg │ │ ├── img_10.jpg │ │ ├── img_11.jpg │ │ ├── img_12.jpg │ │ ├── img_13.jpg │ │ ├── img_14.jpg │ │ ├── img_15.jpg │ │ ├── img_16.jpg │ │ ├── img_17.jpg │ │ ├── img_18.jpg │ │ ├── img_19.jpg │ │ ├── img_2.jpg │ │ ├── img_20.jpg │ │ ├── img_21.jpg │ │ ├── img_22.jpg │ │ ├── img_23.jpg │ │ ├── img_24.jpg │ │ ├── img_25.jpg │ │ ├── img_26.jpg │ │ ├── img_27.jpg │ │ ├── img_28.jpg │ │ ├── img_29.jpg │ │ ├── img_3.jpg │ │ ├── img_30.jpg │ │ ├── img_4.jpg │ │ ├── img_5.jpg │ │ ├── img_6.jpg │ │ ├── img_7.jpg │ │ ├── img_8.jpg │ │ └── img_9.jpg │ ├── index.html │ └── js │ │ ├── bootstrap-3.3.4.js │ │ ├── bootstrap.min.js │ │ ├── jquery-1.10.2.js │ │ ├── jquery.easing.1.3.js │ │ ├── jquery.magnific-popup.min.js │ │ ├── jquery.min.js │ │ ├── jquery.waypoints.min.js │ │ ├── main.js │ │ ├── modernizr-2.6.2.min.js │ │ └── salvattore.min.js │ └── prism │ ├── css │ ├── prism-Coy.css │ ├── prism-Dark.css │ ├── prism-Default.css │ ├── prism-Okaidia.css │ ├── prism-Solarized Light.css │ ├── prism-Tomorrow Night.css │ └── prism-Twilight.css │ └── js │ └── prism.js ├── tag.ftl ├── tags.ftl └── theme.yaml /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 PPOffice 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Modify before:halo-theme-icarus

2 |

Modify after:预览效果地址(支持halo 1.3.1)

3 | 4 | ![screenshot.png](https://github.com/lin-liem/weicarus/blob/master/screenshot.png) 5 | 6 | ## 更新 7 | 8 | #### 2020年4月17日 更新内容: 9 | 10 | 1:更新轮播图启停开关 11 | 12 | 设置位置:【外观】->【主题】->【设置】->【界面配置】 13 | 14 | 2:创建留言、关于自定义页面 15 | 16 | 设置位置:【页面】->【所以页面】->【自定义页面】 17 | 18 | 19 | #### 2020年4月16日 更新内容: 20 | 21 | 1:公告展示 22 | 23 | 2:大屏banner广告展示 24 | 25 | 可自定义关启,如需请更新后,前往后台管理【外观】->【主题】->【设置】->【界面配置】进行设置。 26 | 27 | 28 | 29 | #### 2020年4月8日 更新内容: 30 | 31 | 一、修复【资源目录】超过宽度隐藏的问题,改为了换行 32 | 33 | 二、首页轮播图和轮播图右侧的两张小图,分别根据标签【轮播列表】和【轮播附图】来展示,可以灵活的设置轮播内容。 34 | 35 | 【重 要】请在halo后台手动添加两个标签,格式如下(名称/别名): 36 | 37 | 标签1:轮播列表/lunboliebiao 38 | 39 | 标签2:轮播附图/lunbofutu 40 | 41 | 【使 用】标签添加完成后,发布文章时,选择对应的标签即可显示到对应的位置 42 | 43 | 【建 议】[轮播列表]建议5-10个,[轮播附图]建议最多2个,否则显示则不美观。 44 | 45 | 更多自定义配置请见,[主题设置]->[界面设置]->[轮播图设置] 46 | 47 | 注意:请一定添加【轮播列表/lunboliebiao】、【轮播附图/lunbofutu】两个标签,否则轮播图将不能正常显示。以后有时间会将这值改为灵活配置的。 48 | 49 | 若仍有问题请添加企鹅群:932154986 50 | 51 | 52 | ## 鸣谢 53 | 本人只是对原主题做了修改,感谢[halo](https://halo.run)的优质个人博客,感谢[ppoffice](https://github.com/ppoffice)做了这么优秀的主题。 54 | 55 | 修改后主题:[https://github.com/lin-liem/weicarus](https://github.com/lin-liem/weicarus) 56 | 57 | 所以,保留本主题原有README,如下: 58 | 59 | ## 说明 60 | 61 | 该主题的原作者为 [ppoffice](https://github.com/ppoffice),非常感谢做出这么优秀的主题。 62 | 63 | 原主题地址:[https://github.com/ppoffice/hexo-theme-icarus](https://github.com/ppoffice/hexo-theme-icarus) 64 | 65 | ## 预览截图 66 | 67 | ![screenshot.png](https://i.loli.net/2019/08/24/qAZXw6Eo54PbQJ7.png) 68 | ![settings.png](https://i.loli.net/2019/08/24/7K6m3VZApyfhUqF.png) 69 | ## 使用方法 70 | 71 | 1. 克隆或者[下载](https://github.com/halo-dev/halo-theme-icarus/releases)。 72 | 2. 压缩为 zip 压缩包之后在后台的主题设置直接上传即可使用。 73 | -------------------------------------------------------------------------------- /archives.ftl: -------------------------------------------------------------------------------- 1 | <#include "layout/layout.ftl"> 2 | <#include "layout/common/article.ftl"> 3 | <@layout type="archives" title="归档 - ${blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${archives_url!}"> 4 | <#list archives as archive> 5 |
6 |
7 | 10 |
11 | <#list archive.posts as post> 12 | 27 | 28 |
29 |
30 |
31 | 32 | <#if posts.getTotalPages() gt 0> 33 |
34 | 53 |
54 | 55 | -------------------------------------------------------------------------------- /categories.ftl: -------------------------------------------------------------------------------- 1 | <#include "layout/layout.ftl"> 2 | <#include "layout/common/article.ftl"> 3 | <@layout type="categories" title="分类 - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/categories"> 4 | <#include "layout/categories.ftl"> 5 | 6 | -------------------------------------------------------------------------------- /category.ftl: -------------------------------------------------------------------------------- 1 | <#include "layout/layout.ftl"> 2 | <#include "layout/common/article.ftl"> 3 | <@layout type="category" title="分类:${category.name!} - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/categories/${category.slugName!}"> 4 | <#include "layout/category.ftl"> 5 | -------------------------------------------------------------------------------- /index.ftl: -------------------------------------------------------------------------------- 1 | <#include "layout/layout.ftl"> 2 | <#include "layout/common/article.ftl"> 3 | <@layout type="index" title="${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}"> 4 | <#if settings.slider_enable!true> 5 | <#-- 0表示第一页才会显示--> 6 | <#if posts.number == 0> 7 | <#include "layout/widget/slider.ftl"> 8 | 9 | 10 | <#list posts.content as post> 11 | <@article post,'index','null',true /> 12 | 13 | <#if posts.getTotalPages() gt 0> 14 |
15 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /journals.ftl: -------------------------------------------------------------------------------- 1 | 2 | <#include "layout/layout.ftl"> 3 | <@layout type="journals" title="日志 - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/links"> 4 | <#include "layout/widget/journals.ftl"> 5 | 6 | -------------------------------------------------------------------------------- /layout/categories.ftl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 24 |
25 |
-------------------------------------------------------------------------------- /layout/category.ftl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 9 |
10 |
11 | <#list posts.content as post> 12 | <@article post,'index','null',true /> 13 | 14 | <#if posts.getTotalPages() gt 0> 15 |
16 | 35 |
36 | -------------------------------------------------------------------------------- /layout/comment/comment.ftl: -------------------------------------------------------------------------------- 1 | <#macro comment post,type> 2 | <#if !post.disallowComment!false> 3 | 4 | 5 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /layout/comment/comments.ftl: -------------------------------------------------------------------------------- 1 | <#macro comments post,type> 2 | <#if !post.disallowComment!false> 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /layout/common/advert.ftl: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /layout/common/article.ftl: -------------------------------------------------------------------------------- 1 | <#macro article post,layout,commentType,index> 2 | <#include "../comment/comment.ftl"> 3 |
4 |
5 | <#if index> 6 |

7 | ${post.title!} 8 |

9 | <#else> 10 |

11 | ${post.title!} 12 |

13 | 14 | <#-- 12布局文章内容 --> 15 | <#if index> 16 |
17 | <#if post.thumbnail?? && post.thumbnail!=''> 18 |
19 | <#-- 文章的基本信息 --> 20 | 31 | <#-- 文章概要 --> 32 | <#if post.summary?? && post.summary!=''> 33 |
${post.summary!}
34 | 35 |
36 |
37 |
38 | 39 | ${post.title!} 40 | 41 |
42 |
43 | <#else> 44 |
45 | <#-- 文章的基本信息 --> 46 | 57 | <#-- 文章概要 --> 58 | <#if post.summary?? && post.summary!=''> 59 |
${post.summary!}
60 | 61 |
62 | 63 |
64 | <#else> 65 | <#-- 文章的详情页面信息 --> 66 | 72 | 83 |
${post.formatContent!}
84 | <#if !index && tags?? && (tags?size gt 0)> 85 |
86 |
87 |
88 | # 89 | <#list tags as tag> 90 | ${tag.name!}   91 | 92 |
93 |
94 |
95 | 96 | 97 | 98 | <#if index && post.summary?? && post.summary!=''> 99 | 106 | 107 | <#if !index && settings.share_type?? && settings.share_type!=''> 108 | <#include "../share/${settings.share_type}.ftl"> 109 | 110 |
111 |
112 | 113 | <#if !index> 114 | <#if (settings.donate_alipay?? && settings.donate_alipay!='' ) || (settings.donate_wechat?? && 115 | settings.donate_wechat!='' )> 116 |
117 |
118 | 119 |
120 | <#if settings.donate_alipay?? && settings.donate_alipay!=''> 121 | <#include "../donate/alipay.ftl"> 122 | 123 | <#if settings.donate_wechat?? && settings.donate_wechat!=''> 124 | <#include "../donate/wechat.ftl"> 125 | 126 |
127 |
128 |
129 | 130 | 131 | 132 | <#if !index && nextPost?? && prevPost??> 133 |
134 |
135 | <#if prevPost??> 136 | 142 | 143 | <#if nextPost??> 144 | 150 | 151 |
152 |
153 | 154 | 155 | <#if !index> 156 |
157 |
158 |

评论

159 | <#if commentType=='post'> 160 | <@comment post,"post" /> 161 | <#else> 162 | <@comment post,"sheet" /> 163 | 164 |
165 |
166 | 167 | 168 | -------------------------------------------------------------------------------- /layout/common/footer.ftl: -------------------------------------------------------------------------------- 1 | 31 | 32 | 33 | 34 |
35 | 36 | 37 | 38 | <#if settings.sidebar_profile!true> 39 | <#include "../widget/profile.ftl"> 40 | 41 |
-------------------------------------------------------------------------------- /layout/common/head.ftl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/common/navbar.ftl: -------------------------------------------------------------------------------- 1 | <#macro navbar layout> 2 | 41 | 42 | -------------------------------------------------------------------------------- /layout/common/notice.ftl: -------------------------------------------------------------------------------- 1 |
2 |
3 |    ${settings.notice_info!'暂无公告...若无公告建议关闭公告显示'} 4 |
5 |
-------------------------------------------------------------------------------- /layout/common/scripts.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | <#include "../plugin/gallery.ftl"> 4 | <#include "../plugin/outdated-browser.ftl"> 5 | <#include "../plugin/mathjax.ftl"> 6 | <#include "../plugin/back-to-top.ftl"> 7 | 8 | 9 | 10 | 11 | 12 | 27 | 28 | <#if is_journals?? > 29 | 30 | 31 | 37 | 38 | 39 | <#if is_archives?? || is_category?? || is_index??> 40 | 64 | -------------------------------------------------------------------------------- /layout/common/widget.ftl: -------------------------------------------------------------------------------- 1 | <#macro widget position,isShowMenu> 2 |
3 | <#if position == 'left'> 4 | <#if isShowMenu == 'urlNavMenuShow'> 5 | <#include "../widget/url_menu_tag.ftl"> 6 | <#include "../plugin/show-mobile-menu.ftl"> 7 |
8 | <#else> 9 | <#if settings.sidebar_categories!true> 10 | <#include "../widget/category.ftl"> 11 | 12 | <#if settings.sidebar_tagcloud!true> 13 | <#include "../widget/tagcloud.ftl"> 14 | 15 | <#if settings.sidebar_links!true> 16 | <#include "../widget/links.ftl"> 17 | 18 | <#if isShowMenu == 'menuShow'> 19 | <#include "../widget/menu_tag.ftl"> 20 | <#include "../plugin/show-mobile-menu.ftl"> 21 |
22 | 23 | 24 | 25 | <#if position == 'right'> 26 | <#-- if settings.sidebar_profile!true> 27 | <#include "../widget/profile.ftl"> 28 | 29 | --> 30 | <#if settings.sidebar_recentpost!true> 31 | <#include "../widget/recent_posts.ftl"> 32 | 33 | <#if settings.sidebar_recentcomment!true> 34 | <#include "../widget/recent_comments.ftl"> 35 | 36 | <#--<#include "../widget/archive.ftl">--> 37 | <#if settings.sidebar_tags!true> 38 | <#include "../widget/tag.ftl"> 39 | 40 | 41 | <#if position == 'left' && isShowMenu != 'urlNavMenuShow'> 42 |
43 | <#if settings.sidebar_recentpost!true> 44 | <#include "../widget/recent_posts.ftl"> 45 | 46 | <#if settings.sidebar_recentcomment!true> 47 | <#include "../widget/recent_comments.ftl"> 48 | 49 | <#--<#include "../widget/archive.ftl">--> 50 | <#if settings.sidebar_tags!true> 51 | <#include "../widget/tag.ftl"> 52 | 53 |
54 | 55 | 56 |
57 | 58 | -------------------------------------------------------------------------------- /layout/donate/alipay.ftl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/donate/wechat.ftl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/layout-custom.ftl: -------------------------------------------------------------------------------- 1 | <#macro layout type,title,keywords,description,canonical> 2 | <#include "common/navbar.ftl"> 3 | <#include "common/widget.ftl"> 4 | 5 | 6 | 7 | 8 | 9 | ${title!} 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | <@global.head /> 30 | 31 | 32 | 33 | 34 | 35 | 36 | 43 | 44 | <#if is_post?? || is_sheet??> 45 | 56 | 57 | 58 | <#if is_post?? || is_sheet??> 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | <#-- 瀑布流 --> 69 | 70 | 71 | 72 | 73 | 74 | <#if post??> 75 | 76 | 77 | 78 | 79 | 80 | <@navbar 'page' /> 81 |
82 |
83 |
84 |
85 | <#nested /> 86 |
87 | <#if type == "about"> 88 | <@widget 'right','no' /> 89 | 90 |
91 |
92 |
93 | 94 | 95 | 96 | 97 | <#include "common/footer.ftl"> 98 | <#include "common/scripts.ftl"> 99 | <#include "search/local.ftl"> 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | -------------------------------------------------------------------------------- /layout/layout-navbar.ftl: -------------------------------------------------------------------------------- 1 | <#macro layout type,title,keywords,description,canonical> 2 | <#include "common/navbar.ftl"> 3 | <#include "common/widget.ftl"> 4 | 5 | 6 | 7 | 8 | 9 | ${title!} 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | <@global.head /> 30 | 31 | 32 | 33 | 34 | 35 | 36 | 43 | 44 | <#if is_post?? || is_sheet??> 45 | 56 | 57 | 58 | <#if is_post?? || is_sheet??> 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | <#-- 瀑布流 --> 69 | 70 | 71 | 72 | 73 | 74 | <#if post??> 75 | 76 | 77 | 78 | 79 | 80 | <@navbar 'page' /> 81 |
82 |
83 |
84 |
85 | <#nested /> 86 |
87 |
88 |
89 |
90 | 91 | <#include "common/footer.ftl"> 92 | <#include "common/scripts.ftl"> 93 | <#include "search/local.ftl"> 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /layout/layout.ftl: -------------------------------------------------------------------------------- 1 | <#macro layout type,title,keywords,description,canonical> 2 | <#include "common/navbar.ftl"> 3 | <#include "common/widget.ftl"> 4 | 5 | 6 | 7 | 8 | 9 | ${title!} 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | <@global.head /> 25 | 26 | 27 | 28 | 29 | 30 | 31 | 38 | <#if is_post?? || is_sheet??> 39 | 50 | 51 | <#if is_post?? || is_sheet??> 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | <#if post??> 61 | 62 | 63 | 64 | <#include "common/head.ftl"> 65 | 66 | 67 | <@navbar 'page' /> 68 |
69 |
70 | <#if settings.advert_enable!false> 71 | <#include "common/advert.ftl"> 72 | 73 | <#if settings.notice_enable!false> 74 | <#include "common/notice.ftl"> 75 | 76 |
77 | <#if type == "index"> 78 |
79 | <#elseif type == "journals"> 80 |
81 | <#else> 82 |
83 | 84 | <#nested /> 85 |
86 | <#if type == "index"> 87 | <@widget 'right','menuHide' /> 88 | <@widget 'left','menuHide' /> 89 | <#elseif type == "urlNav"> 90 | <@widget 'left','urlNavMenuShow'/> 91 | <#elseif type == "journals"> 92 | <@widget 'right','no' /> 93 | <#elseif type == "categories"> 94 | <@widget 'left','menuHide'/> 95 | <#elseif type == "archives"> 96 | <@widget 'left','menuHide'/> 97 | <#elseif type == "category"> 98 | <@widget 'left','menuHide'/> 99 | <#else> 100 | <@widget 'left','menuShow'/> 101 | 102 |
103 |
104 |
105 | <#include "common/footer.ftl"> 106 | <#include "common/scripts.ftl"> 107 | 108 | <#include "search/local.ftl"> 109 | 110 | 111 | -------------------------------------------------------------------------------- /layout/plugin/animejs.ftl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/plugin/back-to-top.ftl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/plugin/gallery.ftl: -------------------------------------------------------------------------------- 1 | <#if is_post?? || is_sheet??> 2 | 3 | 4 | -------------------------------------------------------------------------------- /layout/plugin/mathjax.ftl: -------------------------------------------------------------------------------- 1 | <#if (is_post?? || is_sheet??) && settings.mathjax_enable!false> 2 | 3 | 25 | -------------------------------------------------------------------------------- /layout/plugin/outdated-browser.ftl: -------------------------------------------------------------------------------- 1 |
2 |
Your browser is out-of-date!
3 |

Update your browser to view this website correctly. Update 4 | my browser now

5 |

×

6 |
7 | -------------------------------------------------------------------------------- /layout/plugin/show-mobile-menu.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /layout/search/local.ftl: -------------------------------------------------------------------------------- 1 | 61 | -------------------------------------------------------------------------------- /layout/share/addtoany.ftl: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /layout/share/bdshare.ftl: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /layout/share/sharejs.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /layout/tag.ftl: -------------------------------------------------------------------------------- 1 | <#include "common/article.ftl"> 2 |
3 |
4 | 10 |
11 |
12 | <#list posts.content as post> 13 | <@article post,'index','null',true /> 14 | 15 | <#if posts.getTotalPages() gt 0> 16 |
17 | 36 |
37 | -------------------------------------------------------------------------------- /layout/tags.ftl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 20 |
21 |
-------------------------------------------------------------------------------- /layout/widget/archive.ftl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 22 |
23 |
-------------------------------------------------------------------------------- /layout/widget/category.ftl: -------------------------------------------------------------------------------- 1 | <#include "../categories.ftl"> -------------------------------------------------------------------------------- /layout/widget/journals.ftl: -------------------------------------------------------------------------------- 1 | <#--日志界面的一项 OK--> 2 | <#if (journals.content)?? && journals.content?size gt 0> 3 | <#list journals.content as journal> 4 |
5 |
6 |
7 |
8 |
9 | 用户头像 10 |
11 |
12 |
13 |

${user.nickname!}

14 |

<@global.timeline datetime=journal.createTime/>

15 |
16 |
17 |
${journal.content}
18 | 38 |
39 |

评论

40 | <#if !journal.disallowComment!false> 41 | 42 | 43 |
44 |
45 |
46 | 47 | <#if journals.getTotalPages() gt 0> 48 |
49 | 68 |
69 | 70 | <#else> 71 | 还没有发布过日志,回主页看看吧 72 | 73 | -------------------------------------------------------------------------------- /layout/widget/links.ftl: -------------------------------------------------------------------------------- 1 | <@linkTag method="listTeams"> 2 | <#if teams?? && teams?size gt 0> 3 |
4 | <#list teams as item> 5 |
6 |

${item.team}

7 | 26 |
27 | 28 |
29 | 30 | -------------------------------------------------------------------------------- /layout/widget/menu_tag.ftl: -------------------------------------------------------------------------------- 1 | <#-- 目录 --> 2 | 14 | <#-- 目录结束 --> -------------------------------------------------------------------------------- /layout/widget/photos.ftl: -------------------------------------------------------------------------------- 1 | <@photoTag method="list"> 2 | <#-- 3 |

${item.team}

4 | 5 | ${photo.id} 6 | ${photo.name} 图片名称 7 | ${photo.description}图片描述信息 8 | ${photo.takeTime}图片上传日期 9 | ${photo.location}图片存储位置 10 | ${photo.thumbnail}图片缩略图地址 11 | ${photo.url}图片链接(访问地址) 12 | ${photo.team} String 图片分组名称 13 | --> 14 |
15 |
16 | <#list photos as photo> 17 |
18 |
19 | 20 | ${photo.name} 21 | 22 |
23 |
24 |
${photo.name}
25 |
${photo.description}
26 |
27 |
28 | 29 |
30 |
31 | 32 | -------------------------------------------------------------------------------- /layout/widget/profile.ftl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 26 | 58 |
59 | 关注我 60 |
61 |
62 | <#if settings.social_github?? && settings.social_github!=''> 63 | 64 | 65 | 66 | 67 | <#if settings.social_qq?? && settings.social_qq!=''> 68 | 69 | 70 | 71 | 72 | <#if settings.social_weibo?? && settings.social_weibo!=''> 73 | 74 | 75 | 76 | 77 | <#if settings.social_twitter?? && settings.social_twitter!=''> 78 | 79 | 80 | 81 | 82 | <#if settings.social_facebook?? && settings.social_facebook!=''> 83 | 84 | 85 | 86 | 87 | <#if settings.social_email?? && settings.social_email!=''> 88 | 89 | 90 | 91 | 92 | <#if settings.social_telegram?? && settings.social_telegram!=''> 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 |
101 |

102 | 103 | 公众号:mumuser 104 | 105 |

106 |

107 | 108 | 企鹅群:932154986 109 | 110 |

111 |
112 |
-------------------------------------------------------------------------------- /layout/widget/recent_comments.ftl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 | <@commentTag method="latest" top="5"> 7 | <#if comments?? && comments.getTotalElements() gt 0> 8 | <#list comments.content as comment> 9 |
10 |
11 |
12 |
13 | ${comment.author!} : ${comment.content!} 14 |
15 |
16 |
17 | 18 | 19 | 20 |
21 |
-------------------------------------------------------------------------------- /layout/widget/recent_posts.ftl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 | <@postTag method="latest" top="5"> 7 | <#list posts as post> 8 | 23 | 24 | 25 |
26 |
-------------------------------------------------------------------------------- /layout/widget/slider.ftl: -------------------------------------------------------------------------------- 1 | <#import "./slider_list.ftl" as slider_list> 2 | <#import "./slider_tag.ftl" as slider_tag> 3 | 4 |
5 |
6 |
7 |
8 |
9 |
    10 | <@slider_list.sliderListMacro/> 11 |
12 |
13 |
14 | <@slider_tag.sliderTagMacro/> 15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /layout/widget/slider_list.ftl: -------------------------------------------------------------------------------- 1 | <#macro sliderListMacro> 2 | <@tagTag method="list"> 3 | <#list tags as tag> 4 | <#if (settings.slider_main_tag!'lunbobiaoqian') == tag.slug > 5 | <@postTag method="listByTagId" tagId="${tag.id}"> 6 | <#list posts as post> 7 |
  • 8 | 9 | ${post.title!} 10 |
    ${post.title!}
    11 |
    12 |
  • 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /layout/widget/slider_tag.ftl: -------------------------------------------------------------------------------- 1 | <#macro sliderTagMacro> 2 | <@tagTag method="list"> 3 | <#list tags as tag> 4 | <#if (settings.slider_right_tag!'lunbofutu') == tag.slug > 5 | <@postTag method="listByTagId" tagId="${tag.id}"> 6 |
    7 |
    8 | <#list posts as post> 9 | 14 | 15 |
    16 |
    17 |
    18 |
    19 | <#list posts as post> 20 | <#-- 0,取第1条 --> 21 | <#if post_index == 0> 22 | 27 | <#-- 1,取第2条 --> 28 | <#elseif post_index == 1> 29 | 34 | 35 | 36 |
    37 |
    38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /layout/widget/tag.ftl: -------------------------------------------------------------------------------- 1 | <#include "../tags.ftl"> -------------------------------------------------------------------------------- /layout/widget/tagcloud.ftl: -------------------------------------------------------------------------------- 1 | <@tagTag method="list"> 2 | <#if tags?? && tags?size gt 0> 3 |
    4 |
    5 | 8 | <#list tags as tag> 9 | ${tag.name!} 10 | 11 |
    12 |
    13 | 14 | -------------------------------------------------------------------------------- /layout/widget/toc.ftl: -------------------------------------------------------------------------------- 1 | <% if (get_config('toc') === true && (post.layout === 'page' || post.layout === 'post')) { 2 | function buildToc(toc) { 3 | let result = ''; 4 | if (toc.hasOwnProperty('id') && toc.hasOwnProperty('index') && toc.hasOwnProperty('text')) { 5 | result += `
  • 6 | 7 | ${toc.index} 8 | ${toc.text} 9 | `; 10 | } 11 | let keys = Object.keys(toc); 12 | keys.indexOf('id') > -1 && keys.splice(keys.indexOf('id'), 1); 13 | keys.indexOf('text') > -1 && keys.splice(keys.indexOf('text'), 1); 14 | keys.indexOf('index') > -1 && keys.splice(keys.indexOf('index'), 1); 15 | keys = keys.map(k => parseInt(k)).sort((a, b) => a - b); 16 | if (keys.length > 0) { 17 | result += ''; 22 | } 23 | if (toc.hasOwnProperty('id') && toc.hasOwnProperty('index') && toc.hasOwnProperty('text')) { 24 | result += '
  • '; 25 | } 26 | return result; 27 | } 28 | %> 29 |
    30 |
    31 | 37 |
    38 |
    39 | <% } %> -------------------------------------------------------------------------------- /layout/widget/url_menu_tag.ftl: -------------------------------------------------------------------------------- 1 | <#-- 目录 --> 2 |
    3 |
    4 | 12 |
    13 |
    14 | <#-- 目录结束 --> -------------------------------------------------------------------------------- /layout/wiki.ftl: -------------------------------------------------------------------------------- 1 | <#macro wiki post,layout,commentType,index> 2 | <#include "./comment/comment.ftl"> 3 |
    4 |
    5 |

    6 | ${post.title!} 7 |

    8 | <#-- 12布局文章内容 --> 9 |
    ${post.formatContent!}
    10 | <#-- 文章的详情页面信息 --> 11 | 18 |
    19 |
    20 | <#if !index> 21 |
    22 |
    23 |

    评论

    24 | <@comment post,"sheet" /> 25 |
    26 |
    27 | 28 | 29 | -------------------------------------------------------------------------------- /links.ftl: -------------------------------------------------------------------------------- 1 | <#include "layout/layout.ftl"> 2 | <#include "layout/common/article.ftl"> 3 | <@layout type="urlNav" title="网址收藏 - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/links"> 4 | <#include "layout/widget/links.ftl"> 5 | -------------------------------------------------------------------------------- /photos.ftl: -------------------------------------------------------------------------------- 1 | <#-- 相册界面 --> 2 | <#include "layout/layout-navbar.ftl"> 3 | <@layout type="photos" title="个人相册 - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/links"> 4 | <#include "layout/widget/photos.ftl"> 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /post.ftl: -------------------------------------------------------------------------------- 1 | <#include "layout/layout.ftl"> 2 | <#include "layout/common/article.ftl"> 3 | <@layout type="no" title="${post.title!} - ${blog_title!}" keywords="${options.seo_keywords!},${tagWords!}" description="${post.summary!}" canonical="${post.fullPath!}"> 4 | <@article post,'page',"post",false /> 5 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/screenshot.png -------------------------------------------------------------------------------- /search.ftl: -------------------------------------------------------------------------------- 1 | <#include "layout/layout.ftl"> 2 | <#include "layout/common/article.ftl"> 3 | <@layout type="no" title="搜索:${keyword} - ${blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${blog_url!}/search?keyword=${keyword}"> 4 | <#list posts.content as post> 5 | <@article post,'index','null',true /> 6 | 7 | <#if posts.getTotalPages() gt 0> 8 |
    9 | 28 |
    29 | 30 | -------------------------------------------------------------------------------- /settings.yaml: -------------------------------------------------------------------------------- 1 | post: 2 | label: 文章设置 3 | items: 4 | share_type: 5 | name: share_type 6 | label: 文章分享组件 7 | type: select 8 | default: '' 9 | options: 10 | - value: '' 11 | label: '无' 12 | - value: addtoany 13 | label: addtoany 14 | - value: bdshare 15 | label: bdshare 16 | - value: sharejs 17 | label: sharejs 18 | donate_alipay: 19 | name: donate_alipay 20 | label: 支付宝捐赠二维码 21 | type: attachment 22 | placeholder: '二维码地址' 23 | donate_wechat: 24 | name: donate_wechat 25 | label: 微信捐赠二维码 26 | type: attachment 27 | placeholder: '二维码地址' 28 | mathjax_enable: 29 | name: mathjax_enable 30 | label: MathJax 31 | type: radio 32 | data-type: bool 33 | default: false 34 | options: 35 | - value: true 36 | label: 开启 37 | - value: false 38 | label: 关闭 39 | code_pretty: 40 | name: code_pretty 41 | label: 文章代码高亮主题 42 | type: select 43 | default: Default 44 | options: 45 | - value: Default 46 | label: Default 47 | - value: Coy 48 | label: Coy 49 | - value: Dark 50 | label: Dark 51 | - value: Okaidia 52 | label: Okaidia 53 | - value: Solarized Light 54 | label: Solarized Light 55 | - value: Tomorrow Night 56 | label: Tomorrow Night 57 | - value: Twilight 58 | label: Twilight 59 | sidebar: 60 | label: 侧边栏 61 | items: 62 | profile_avatar_type: 63 | name: profile_avatar_type 64 | label: 头像形状 65 | type: select 66 | default: 'avatar_rounded' 67 | options: 68 | - value: avatar_rounded 69 | label: '圆形' 70 | - value: avatar_square 71 | label: '方形' 72 | profile_location: 73 | name: profile_location 74 | label: 地理位置 75 | type: text 76 | placeholder: '个人所在地' 77 | profile_follow_url: 78 | name: profile_follow_url 79 | label: 【关注我】按钮地址 80 | type: text 81 | placeholder: '默认为博客地址' 82 | sidebar_profile: 83 | name: sidebar_profile 84 | label: 侧边栏个人资料 85 | type: radio 86 | data-type: bool 87 | default: true 88 | options: 89 | - value: true 90 | label: 开启 91 | - value: false 92 | label: 关闭 93 | sidebar_categories: 94 | name: sidebar_categories 95 | label: 侧边栏分类 96 | type: radio 97 | data-type: bool 98 | default: true 99 | options: 100 | - value: true 101 | label: 开启 102 | - value: false 103 | label: 关闭 104 | sidebar_tagcloud: 105 | name: sidebar_tagcloud 106 | label: 侧边栏标签云 107 | type: radio 108 | data-type: bool 109 | default: true 110 | options: 111 | - value: true 112 | label: 开启 113 | - value: false 114 | label: 关闭 115 | sidebar_links: 116 | name: sidebar_links 117 | label: 侧边栏链接 118 | type: radio 119 | data-type: bool 120 | default: true 121 | options: 122 | - value: true 123 | label: 开启 124 | - value: false 125 | label: 关闭 126 | sidebar_recentpost: 127 | name: sidebar_recentpost 128 | label: 侧边栏最近文章 129 | type: radio 130 | data-type: bool 131 | default: true 132 | options: 133 | - value: true 134 | label: 开启 135 | - value: false 136 | label: 关闭 137 | sidebar_recentcomment: 138 | name: sidebar_recentcomment 139 | label: 侧边栏最近评论 140 | type: radio 141 | data-type: bool 142 | default: false 143 | options: 144 | - value: true 145 | label: 开启 146 | - value: false 147 | label: 关闭 148 | sidebar_tags: 149 | name: sidebar_tags 150 | label: 侧边栏标签 151 | type: radio 152 | data-type: bool 153 | default: true 154 | options: 155 | - value: true 156 | label: 开启 157 | - value: false 158 | label: 关闭 159 | social_github: 160 | name: social_github 161 | label: Github 162 | type: text 163 | placeholder: 'Github 用户名' 164 | social_qq: 165 | name: social_qq 166 | label: QQ 167 | type: text 168 | placeholder: 'QQ 号' 169 | social_weibo: 170 | name: social_weibo 171 | label: 微博 172 | type: text 173 | placeholder: '微博用户名' 174 | social_twitter: 175 | name: social_twitter 176 | label: Twitter 177 | type: text 178 | placeholder: 'Twitter 用户名' 179 | social_facebook: 180 | name: social_facebook 181 | label: Facebook 182 | type: text 183 | placeholder: 'Facebook 用户名' 184 | social_email: 185 | name: social_email 186 | label: Email 187 | type: text 188 | placeholder: '邮箱地址' 189 | social_telegram: 190 | name: social_telegram 191 | label: Telegram 192 | type: text 193 | placeholder: 'Telegram 用户名' 194 | custom_links: 195 | label: 自定义链接 196 | items: 197 | links_top: 198 | name: links_top 199 | label: 顶部链接 200 | type: textarea 201 | default: ' 202 | 203 | ' 204 | links_footer: 205 | name: links_footer 206 | label: 底部链接 207 | type: textarea 208 | default: '

    209 | 210 | 211 | 212 |

    213 |

    214 | 215 | 216 | 217 |

    ' 218 | view_set: 219 | label: 界面配置 220 | items: 221 | slider_enable: 222 | name: notice_enable 223 | label: 轮播开关 224 | type: radio 225 | data-type: bool 226 | default: true 227 | options: 228 | - value: true 229 | label: 开启 230 | - value: false 231 | label: 关闭 232 | slider_main_tag: 233 | name: slider_main_tag 234 | label: 【轮播列表】标签别名 235 | type: text 236 | placeholder: '默认为lunboliebiao' 237 | description: '自定义轮播图显示内容,对应文章标签别名,建议是英文字母' 238 | slider_right_tag: 239 | name: slider_right_tag 240 | label: 【轮播附图】标签别名 241 | type: text 242 | placeholder: '默认为lunbofutu' 243 | description: '自定义右侧图显示内容,对应文章标签别名,建议是英文字母' 244 | advert_enable: 245 | name: advert_enable 246 | label: Banner广告开关 247 | type: radio 248 | data-type: bool 249 | default: false 250 | options: 251 | - value: true 252 | label: 开启 253 | - value: false 254 | label: 关闭 255 | advert_title: 256 | name: advert_title 257 | label: Banner广告标题 258 | type: text 259 | placeholder: '广告标题' 260 | advert_pc_img: 261 | name: advert_pc_img 262 | label: BannerPC端广告图 263 | type: attachment 264 | placeholder: '广告图' 265 | advert_mobile_img: 266 | name: advert_mobile_img 267 | label: Banner移动端广告图 268 | type: attachment 269 | placeholder: '广告图' 270 | advert_href: 271 | name: advert_href 272 | label: Banner广告链接 273 | type: text 274 | placeholder: '广告链接' 275 | default: '#none' 276 | notice_enable: 277 | name: notice_enable 278 | label: 公告开关 279 | type: radio 280 | data-type: bool 281 | default: false 282 | options: 283 | - value: true 284 | label: 开启 285 | - value: false 286 | label: 关闭 287 | notice_info: 288 | name: notice_info 289 | label: 公告信息 290 | type: textarea 291 | placeholder: '请输入公告' -------------------------------------------------------------------------------- /sheet.ftl: -------------------------------------------------------------------------------- 1 | <#include "layout/layout.ftl"> 2 | <#include "layout/common/article.ftl"> 3 | <@layout type="no" title="${sheet.title} - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/s/${sheet.url!}"> 4 | <@article sheet,'page',"sheet",false /> 5 | -------------------------------------------------------------------------------- /sheet_wikis.ftl: -------------------------------------------------------------------------------- 1 | <#include "layout/layout-custom.ftl"> 2 | <#include "layout/wiki.ftl"> 3 | <@layout type="about" title="${post.title!} - ${blog_title!}" keywords="${options.seo_keywords!},${tagWords!}" description="${post.summary!}" canonical="${post.fullPath!}"> 4 | <@wiki post,'page',"post",false /> 5 | 6 | -------------------------------------------------------------------------------- /source/css/back-to-top.css: -------------------------------------------------------------------------------- 1 | #back-to-top { 2 | position: fixed; 3 | padding: 8px 0; 4 | transition: 0.4s ease opacity, 0.4s ease width, 0.4s ease transform, 0.4s ease border-radius; 5 | opacity: 0; 6 | line-height: 24px; 7 | outline: none; 8 | transform: translateY(120px); 9 | } 10 | #back-to-top.fade-in { 11 | opacity: 1; 12 | } 13 | #back-to-top.rise-up { 14 | transform: translateY(0); 15 | } -------------------------------------------------------------------------------- /source/css/bundle.css: -------------------------------------------------------------------------------- 1 | #back-to-top{position:fixed;padding:8px 0;transition:.4s ease opacity,.4s ease width,.4s ease transform,.4s ease border-radius;opacity:0;line-height:24px;outline:0;transform:translateY(120px)}#back-to-top.fade-in{opacity:1}#back-to-top.rise-up{transform:translateY(0)}.ins-section-container{position:relative;background:#f7f7f7}.ins-section{font-size:14px;line-height:16px}.ins-section .ins-search-item,.ins-section .ins-section-header{padding:8px 15px}.ins-section .ins-section-header{color:#9a9a9a;border-bottom:1px solid #e2e2e2}.ins-section .ins-slug{margin-left:5px;color:#9a9a9a}.ins-section .ins-slug:before{content:'('}.ins-section .ins-slug:after{content:')'}.ins-section .ins-search-item .ins-search-preview,.ins-section .ins-search-item header{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ins-section .ins-search-item header .ins-title{margin-left:8px}.ins-section .ins-search-item .ins-search-preview{height:15px;font-size:12px;color:#9a9a9a;margin:5px 0 0 20px}.ins-section .ins-search-item.active,.ins-section .ins-search-item:hover{color:#fff;background:#3273dc}.ins-section .ins-search-item.active .ins-search-preview,.ins-section .ins-search-item.active .ins-slug,.ins-section .ins-search-item:hover .ins-search-preview,.ins-section .ins-search-item:hover .ins-slug{color:#fff}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#3273dc;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px}.searchbox{display:none;perspective:50em;top:0;left:0;width:100%;height:100%;z-index:100;background:rgba(0,0,0,.7);transform-origin:0;perspective-origin:top center}.searchbox.show{display:block}.searchbox,.searchbox .searchbox-container{position:fixed}.searchbox .searchbox-container{overflow:hidden}.searchbox .searchbox-selectable{cursor:pointer}.searchbox .searchbox-input-wrapper{position:relative}.searchbox .searchbox-input-wrapper .searchbox-input{width:100%;border:none;outline:0;font-size:16px;box-shadow:none;font-weight:200;border-radius:0;background:#fff;line-height:20px;box-sizing:border-box;padding:12px 28px 12px 20px;border-bottom:1px solid #e2e2e2}.searchbox .searchbox-input-wrapper .searchbox-close{top:50%;right:6px;width:20px;height:20px;line-height:20px;font-size:16px;margin-top:-11px;position:absolute;text-align:center;display:inline-block}.searchbox .searchbox-input-wrapper .searchbox-close:hover{color:#3273dc}.searchbox .searchbox-result-wrapper{left:0;right:0;top:45px;bottom:0;overflow-y:auto;position:absolute}.searchbox .searchbox-container{left:50%;top:100px;width:540px;z-index:101;bottom:100px;margin-left:-270px;box-sizing:border-box}@media screen and (max-width:559px),screen and (max-height:479px){.searchbox .searchbox-container{top:0;left:0;margin:0;width:100%;height:100%;background:#f7f7f7}} -------------------------------------------------------------------------------- /source/css/insight.css: -------------------------------------------------------------------------------- 1 | .ins-section-container { 2 | position: relative; 3 | background: #f7f7f7; 4 | } 5 | 6 | .ins-section { 7 | font-size: 14px; 8 | line-height: 16px; 9 | } 10 | 11 | .ins-section .ins-section-header, .ins-section .ins-search-item { 12 | padding: 8px 15px; 13 | } 14 | 15 | .ins-section .ins-section-header { 16 | color: #9a9a9a; 17 | border-bottom: 1px solid #e2e2e2; 18 | } 19 | 20 | .ins-section .ins-slug { 21 | margin-left: 5px; 22 | color: #9a9a9a; 23 | } 24 | 25 | .ins-section .ins-slug:before { 26 | content: '('; 27 | } 28 | 29 | .ins-section .ins-slug:after { 30 | content: ')'; 31 | } 32 | 33 | .ins-section .ins-search-item header, .ins-section .ins-search-item .ins-search-preview { 34 | overflow: hidden; 35 | white-space: nowrap; 36 | text-overflow: ellipsis; 37 | } 38 | 39 | .ins-section .ins-search-item header .ins-title { 40 | margin-left: 8px; 41 | } 42 | 43 | .ins-section .ins-search-item .ins-search-preview { 44 | height: 15px; 45 | font-size: 12px; 46 | color: #9a9a9a; 47 | margin: 5px 0 0 20px; 48 | } 49 | 50 | .ins-section .ins-search-item:hover, .ins-section .ins-search-item.active { 51 | color: #fff; 52 | background: #3273dc; 53 | } 54 | 55 | .ins-section .ins-search-item:hover .ins-slug, .ins-section .ins-search-item.active .ins-slug, .ins-section .ins-search-item:hover .ins-search-preview, .ins-section .ins-search-item.active .ins-search-preview { 56 | color: #fff; 57 | } -------------------------------------------------------------------------------- /source/css/progressbar.css: -------------------------------------------------------------------------------- 1 | .pace { 2 | -webkit-pointer-events: none; 3 | pointer-events: none; 4 | 5 | -webkit-user-select: none; 6 | -moz-user-select: none; 7 | user-select: none; 8 | } 9 | 10 | .pace-inactive { 11 | display: none; 12 | } 13 | 14 | .pace .pace-progress { 15 | background: #3273dc; 16 | position: fixed; 17 | z-index: 2000; 18 | top: 0; 19 | right: 100%; 20 | width: 100%; 21 | height: 2px; 22 | } -------------------------------------------------------------------------------- /source/css/search.css: -------------------------------------------------------------------------------- 1 | .searchbox { 2 | display: none; 3 | perspective: 50em; 4 | top: 0; 5 | left: 0; 6 | width: 100%; 7 | height: 100%; 8 | z-index: 100; 9 | background: rgba(0, 0, 0, 0.7); 10 | transform-origin: 0%; 11 | perspective-origin: top center; 12 | } 13 | 14 | .searchbox.show { 15 | display: block; 16 | } 17 | 18 | .searchbox, .searchbox .searchbox-container { 19 | position: fixed; 20 | } 21 | 22 | .searchbox .searchbox-container { 23 | overflow: hidden; 24 | } 25 | 26 | .searchbox .searchbox-selectable { 27 | cursor: pointer; 28 | } 29 | 30 | .searchbox .searchbox-input-wrapper { 31 | position: relative; 32 | } 33 | 34 | .searchbox .searchbox-input-wrapper .searchbox-input { 35 | width: 100%; 36 | border: none; 37 | outline: none; 38 | font-size: 16px; 39 | box-shadow: none; 40 | font-weight: 200; 41 | border-radius: 0; 42 | background: #fff; 43 | line-height: 20px; 44 | box-sizing: border-box; 45 | padding: 12px 28px 12px 20px; 46 | border-bottom: 1px solid #e2e2e2; 47 | } 48 | 49 | .searchbox .searchbox-input-wrapper .searchbox-close { 50 | top: 50%; 51 | right: 6px; 52 | width: 20px; 53 | height: 20px; 54 | line-height: 20px; 55 | font-size: 16px; 56 | margin-top: -11px; 57 | position: absolute; 58 | text-align: center; 59 | display: inline-block; 60 | } 61 | 62 | .searchbox .searchbox-input-wrapper .searchbox-close:hover { 63 | color: #3273dc; 64 | } 65 | 66 | .searchbox .searchbox-result-wrapper { 67 | left: 0; 68 | right: 0; 69 | top: 45px; 70 | bottom: 0; 71 | overflow-y: auto; 72 | position: absolute; 73 | } 74 | 75 | .searchbox .searchbox-container { 76 | left: 50%; 77 | top: 100px; 78 | width: 540px; 79 | z-index: 101; 80 | bottom: 100px; 81 | margin-left: -270px; 82 | box-sizing: border-box; 83 | } 84 | 85 | @media screen and (max-width: 559px), screen and (max-height: 479px) { 86 | .searchbox .searchbox-container { 87 | top: 0; 88 | left: 0; 89 | margin: 0; 90 | width: 100%; 91 | height: 100%; 92 | background: #f7f7f7; 93 | } 94 | } -------------------------------------------------------------------------------- /source/doc/bulma_doc.txt: -------------------------------------------------------------------------------- 1 | 参考博客:[https://www.lisa33xiaoq.net/843.html] 2 | is-hidden-mobile:只在手机隐藏 3 | is-hidden-tablet-only:只在平板隐藏 4 | is-hidden-desktop-only :只在桌面隐藏 5 | is-hidden-touch:手机和平板隐藏,其他宽度显示 -------------------------------------------------------------------------------- /source/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/images/avatar.png -------------------------------------------------------------------------------- /source/images/favicon.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /source/images/logo.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /source/images/og_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/images/og_image.png -------------------------------------------------------------------------------- /source/images/thumbnail.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /source/js/animation.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | function $() { 3 | return Array.prototype.slice.call(document.querySelectorAll.apply(document, arguments)); 4 | } 5 | 6 | $('body > .navbar, body > .section, body > .footer').forEach(function (element) { 7 | element.style.transition = '0s'; 8 | element.style.opacity = '0'; 9 | }); 10 | document.querySelector('body > .navbar').style.transform = 'translateY(-100px)'; 11 | ['.column-main > .card', 12 | '.column-left > .card, .column-right-shadow > .card', 13 | '.column-right > .card'].map(function (selector) { 14 | $(selector).forEach(function (element) { 15 | element.style.transition = '0s'; 16 | element.style.opacity = '0'; 17 | element.style.transform = 'scale(0.8)'; 18 | element.style.transformOrigin = 'center top'; 19 | }); 20 | }); 21 | setTimeout(function () { 22 | $('body > .navbar, body > .section, body > .footer').forEach(function (element) { 23 | element.style.opacity = '1'; 24 | element.style.transition = 'opacity 0.3s ease-out, transform 0.3s ease-out'; 25 | }); 26 | document.querySelector('body > .navbar').style.transform = 'translateY(0)'; 27 | ['.column-main > .card', 28 | '.column-left > .card, .column-right-shadow > .card', 29 | '.column-right > .card'].map(function (selector) { 30 | var i = 1; 31 | $(selector).forEach(function (element) { 32 | setTimeout(function () { 33 | element.style.opacity = '1'; 34 | element.style.transform = ''; 35 | element.style.transition = 'opacity 0.3s ease-out, transform 0.3s ease-out'; 36 | }, i * 100); 37 | i++; 38 | }); 39 | }); 40 | }); 41 | })(); 42 | -------------------------------------------------------------------------------- /source/js/back-to-top.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | var $button = $('#back-to-top'); 3 | var $footer = $('footer.footer'); 4 | var $mainColumn = $('.column-main'); 5 | var $leftSidebar = $('.column-left'); 6 | var $rightSidebar = $('.column-right'); 7 | var lastScrollTop = 0; 8 | var rightMargin = 20; 9 | var bottomMargin = 20; 10 | var lastState = null; 11 | var state = { 12 | base: { 13 | classname: 'card has-text-centered', 14 | left: '', 15 | width: 64, 16 | bottom: bottomMargin, 17 | 'border-radius': 4 18 | } 19 | }; 20 | state['desktop-hidden'] = Object.assign({}, state.base, { 21 | classname: state.base.classname + ' rise-up', 22 | }); 23 | state['desktop-visible'] = Object.assign({}, state['desktop-hidden'], { 24 | classname: state['desktop-hidden'].classname + ' fade-in', 25 | }); 26 | state['desktop-dock'] = Object.assign({}, state['desktop-visible'], { 27 | classname: state['desktop-visible'].classname + ' fade-in', 28 | width: 40, 29 | 'border-radius': '50%' 30 | }); 31 | state['mobile-hidden'] = Object.assign({}, state.base, { 32 | classname: state.base.classname + ' fade-in', 33 | right: rightMargin 34 | }); 35 | state['mobile-visible'] = Object.assign({}, state['mobile-hidden'], { 36 | classname: state['mobile-hidden'].classname + ' rise-up', 37 | }); 38 | 39 | function isStateEquals(prev, next) { 40 | for (var prop in prev) { 41 | if (!next.hasOwnProperty(prop) || next[prop] !== prev[prop]) { 42 | return false; 43 | } 44 | } 45 | for (var prop in next) { 46 | if (!prev.hasOwnProperty(prop) || prev[prop] !== prev[prop]) { 47 | return false; 48 | } 49 | } 50 | return true; 51 | } 52 | 53 | function applyState(state) { 54 | if (lastState !== null && isStateEquals(lastState, state)) { 55 | return; 56 | } 57 | $button.attr('class', state.classname); 58 | for (let prop in state) { 59 | if (prop === 'classname') { 60 | continue; 61 | } 62 | $button.css(prop, state[prop]); 63 | } 64 | lastState = state; 65 | } 66 | 67 | function isDesktop() { 68 | return window.innerWidth >= 1078; 69 | } 70 | 71 | function isTablet() { 72 | return window.innerWidth >= 768 && !isDesktop(); 73 | } 74 | 75 | function isScrollUp() { 76 | return $(window).scrollTop() < lastScrollTop && $(window).scrollTop() > 0; 77 | } 78 | 79 | function hasLeftSidebar() { 80 | return $leftSidebar.length > 0; 81 | } 82 | 83 | function hasRightSidebar() { 84 | return $rightSidebar.length > 0; 85 | } 86 | 87 | function getRightSidebarBottom() { 88 | if (!hasRightSidebar()) { 89 | return 0; 90 | } 91 | return Math.max.apply(null, $rightSidebar.find('.widget').map(function () { 92 | return $(this).offset().top + $(this).outerHeight(true); 93 | })); 94 | } 95 | 96 | function getScrollTop() { 97 | return $(window).scrollTop(); 98 | } 99 | 100 | function getScrollBottom() { 101 | return $(window).scrollTop() + $(window).height(); 102 | } 103 | 104 | function getButtonWidth() { 105 | return $button.outerWidth(true); 106 | } 107 | 108 | function getButtonHeight() { 109 | return $button.outerHeight(true); 110 | } 111 | 112 | function updateScrollTop() { 113 | lastScrollTop = $(window).scrollTop(); 114 | } 115 | 116 | function update() { 117 | // desktop mode or tablet mode with only right sidebar enabled 118 | if (isDesktop() || (isTablet() && !hasLeftSidebar() && hasRightSidebar())) { 119 | var nextState; 120 | var padding = ($mainColumn.outerWidth() - $mainColumn.width()) / 2; 121 | var maxLeft = $(window).width() - getButtonWidth() - rightMargin; 122 | var maxBottom = $footer.offset().top + getButtonHeight() / 2 + bottomMargin; 123 | if (getScrollTop() == 0 || getScrollBottom() < getRightSidebarBottom() + padding + getButtonHeight()) { 124 | nextState = state['desktop-hidden']; 125 | } else if (getScrollBottom() < maxBottom) { 126 | nextState = state['desktop-visible']; 127 | } else { 128 | nextState = Object.assign({}, state['desktop-dock'], { 129 | bottom: getScrollBottom() - maxBottom + bottomMargin 130 | }); 131 | } 132 | 133 | var left = $mainColumn.offset().left + $mainColumn.outerWidth() + padding; 134 | nextState = Object.assign({}, nextState, { 135 | left: Math.min(left, maxLeft) 136 | }); 137 | applyState(nextState); 138 | } else { 139 | // mobile and tablet mode 140 | if (!isScrollUp()) { 141 | applyState(state['mobile-hidden']); 142 | } else { 143 | applyState(state['mobile-visible']); 144 | } 145 | updateScrollTop(); 146 | } 147 | } 148 | 149 | update(); 150 | $(window).resize(update); 151 | $(window).scroll(update); 152 | 153 | $('#back-to-top').on('click', function () { 154 | $('body, html').animate({ scrollTop: 0 }, 400); 155 | }); 156 | }); -------------------------------------------------------------------------------- /source/js/bundle.js: -------------------------------------------------------------------------------- 1 | // main.js 2 | (function($){$('.article img:not(".not-gallery-item")').each(function(){if($(this).parent("a").length===0){$(this).wrap('');if(this.alt){$(this).after('
    '+this.alt+"
    ")}}});if(typeof(moment)==="function"){$(".article-meta time").each(function(){$(this).text(moment($(this).attr("datetime")).fromNow())})}$(".article > .content > table").each(function(){if($(this).width()>$(this).parent().width()){$(this).wrap('
    ')}});function adjustNavbar(){const navbarWidth=$(".navbar-main .navbar-start").outerWidth()+$(".navbar-main .navbar-end").outerWidth();if($(document).outerWidth()');if(typeof(IcarusThemeSettings)!=="undefined"&&typeof(IcarusThemeSettings.article)!=="undefined"&&typeof(IcarusThemeSettings.article.highlight)!=="undefined"){if(typeof(ClipboardJS)!=="undefined"&&IcarusThemeSettings.article.highlight.clipboard){$("figure.highlight").each(function(){var id="code-"+Date.now()+(Math.random()*1000|0);var button='';$(this).attr("id",id);if($(this).find("figcaption").length){$(this).find("figcaption").prepend(button)}else{$(this).prepend("
    "+button+"
    ")}});new ClipboardJS(".highlight .copy")}var fold=IcarusThemeSettings.article.highlight.fold;if(fold.trim()){var button=''+(fold==="unfolded"?'':'')+"";$("figure.highlight").each(function(){if($(this).find("figcaption").length){$(this).find("figcaption").prepend(button)}else{$(this).prepend("
    "+button+"
    ")}});function toggleFold(codeBlock,isFolded){var $toggle=$(codeBlock).find(".fold i");!isFolded?$(codeBlock).removeClass("folded"):$(codeBlock).addClass("folded");!isFolded?$toggle.removeClass("fa-angle-right"):$toggle.removeClass("fa-angle-down");!isFolded?$toggle.addClass("fa-angle-down"):$toggle.addClass("fa-angle-right")}$("figure.highlight").each(function(){toggleFold(this,fold==="folded")});$("figure.highlight figcaption .fold").click(function(){var $code=$(this).closest("figure.highlight");toggleFold($code.eq(0),!$code.hasClass("folded"))})}}var $toc=$("#toc");if($toc.length>0){var $mask=$("
    ");$mask.attr("id","toc-mask");$("body").append($mask);function toggleToc(){$toc.toggleClass("is-active");$mask.toggleClass("is-active")}$toc.on("click",toggleToc);$mask.on("click",toggleToc);$(".navbar-main .catalogue").on("click",toggleToc)}})(jQuery); 3 | 4 | // animation.js 5 | (function(){function $(){return Array.prototype.slice.call(document.querySelectorAll.apply(document,arguments))}$("body > .navbar, body > .section, body > .footer").forEach(function(element){element.style.transition="0s";element.style.opacity="0"});document.querySelector("body > .navbar").style.transform="translateY(-100px)";[".column-main > .card",".column-left > .card, .column-right-shadow > .card",".column-right > .card"].map(function(selector){$(selector).forEach(function(element){element.style.transition="0s";element.style.opacity="0";element.style.transform="scale(0.8)";element.style.transformOrigin="center top"})});setTimeout(function(){$("body > .navbar, body > .section, body > .footer").forEach(function(element){element.style.opacity="1";element.style.transition="opacity 0.3s ease-out, transform 0.3s ease-out"});document.querySelector("body > .navbar").style.transform="translateY(0)";[".column-main > .card",".column-left > .card, .column-right-shadow > .card",".column-right > .card"].map(function(selector){var i=1;$(selector).forEach(function(element){setTimeout(function(){element.style.opacity="1";element.style.transform="";element.style.transition="opacity 0.3s ease-out, transform 0.3s ease-out"},i*100);i++})})})})(); 6 | 7 | // back-to-top.js 8 | $(document).ready(function(){var $button=$('#back-to-top');var $footer=$('footer.footer');var $mainColumn=$('.column-main');var $leftSidebar=$('.column-left');var $rightSidebar=$('.column-right');var lastScrollTop=0;var rightMargin=20;var bottomMargin=20;var lastState=null;var state={base:{classname:'card has-text-centered',left:'',width:64,bottom:bottomMargin,'border-radius':4}};state['desktop-hidden']=Object.assign({},state.base,{classname:state.base.classname+' rise-up',});state['desktop-visible']=Object.assign({},state['desktop-hidden'],{classname:state['desktop-hidden'].classname+' fade-in',});state['desktop-dock']=Object.assign({},state['desktop-visible'],{classname:state['desktop-visible'].classname+' fade-in',width:40,'border-radius':'50%'});state['mobile-hidden']=Object.assign({},state.base,{classname:state.base.classname+' fade-in',right:rightMargin});state['mobile-visible']=Object.assign({},state['mobile-hidden'],{classname:state['mobile-hidden'].classname+' rise-up',});function isStateEquals(prev,next){for(var prop in prev){if(!next.hasOwnProperty(prop)||next[prop]!==prev[prop]){return false}}for(var prop in next){if(!prev.hasOwnProperty(prop)||prev[prop]!==prev[prop]){return false}}return true}function applyState(state){if(lastState!==null&&isStateEquals(lastState,state)){return}$button.attr('class',state.classname);for(let prop in state){if(prop==='classname'){continue}$button.css(prop,state[prop])}lastState=state}function isDesktop(){return window.innerWidth>=1078}function isTablet(){return window.innerWidth>=768&&!isDesktop()}function isScrollUp(){return $(window).scrollTop()0}function hasLeftSidebar(){return $leftSidebar.length>0}function hasRightSidebar(){return $rightSidebar.length>0}function getRightSidebarBottom(){if(!hasRightSidebar()){return 0}return Math.max.apply(null,$rightSidebar.find('.widget').map(function(){return $(this).offset().top+$(this).outerHeight(true)}))}function getScrollTop(){return $(window).scrollTop()}function getScrollBottom(){return $(window).scrollTop()+$(window).height()}function getButtonWidth(){return $button.outerWidth(true)}function getButtonHeight(){return $button.outerHeight(true)}function updateScrollTop(){lastScrollTop=$(window).scrollTop()}function update(){if(isDesktop()||(isTablet()&&!hasLeftSidebar()&&hasRightSidebar())){var nextState;var padding=($mainColumn.outerWidth()-$mainColumn.width())/2;var maxLeft=$(window).width()-getButtonWidth()-rightMargin;var maxBottom=$footer.offset().top+getButtonHeight()/2+bottomMargin;if(getScrollTop()==0||getScrollBottom() p > .gallery-item').length){$('.justified-gallery > p > .gallery-item').unwrap()}$('.justified-gallery').justifiedGallery()}}); -------------------------------------------------------------------------------- /source/js/common.js: -------------------------------------------------------------------------------- 1 | var url = location.href; 2 | var urlstatus = false; 3 | $(".navbar-start a").each(function() { 4 | if ((url + '/').indexOf($(this).attr('href')) > -1 && $(this).attr('href') != '/') { 5 | $(this).addClass('is-active'); 6 | urlstatus = true; 7 | } else { 8 | $(this).removeClass('is-active'); 9 | } 10 | }); 11 | if (!urlstatus) { 12 | $(".navbar-start a").eq(0).addClass('is-active'); 13 | } 14 | 15 | /** 16 | * 移动端导航栏 OK 17 | */ 18 | document.addEventListener('DOMContentLoaded', () => { 19 | // Get all "navbar-burger" elements 20 | const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0); 21 | // Check if there are any navbar burgers 22 | if ($navbarBurgers.length > 0) { 23 | // Add a click event on each of them 24 | $navbarBurgers.forEach(el => { 25 | el.addEventListener('click', () => { 26 | // Get the target from the "data-target" attribute 27 | const target = el.dataset.target; 28 | const $target = document.getElementById(target); 29 | // Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu" 30 | el.classList.toggle('is-active'); 31 | $target.classList.toggle('is-active'); 32 | }); 33 | }); 34 | } 35 | }); 36 | 37 | /** 38 | * 个人信息模块右侧滑出效果 39 | */ 40 | function filtration_click() { 41 | if (!this.show) { 42 | $('#sq_drawer').css('right', 0); 43 | } else { 44 | $('#sq_drawer').css('right', '-200px'); 45 | } 46 | } 47 | 48 | function close_user_info() { 49 | var position = $('#sq_drawer').css('right'); 50 | if (position === "0px") { 51 | $('#sq_drawer').css('right', '-200px'); 52 | } 53 | } 54 | 55 | /** 56 | * 文章界面的所有操作 57 | * |-生成目录 58 | * |-在代码的右上角显示代码的格式 59 | * |-剪切板功能 60 | * |-手机端目录 61 | * Status: OK 62 | */ 63 | $(function() { 64 | 65 | /** 66 | * 生成文章的目录 67 | * @param from 从哪里寻找目录 68 | * @param to 添加目录到哪里 69 | * @param marginSpace 不同等级的标题错开多少距离 70 | * @param success 成功后调用的方法 71 | */ 72 | let generateCatalogs = (marginSpace) => { 73 | // 获取所有的标题 74 | let titles = $('.content h1[id],h2[id],h3[id],h4[id],h5[id],h6[id]'); 75 | // 得到标题数字的最小数字,用来计算每个标题的margin-left间距,例如["h2", "h3"]则返回2 76 | let minTitleNumber = Math.min.apply(null, [...new Set(titles.get().map(value => value.tagName[1]))]); 77 | // 如果没有title的话返回0 78 | minTitleNumber = minTitleNumber === Infinity ? 0 : minTitleNumber; 79 | minTitleNumber && (() => { 80 | // 开始生成目录 81 | titles.each(function() { 82 | // 得到标题等级,用来做margin-left处理 83 | let titleLevel = parseInt($(this).prop("tagName")[1]) - minTitleNumber; 84 | $("#catalogBox").append( 85 | '

    ' + $(this).text() + '

    ' 87 | ); 88 | }); 89 | // 为目录中每个链接添加一个点击事件 90 | $("#catalogBox .catalog-item a[data-catalog-target]").on("click", function() { 91 | let title = $(this).attr("data-catalog-target"); 92 | let offsetTop = $('#' + title).offset().top - 20; 93 | $("html,body").animate({ 94 | scrollTop: offsetTop 95 | }, 300); 96 | }); 97 | })(); 98 | }; 99 | 100 | 101 | // 生成文章的目录 102 | generateCatalogs(1.125); 103 | 104 | // 固定目录 105 | $(function() { 106 | $(window).scroll(function() { 107 | //获取垂直滚动的距离 108 | var scrollTop = $(document).scrollTop(); 109 | if (scrollTop >= 445) { 110 | var wdh = $("#menu-box").width(); 111 | $("#menu-box").css("width", wdh); 112 | $("#menu-box").addClass("menu-fixed"); 113 | } else { 114 | $("#menu-box").removeClass("menu-fixed"); 115 | } 116 | }); 117 | }); 118 | 119 | 120 | /** 121 | * 处理手机端目录 122 | */ 123 | // 目录按钮 124 | $("#show-mobile-menu").on("click", function () { 125 | $('#menu-box').addClass('is-show-mobile-menu').removeClass('is-hidden-mobile'); 126 | $('.menu-content').css('max-height','88vh'); 127 | $("#menu-box").animate({right: "0"}, 300); 128 | $("#catalog-over-box").show(); 129 | return false; 130 | }); 131 | 132 | // 判断为手机才执行手机端目录效果 133 | if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { 134 | // 目录中的链接 135 | $("[data-catalog-target]").on("click", function () { 136 | $("#menu-box").css({right: "-70%"}); 137 | $("#catalog-over-box").hide(); 138 | }); 139 | } 140 | // 点击目录后的蒙版 141 | $("#catalog-over-box").click('on', function () { 142 | $("#menu-box").animate({right: "-70%"}, 300, () => { 143 | $(this).hide(); 144 | }); 145 | return false; 146 | }); 147 | 148 | }); 149 | 150 | 151 | 152 | 153 | /** 154 | * =============================================================================== 155 | * 网址导航界面的目录 156 | * =============================================================================== 157 | */ 158 | $(function() { 159 | /** 160 | * 网址导航的目录 161 | * @param from 从哪里寻找目录 162 | * @param to 添加目录到哪里 163 | * @param marginSpace 不同等级的标题错开多少距离 164 | * @param success 成功后调用的方法 165 | */ 166 | let generateUrlNavCatalogs = (marginSpace) => { 167 | // 获取所有的标题 168 | let titles = $('#url-show-list h2[id]'); 169 | // 得到标题数字的最小数字,用来计算每个标题的margin-left间距,例如["h2", "h3"]则返回2 170 | let minTitleNumber = Math.min.apply(null, [...new Set(titles.get().map(value => value.tagName[1]))]); 171 | // 如果没有title的话返回0 172 | minTitleNumber = minTitleNumber === Infinity ? 0 : minTitleNumber; 173 | minTitleNumber && (() => { 174 | // 开始生成目录 175 | titles.each(function() { 176 | // 得到标题等级,用来做margin-left处理 177 | let titleLevel = parseInt($(this).prop("tagName")[1]) - minTitleNumber; 178 | $("#urlNavBox").append( 179 | '

    ' + $(this).text() + '

    ' 181 | ); 182 | }); 183 | // 为目录中每个链接添加一个点击事件 184 | $("#urlNavBox .catalog-item a[data-catalog-target]").on("click", function() { 185 | let title = $(this).attr("data-catalog-target"); 186 | let offsetTop = $('#' + title).offset().top - 20; 187 | $("html,body").animate({ 188 | scrollTop: offsetTop 189 | }, 300); 190 | }); 191 | })(); 192 | }; 193 | 194 | generateUrlNavCatalogs(1.125); 195 | 196 | // 固定目录 197 | $(function() { 198 | $(window).scroll(function() { 199 | //获取垂直滚动的距离 200 | var scrollTop = $(document).scrollTop(); 201 | if (scrollTop >= 87) { 202 | var wdh = $("#url-nav-menu-box").width(); 203 | $("#url-nav-menu-box").css("width", wdh); 204 | $("#url-nav-menu-box").addClass("menu-fixed"); 205 | $("#url-nav-menu-box").css("margin-top", "1.5rem"); 206 | } else { 207 | $("#url-nav-menu-box").removeClass("menu-fixed"); 208 | $("#url-nav-menu-box").css("margin-top", "0rem"); 209 | } 210 | }); 211 | }); 212 | 213 | /** 214 | * 处理手机端目录 215 | */ 216 | // 目录按钮 217 | $("#show-mobile-menu").on("click", function () { 218 | $('#url-nav-menu-box').addClass('is-show-mobile-menu').removeClass('is-hidden-mobile'); 219 | $('.menu-content').css('max-height','88vh'); 220 | $("#url-nav-menu-box").animate({right: "0"}, 300); 221 | $("#catalog-over-box").show(); 222 | return false; 223 | }); 224 | 225 | // 判断为手机才执行手机端目录效果 226 | if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { 227 | // 目录中的链接 228 | $("[data-catalog-target]").on("click", function () { 229 | $("#url-nav-menu-box").css({right: "-70%"}); 230 | $("#catalog-over-box").hide(); 231 | }); 232 | } 233 | // 点击目录后的蒙版 234 | $("#catalog-over-box").click('on', function () { 235 | $("#url-nav-menu-box").animate({right: "-70%"}, 300, () => { 236 | $(this).hide(); 237 | }); 238 | return false; 239 | }); 240 | }); 241 | 242 | 243 | /*** 244 | * 首页轮播图slider 245 | **/ 246 | $(function() { 247 | $("#hwslider").hwSlider({ 248 | autoPlay: true, 249 | arrShow: true, 250 | dotShow: true, 251 | touch: true 252 | }); 253 | }); 254 | 255 | /*** 256 | * 点击显示评论 257 | **/ 258 | $(".comment-btn").click(function(){ 259 | var that = $(this); 260 | var ele = that.parents(".card-content").children('.journals-comment'); 261 | ele.is(':hidden') ? that.find('span').text('收起评论') : that.find('span').text('评论'); 262 | ele.slideToggle(); 263 | 264 | 265 | }); 266 | 267 | /*** 268 | * 关闭广告 269 | **/ 270 | $(".close-btn").click(function(){ 271 | var that = $(this); 272 | var ele = that.parents(".banner-advert"); 273 | ele.slideUp(); 274 | }); 275 | /*** 276 | * 延时开启广告 277 | **/ 278 | function lazyAdvert(){ 279 | setTimeout(function(){ 280 | $(".banner-advert").slideDown('slow'); 281 | },1000); 282 | } 283 | lazyAdvert(); 284 | -------------------------------------------------------------------------------- /source/js/gallery.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', function () { 2 | if (typeof ($.fn.lightGallery) === 'function') { 3 | $('.article').lightGallery({ selector: '.gallery-item' }); 4 | } 5 | if (typeof ($.fn.justifiedGallery) === 'function') { 6 | if ($('.justified-gallery > p > .gallery-item').length) { 7 | $('.justified-gallery > p > .gallery-item').unwrap(); 8 | } 9 | $('.justified-gallery').justifiedGallery(); 10 | } 11 | }); -------------------------------------------------------------------------------- /source/js/main.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | $('.article img:not(".not-gallery-item")').each(function () { 3 | // wrap images with link and add caption if possible 4 | if ($(this).parent('a').length === 0) { 5 | $(this).wrap(''); 6 | if (this.alt) { 7 | alert(1); 8 | // $(this).after('
    ' + this.alt + '
    '); 9 | } 10 | } 11 | }); 12 | 13 | if (typeof (moment) === 'function') { 14 | $('.article-meta time').each(function () { 15 | $(this).text(moment($(this).attr('datetime')).fromNow()); 16 | }); 17 | } 18 | 19 | $('.article > .content > table').each(function () { 20 | if ($(this).width() > $(this).parent().width()) { 21 | $(this).wrap('
    '); 22 | } 23 | }); 24 | 25 | function adjustNavbar() { 26 | const navbarWidth = $('.navbar-main .navbar-start').outerWidth() + $('.navbar-main .navbar-end').outerWidth(); 27 | if ($(document).outerWidth() < navbarWidth) { 28 | $('.navbar-main .navbar-menu').addClass('is-flex-start'); 29 | } else { 30 | $('.navbar-main .navbar-menu').removeClass('is-flex-start'); 31 | } 32 | } 33 | adjustNavbar(); 34 | $(window).resize(adjustNavbar); 35 | 36 | $('figure.highlight table').wrap('
    '); 37 | if (typeof (IcarusThemeSettings) !== 'undefined' && 38 | typeof (IcarusThemeSettings.article) !== 'undefined' && 39 | typeof (IcarusThemeSettings.article.highlight) !== 'undefined') { 40 | if (typeof (ClipboardJS) !== 'undefined' && IcarusThemeSettings.article.highlight.clipboard) { 41 | $('figure.highlight').each(function () { 42 | var id = 'code-' + Date.now() + (Math.random() * 1000 | 0); 43 | var button = ''; 44 | $(this).attr('id', id); 45 | if ($(this).find('figcaption').length) { 46 | $(this).find('figcaption').prepend(button); 47 | } else { 48 | $(this).prepend('
    ' + button + '
    '); 49 | } 50 | }); 51 | new ClipboardJS('.highlight .copy'); 52 | } 53 | var fold = IcarusThemeSettings.article.highlight.fold; 54 | if (fold.trim()) { 55 | var button = '' + (fold === 'unfolded' ? '' : '') + ''; 56 | $('figure.highlight').each(function () { 57 | if ($(this).find('figcaption').length) { 58 | $(this).find('figcaption').prepend(button); 59 | } else { 60 | $(this).prepend('
    ' + button + '
    '); 61 | } 62 | }); 63 | 64 | function toggleFold(codeBlock, isFolded) { 65 | var $toggle = $(codeBlock).find('.fold i'); 66 | !isFolded ? $(codeBlock).removeClass('folded') : $(codeBlock).addClass('folded'); 67 | !isFolded ? $toggle.removeClass('fa-angle-right') : $toggle.removeClass('fa-angle-down'); 68 | !isFolded ? $toggle.addClass('fa-angle-down') : $toggle.addClass('fa-angle-right'); 69 | } 70 | 71 | $('figure.highlight').each(function () { 72 | toggleFold(this, fold === 'folded'); 73 | }); 74 | $('figure.highlight figcaption .fold').click(function () { 75 | var $code = $(this).closest('figure.highlight'); 76 | toggleFold($code.eq(0), !$code.hasClass('folded')); 77 | }); 78 | } 79 | } 80 | 81 | var $toc = $('#toc'); 82 | if ($toc.length > 0) { 83 | var $mask = $('
    '); 84 | $mask.attr('id', 'toc-mask'); 85 | 86 | $('body').append($mask); 87 | 88 | function toggleToc() { 89 | $toc.toggleClass('is-active'); 90 | $mask.toggleClass('is-active'); 91 | } 92 | 93 | $toc.on('click', toggleToc); 94 | $mask.on('click', toggleToc); 95 | $('.navbar-main .catalogue').on('click', toggleToc); 96 | } 97 | })(jQuery); 98 | -------------------------------------------------------------------------------- /source/lib/hwslider/css/hwslider.css: -------------------------------------------------------------------------------- 1 | .hwslider { 2 | width: 100%; 3 | /*height: auto ;*/ 4 | height: 12.5rem; 5 | min-width: 280px; 6 | min-height: 160px; 7 | position: relative; 8 | overflow: hidden 9 | } 10 | 11 | .hwslider ul { 12 | width: 100%; 13 | height: 100%; 14 | position: absolute; 15 | z-index: 1 16 | } 17 | 18 | .hwslider ul li { 19 | display: none; 20 | position: absolute; 21 | left: 0; 22 | top: 0; 23 | width: 100%; 24 | height: 100%; 25 | overflow: hidden 26 | } 27 | 28 | .hwslider ul li.active { 29 | display: block 30 | } 31 | 32 | .hwslider ul li img { 33 | width: 100%; 34 | max-width: 100%; 35 | min-height: 200px; 36 | display: block 37 | } 38 | 39 | .dots { 40 | position: absolute; 41 | bottom: 4%; 42 | left: 5%; 43 | min-width: 60px; 44 | height: 7px; 45 | z-index: 2 46 | } 47 | 48 | .dots span { 49 | float: left; 50 | width: 7px; 51 | height: 7px; 52 | margin-right: 8px; 53 | cursor: pointer; 54 | background-color: rgba(255,255,255,0.7); 55 | border: 0; 56 | border-radius: 3px; 57 | -webkit-transition: width .4s ease-in; 58 | transition: width .4s ease-in; 59 | } 60 | 61 | .dots span.active { 62 | margin-right: 8px; 63 | width: 30px; 64 | height: 7px; 65 | } 66 | 67 | .arr { 68 | /* display: none; */ 69 | position: absolute; 70 | top: 0px; 71 | bottom: 0px; 72 | z-index: 2; 73 | width: 40px; 74 | height: 100%; 75 | text-align: center; 76 | font-size: 36px; 77 | color: #fff; 78 | text-decoration: none; 79 | display: flex; 80 | justify-content: center; 81 | align-items: center; 82 | opacity: 0; 83 | /* 属性 花费时间 曲线 何时开始*/ 84 | transition: all 0.5s ease-in 0s; 85 | } 86 | 87 | .hwslider:hover .arr { 88 | text-decoration: none; 89 | color: #fff; 90 | display: flex; 91 | align-items: center; 92 | justify-content: center; 93 | opacity: 0.7; 94 | } 95 | .arr svg{ 96 | fill: #fff; 97 | width: 14px; 98 | height: 20px; 99 | } 100 | .prev { 101 | left: 0; 102 | background-image: linear-gradient(to right, rgb(0, 0, 0), transparent); 103 | } 104 | 105 | .next { 106 | right: 0; 107 | background-image: linear-gradient(to left, rgb(0, 0, 0), transparent); 108 | } 109 | .intro { 110 | position: absolute; 111 | left: 4.8%; 112 | bottom: 9%; 113 | width: 85%; 114 | min-width: 240px; 115 | z-index: 2; 116 | color: #fff; 117 | font-size: 1.4rem; 118 | font-weight:600; 119 | line-height: 1.6rem; 120 | overflow:hidden;  121 | text-overflow: ellipsis; 122 | display: -webkit-box; 123 | -webkit-box-orient: vertical; 124 | -webkit-line-clamp: 1; 125 | } 126 | -------------------------------------------------------------------------------- /source/lib/hwslider/index.1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | hwSlider支持手机app触屏滑动 7 | 8 | 9 | 10 | 11 | 22 | 23 | 24 |
    25 |
    26 |
    27 |
      28 |
    • 这是一个内容滑动切换效果,支持触控滑动,响应式滑块。

    • 29 |
    • 30 |
    • hwSlider.js

    • 31 |
    32 |
    33 |
    34 |
    35 |
    36 |
      37 |
    • hwSlider.js

    • 38 |
    • 39 |
      $("#otherhwSlider").hwSlider({
      40 | 	width: 500,
      41 | 	height: 200
      42 | });
      43 |
    • 44 |
    45 |
    46 |
    47 |
    48 | 49 | 50 | 51 | 52 | 69 | -------------------------------------------------------------------------------- /source/lib/hwslider/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | hwSlider支持手机app触屏滑动 6 | 7 | 15 | 16 | 17 |
    18 |
    19 |
      20 |
    • 21 | 22 |
      23 | 这是一个内容滑动切换是一个内容滑动切换是一个内容滑动切换效果,支持触控滑动,响应式滑块。 24 |
      25 |
    • 26 |
    • 27 | 28 |
      29 | 这是一个内容滑动切换效果,支持触控滑动,响应式滑块。 30 |
      31 |
    • 32 |
    33 |
    34 |
    35 | 36 | 37 | 38 | 39 | 49 | -------------------------------------------------------------------------------- /source/lib/hwslider/js/jquery.hwSlider.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * hwSlider内容滑动切换插件 - v1.0 3 | * by 月光光 4 | */ 5 | ; 6 | (function($, window, document, undefined) { 7 | var HwSlider = function(ele, opt) { 8 | var self = this; 9 | self.$element = ele, self.defaults = { 10 | width: 600, 11 | height: 200, 12 | start: 1, 13 | speed: 400, 14 | interval: 3000, 15 | autoPlay: false, 16 | dotShow: true, 17 | arrShow: true, 18 | touch: true, 19 | afterSlider: function() {} 20 | }, self.clickable = true, self.options = $.extend({}, self.defaults, opt) 21 | }; 22 | HwSlider.prototype = { 23 | init: function() { 24 | var self = this, 25 | ele = self.$element; 26 | var sliderInder = ele.children("ul"); 27 | var hwsliderLi = sliderInder.children("li"); 28 | var hwsliderSize = hwsliderLi.length; 29 | var index = self.options.start; 30 | var touchStartY = 0, 31 | touchStartX = 0; 32 | if (self.options.arrShow) { 33 | var arrElement = ''; 34 | ele.append(arrElement) 35 | } 36 | for (i = 1; i <= hwsliderSize; i++) { 37 | if (index == i) { 38 | hwsliderLi.eq(index - 1).addClass("active") 39 | } 40 | } 41 | if (self.options.dotShow) { 42 | var dot = ""; 43 | for (i = 1; i <= hwsliderSize; i++) { 44 | if (index == i) { 45 | dot += '' 46 | } else { 47 | dot += '' 48 | } 49 | } 50 | var dotElement = '
    ' + dot + "
    "; 51 | ele.append(dotElement) 52 | } 53 | var resize = function() { 54 | var sWidth = ele.width(); 55 | var sHeight = self.options.height / self.options.width * sWidth; 56 | // alert(sHeight); 57 | // ele.css("height", sHeight); 58 | if (self.options.arrShow) { 59 | // var arrOffset = (sHeight - 40) / 2; 60 | // ele.find(".arr").css("top", arrOffset + "px") 61 | ele.find(".arr").css("top","0px") 62 | } 63 | if (self.options.dotShow) { 64 | // var dotWidth = hwsliderSize * 20; 65 | // var dotOffset = (sWidth - dotWidth) / 20; 66 | // ele.find(".dots").css("left", dotOffset + "px") 67 | // ele.find(".dots").css("left", "5%") 68 | } 69 | }; 70 | ele.css("height", self.options.height); 71 | resize(); 72 | $(window).resize(function() { 73 | resize() 74 | }); 75 | if (self.options.arrShow) { 76 | ele.find(".next").on("click", function(event) { 77 | event.preventDefault(); 78 | if (self.clickable) { 79 | if (index >= hwsliderSize) { 80 | index = 1 81 | } else { 82 | index += 1 83 | } 84 | self.moveTo(index, "next") 85 | } 86 | }); 87 | ele.find(".prev").on("click", function(event) { 88 | event.preventDefault(); 89 | if (self.clickable) { 90 | if (index == 1) { 91 | index = hwsliderSize 92 | } else { 93 | index -= 1 94 | } 95 | self.moveTo(index, "prev") 96 | } 97 | }) 98 | } 99 | if (self.options.dotShow) { 100 | ele.find(".dots span").on("click", function(event) { 101 | event.preventDefault(); 102 | if (self.clickable) { 103 | var dotIndex = $(this).data("index"); 104 | if (dotIndex > index) { 105 | dir = "next" 106 | } else { 107 | dir = "prev" 108 | } 109 | if (dotIndex != index) { 110 | index = dotIndex; 111 | self.moveTo(index, dir) 112 | } 113 | } 114 | }) 115 | } 116 | if (self.options.autoPlay) { 117 | var timer; 118 | var play = function() { 119 | index++; 120 | if (index > hwsliderSize) { 121 | index = 1 122 | } 123 | self.moveTo(index, "next") 124 | }; 125 | timer = setInterval(play, self.options.interval); 126 | ele.hover(function() { 127 | timer = clearInterval(timer) 128 | }, function() { 129 | timer = setInterval(play, self.options.interval) 130 | }) 131 | } 132 | if (self.options.touch) { 133 | hwsliderLi.on({ 134 | touchstart: function(e) { 135 | touchStartY = e.originalEvent.touches[0].clientY; 136 | touchStartX = e.originalEvent.touches[0].clientX 137 | }, 138 | touchend: function(e) { 139 | var touchEndY = e.originalEvent.changedTouches[0].clientY, 140 | touchEndX = e.originalEvent.changedTouches[0].clientX, 141 | yDiff = touchStartY - touchEndY, 142 | xDiff = touchStartX - touchEndX; 143 | if (Math.abs(xDiff) > Math.abs(yDiff)) { 144 | if (xDiff > 5) { 145 | if (index >= hwsliderSize) { 146 | index = 1 147 | } else { 148 | index += 1 149 | } 150 | self.moveTo(index, "next") 151 | } else { 152 | if (index == 1) { 153 | index = hwsliderSize 154 | } else { 155 | index -= 1 156 | } 157 | self.moveTo(index, "prev") 158 | } 159 | } 160 | touchStartY = null; 161 | touchStartX = null 162 | }, 163 | touchmove: function(e) { 164 | if (e.preventDefault) { 165 | e.preventDefault() 166 | } 167 | } 168 | }) 169 | } 170 | }, 171 | moveTo: function(index, dir) { 172 | var self = this, 173 | ele = self.$element; 174 | var clickable = self.clickable; 175 | var dots = ele.find(".dots span"); 176 | var sliderInder = ele.children("ul"); 177 | var hwsliderLi = sliderInder.children("li"); 178 | if (clickable) { 179 | self.clickable = false; 180 | var offset = ele.width(); 181 | if (dir == "prev") { 182 | offset = -1 * offset 183 | } 184 | sliderInder.children(".active").stop().animate({ 185 | left: -offset 186 | }, self.options.speed, function() { 187 | $(this).removeClass("active") 188 | }); 189 | hwsliderLi.eq(index - 1).css("left", offset + "px").addClass("active").stop().animate({ 190 | left: 0 191 | }, self.options.speed, function() { 192 | self.clickable = true 193 | }); 194 | self.options.afterSlider.call(self); 195 | dots.removeClass("active"); 196 | dots.eq(index - 1).addClass("active") 197 | } else { 198 | return false 199 | } 200 | } 201 | }; 202 | $.fn.hwSlider = function(options) { 203 | var hwSlider = new HwSlider(this, options); 204 | return this.each(function() { 205 | hwSlider.init() 206 | }) 207 | } 208 | })(jQuery, window, document); 209 | -------------------------------------------------------------------------------- /source/lib/hydrogen/css/magnific-popup.css: -------------------------------------------------------------------------------- 1 | .mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:0!important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;display:block;outline:0;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:.65;filter:alpha(opacity=65);padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Arial,Baskerville,monospace}.mfp-close:hover,.mfp-close:focus{opacity:1;filter:alpha(opacity=100)}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#333}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:.65;filter:alpha(opacity=65);margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1;filter:alpha(opacity=100)}.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after,.mfp-arrow .mfp-a{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before,.mfp-arrow .mfp-b{border-top-width:21px;border-bottom-width:21px;opacity:.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after,.mfp-arrow-left .mfp-a{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before,.mfp-arrow-left .mfp-b{margin-left:25px;border-right:27px solid #3f3f3f}.mfp-arrow-right{right:0}.mfp-arrow-right:after,.mfp-arrow-right .mfp-a{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before,.mfp-arrow-right .mfp-b{border-left:27px solid #3f3f3f}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}@media all and (max-width:900px){.mfp-arrow{-webkit-transform:scale(.75);transform:scale(.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0} -------------------------------------------------------------------------------- /source/lib/hydrogen/css/salvattore.css: -------------------------------------------------------------------------------- 1 | .column{float:left}@media screen and (max-width:480px){.column{float:none;position:relative;clear:both}}.size-1of4{width:25%}.size-1of3{width:33.333%}.size-1of2{width:50%}#fh5co-board[data-columns]::before{content:'4 .column.size-1of4'}@media screen and (max-width:450px){#fh5co-board[data-columns]::before{content:'1 .column'}}@media screen and (min-width:451px) and (max-width:700px){#fh5co-board[data-columns]::before{content:'2 .column.size-1of2'}}@media screen and (min-width:701px) and (max-width:850px){#fh5co-board[data-columns]::before{content:'3 .column.size-1of3'}}@media screen and (min-width:851px){#fh5co-board[data-columns]::before{content:'4 .column.size-1of4'}} -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_1.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_10.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_11.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_12.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_13.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_14.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_15.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_16.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_17.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_18.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_19.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_2.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_20.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_21.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_22.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_23.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_24.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_25.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_26.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_27.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_28.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_29.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_3.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_30.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_4.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_5.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_6.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_7.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_8.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/images/img_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-liem/weicarus/cb4bfc512f0a95d82714670a0272185f80c36b59/source/lib/hydrogen/images/img_9.jpg -------------------------------------------------------------------------------- /source/lib/hydrogen/js/bootstrap-3.3.4.js: -------------------------------------------------------------------------------- 1 | document.write("