first commit
commit
3b6e150df7
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 PPOffice
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
|
@ -0,0 +1,16 @@
|
||||||
|
<h1><a href="https://github.com/halo-dev/halo-theme-icarus" target="_blank">halo-theme-icarus</a></h1>
|
||||||
|
|
||||||
|
## 说明
|
||||||
|
|
||||||
|
该主题的原作者为 [ppoffice](https://github.com/ppoffice),非常感谢做出这么优秀的主题。
|
||||||
|
|
||||||
|
原主题地址:[https://github.com/ppoffice/hexo-theme-icarus](https://github.com/ppoffice/hexo-theme-icarus)
|
||||||
|
|
||||||
|
## 预览截图
|
||||||
|
|
||||||
|
![screenshot.png](https://i.loli.net/2019/08/24/qAZXw6Eo54PbQJ7.png)
|
||||||
|
![settings.png](https://i.loli.net/2019/08/24/7K6m3VZApyfhUqF.png)
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
1. 克隆或者[下载](https://github.com/halo-dev/halo-theme-icarus/releases)。
|
||||||
|
2. 压缩为 zip 压缩包之后在后台的主题设置直接上传即可使用。
|
|
@ -0,0 +1,34 @@
|
||||||
|
<#include "layout/layout.ftl">
|
||||||
|
<#include "layout/common/article.ftl">
|
||||||
|
<@layout title="归档 - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/archives">
|
||||||
|
<@postTag method="archiveYear">
|
||||||
|
<#list archives as archive>
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<h3 class="tag is-link">
|
||||||
|
${archive.year?c}
|
||||||
|
</h3>
|
||||||
|
<div class="timeline">
|
||||||
|
<#list archive.posts as post>
|
||||||
|
<article class="media">
|
||||||
|
<#if post.thumbnail?? && post.thumbnail!=''>
|
||||||
|
<a href="${post.thumbnail}" class="media-left">
|
||||||
|
<p class="image is-64x64">
|
||||||
|
<img class="thumbnail" src="${context!}/archives/${post.url!}" alt="${post.title!}">
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<div class="media-content">
|
||||||
|
<div class="content">
|
||||||
|
<time class="has-text-grey is-size-7 is-block is-uppercase" datetime="${post.createTime!}">${post.createTime?string["EEE MMM d"]}</time>
|
||||||
|
<a href="${context!}/archives/${post.url!}" class="title has-link-black-ter is-size-6 has-text-weight-normal">${post.title!}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</#list>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#list>
|
||||||
|
</@postTag>
|
||||||
|
</@layout>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<#include "layout/layout.ftl">
|
||||||
|
<#include "layout/common/article.ftl">
|
||||||
|
<@layout title="分类 - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/categories">
|
||||||
|
<#include "layout/categories.ftl">
|
||||||
|
</@layout>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<#include "layout/layout.ftl">
|
||||||
|
<#include "layout/common/article.ftl">
|
||||||
|
<@layout title="分类:${category.name!} - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/categories/${category.slugName!}">
|
||||||
|
<#include "layout/category.ftl">
|
||||||
|
</@layout>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<#include "layout/layout.ftl">
|
||||||
|
<#include "layout/common/article.ftl">
|
||||||
|
<@layout title="${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}">
|
||||||
|
<#list posts.content as post>
|
||||||
|
<#if post.topPriority != 1>
|
||||||
|
<@article post,'index','null',true />
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
<#if posts.getTotalPages() gt 0>
|
||||||
|
<div class="card card-transparent">
|
||||||
|
<nav class="pagination is-centered" role="navigation" aria-label="pagination">
|
||||||
|
<div class="pagination-previous<#if posts.number gt 0><#else > is-invisible is-hidden-mobile</#if>">
|
||||||
|
<#if posts.number == 1>
|
||||||
|
<a class="is-flex-grow has-text-black-ter" href="${context!}">上一页</a>
|
||||||
|
<#else>
|
||||||
|
<a class="is-flex-grow has-text-black-ter" href="${context!}/page/${posts.number}">上一页</a>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
<div class="pagination-next<#if posts.getTotalPages() gt posts.number+1><#else > is-invisible is-hidden-mobile</#if>">
|
||||||
|
<a class="is-flex-grow has-text-black-ter" href="${context!}/page/${posts.number+2}">下一页</a>
|
||||||
|
</div>
|
||||||
|
<ul class="pagination-list is-hidden-mobile">
|
||||||
|
<#list rainbow as r>
|
||||||
|
<#if r == posts.number+1>
|
||||||
|
<li><a class="pagination-link is-current" href="${context!}/page/${posts.number+1}">${posts.number+1}</a></li>
|
||||||
|
<#else>
|
||||||
|
<li><a class="pagination-link has-text-black-ter" href="${context!}/page/${r}">${r}</a></li>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</@layout>
|
|
@ -0,0 +1,25 @@
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="menu">
|
||||||
|
<h3 class="menu-label">
|
||||||
|
分类
|
||||||
|
</h3>
|
||||||
|
<ul class="menu-list">
|
||||||
|
<@categoryTag method="list">
|
||||||
|
<#list categories as category>
|
||||||
|
<li>
|
||||||
|
<a class="level is-marginless" href="${context!}/categories/${category.slugName!}">
|
||||||
|
<span class="level-start">
|
||||||
|
<span class="level-item">${category.name}</span>
|
||||||
|
</span>
|
||||||
|
<span class="level-end">
|
||||||
|
<span class="level-item tag">${category.postCount}</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</#list>
|
||||||
|
</@categoryTag>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,55 @@
|
||||||
|
<#if settings.nav_enable!false>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-content">
|
||||||
|
<nav class="breadcrumb" aria-label="breadcrumbs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="${context!}/categories">分类></a></li>
|
||||||
|
<li class="is-active"><a href="#" aria-current="page">${category.name}</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
<#if posts.content?size gt 0>
|
||||||
|
<#list posts.content as post>
|
||||||
|
<@article post,'index','null',true />
|
||||||
|
</#list>
|
||||||
|
<#if posts.getTotalPages() gt 0>
|
||||||
|
<div class="card card-transparent">
|
||||||
|
<nav class="pagination is-centered" role="navigation" aria-label="pagination">
|
||||||
|
<div class="pagination-previous<#if posts.number gt 0><#else > is-invisible is-hidden-mobile</#if>">
|
||||||
|
<#if posts.number == 1>
|
||||||
|
<a class="is-flex-grow has-text-black-ter"
|
||||||
|
href="${context!}/categories/${category.slugName!}">上一页</a>
|
||||||
|
<#else>
|
||||||
|
<a class="is-flex-grow has-text-black-ter"
|
||||||
|
href="${context!}/categories/${category.slugName!}/page/${posts.number}">上一页</a>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
<div class="pagination-next<#if posts.getTotalPages() gt posts.number+1><#else > is-invisible is-hidden-mobile</#if>">
|
||||||
|
<a class="is-flex-grow has-text-black-ter"
|
||||||
|
href="${context!}/categories/${category.slugName!}/page/${posts.number+2}">下一页</a>
|
||||||
|
</div>
|
||||||
|
<ul class="pagination-list is-hidden-mobile">
|
||||||
|
<#list rainbow as r>
|
||||||
|
<#if r == posts.number+1>
|
||||||
|
<li><a class="pagination-link is-current"
|
||||||
|
href="${context!}/categories/${category.slugName!}/page/${posts.number+1}">${posts.number+1}</a>
|
||||||
|
</li>
|
||||||
|
<#else>
|
||||||
|
<li><a class="pagination-link has-text-black-ter"
|
||||||
|
href="${context!}/categories/${category.slugName!}/page/${r}">${r}</a></li>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
<#else>
|
||||||
|
<div class="level">
|
||||||
|
<div class="level-item has-text-centered">
|
||||||
|
空空如也
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</#if>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<#macro comment post,type>
|
||||||
|
<#if !post.disallowComment!false>
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js"></script>
|
||||||
|
<script src="${options.comment_internal_plugin_js!'//cdn.jsdelivr.net/gh/halo-dev/halo-comment@latest/dist/halo-comment.min.js'}"></script>
|
||||||
|
<halo-comment id="${post.id}" type="${type}"/>
|
||||||
|
</#if>
|
||||||
|
</#macro>
|
|
@ -0,0 +1,154 @@
|
||||||
|
<#macro article post,layout,commentType,index>
|
||||||
|
<#include "../comment/comment.ftl">
|
||||||
|
<#-- <div class="card" <#if is_post??><#else>style="margin-left: 10px;"</#if>>-->
|
||||||
|
<div class="card">
|
||||||
|
<#if is_post?? || is_page?? || is_sheet??>
|
||||||
|
<#else >
|
||||||
|
<#if post.thumbnail?? && post.thumbnail!=''>
|
||||||
|
<div class="card-image">
|
||||||
|
<#if index>
|
||||||
|
<a href="${context!}/archives/${post.url!}">
|
||||||
|
<img class="thumbnail" src="${post.thumbnail!}" alt="${post.title!}">
|
||||||
|
</a>
|
||||||
|
<#else>
|
||||||
|
<span class="image is-7by1">
|
||||||
|
<img class="thumbnail" src="${post.thumbnail!}" alt="${post.title!}">
|
||||||
|
</span>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
<div class="card-content article " style="width: 100%">
|
||||||
|
<div class="level article-meta is-size-7 is-uppercase is-mobile is-overflow-x-auto">
|
||||||
|
<div class="level-left">
|
||||||
|
<time class="level-item has-text-grey"
|
||||||
|
datetime="${post.createTime!}">${post.createTime?string["EEE MMM d"]}</time>
|
||||||
|
<#if index>
|
||||||
|
<#if post.categories?? && post.categories?size gt 0>
|
||||||
|
<div class="level-item">
|
||||||
|
<#list post.categories as category>
|
||||||
|
<a class="has-link-grey -link"
|
||||||
|
href="${context!}/categories/${category.slugName!}">${category.name!}</a>
|
||||||
|
</#list>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
<#else>
|
||||||
|
<#if categories?? && categories?size gt 0>
|
||||||
|
<div class="level-item">
|
||||||
|
<#list categories as category>
|
||||||
|
<a class="has-link-grey -link"
|
||||||
|
href="${context!}/categories/${category.slugName!}">${category.name!}</a>
|
||||||
|
</#list>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<#if is_post??>
|
||||||
|
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
|
||||||
|
<#if index>
|
||||||
|
<a class="has-link-black-ter" href="${context!}/archives/${post.url!}">${post.title!}</a>
|
||||||
|
<#else>
|
||||||
|
${post.title!}
|
||||||
|
</#if>
|
||||||
|
</h1>
|
||||||
|
<#else>
|
||||||
|
<h1 class="title is-size-5 is-size-4-mobile has-text-weight-normal">
|
||||||
|
<#if index>
|
||||||
|
<a class="has-link-black-ter" href="${context!}/archives/${post.url!}">${post.title!}</a>
|
||||||
|
<#else>
|
||||||
|
${post.title!}
|
||||||
|
</#if>
|
||||||
|
</h1>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="content <#if is_post?? || is_sheet??>post-article<#else>is-hidden-touch</#if>">
|
||||||
|
<#if index && post.summary?? && post.summary!=''>
|
||||||
|
${post.summary!}
|
||||||
|
<#else>
|
||||||
|
${post.formatContent!}
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
<#if !index && tags?? && (tags?size gt 0)>
|
||||||
|
<div class="level is-size-7 is-uppercase">
|
||||||
|
<div class="level-start">
|
||||||
|
<div class="level-item">
|
||||||
|
<span class="is-size-6 has-text-grey has-mr-7">#</span>
|
||||||
|
<#list tags as tag>
|
||||||
|
<a class="has-link-grey -link"
|
||||||
|
href="${context!}/tags/${tag.slugName!}">${tag.name!}</a>
|
||||||
|
</#list>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
<#if index && post.summary?? && post.summary!=''>
|
||||||
|
<div class="level is-mobile">
|
||||||
|
<div class="level-start">
|
||||||
|
<div class="level-item">
|
||||||
|
<a class="button is-size-7 is-light" href="${context!}/archives/${post.url!}#more">阅读更多</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<#if !index??>
|
||||||
|
<#if (settings.donate_alipay?? && settings.donate_alipay!='') || (settings.donate_wechat?? && settings.donate_wechat!='')>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-content">
|
||||||
|
<h3 class="menu-label has-text-centered">喜欢这篇文章?打赏一下作者吧</h3>
|
||||||
|
<div class="buttons is-centered">
|
||||||
|
<#if settings.donate_alipay?? && settings.donate_alipay!=''>
|
||||||
|
<#include "../donate/alipay.ftl">
|
||||||
|
</#if>
|
||||||
|
<#if settings.donate_wechat?? && settings.donate_wechat!=''>
|
||||||
|
<#include "../donate/wechat.ftl">
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#if !index && nextPost?? && prePost??>
|
||||||
|
<div class="card card-transparent">
|
||||||
|
<div class="level post-navigation is-flex-wrap is-mobile">
|
||||||
|
<#if prePost??>
|
||||||
|
<div class="level-start">
|
||||||
|
<a class="level level-item has-link-grey article-nav-prev"
|
||||||
|
href="${context!}/archives/${prePost.url}">
|
||||||
|
<i class="level-item fas fa-chevron-left"></i>
|
||||||
|
<span class="level-item">${prePost.title!}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
<#if nextPost??>
|
||||||
|
<div class="level-end">
|
||||||
|
<a class="level level-item has-link-grey article-nav-next"
|
||||||
|
href="${context!}/archives/${nextPost.url}">
|
||||||
|
<span class="level-item">${nextPost.title!}</span>
|
||||||
|
<i class="level-item fas fa-chevron-right"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#if !index>
|
||||||
|
<div class="card" id="comment-wrapper">
|
||||||
|
<div class="card-content">
|
||||||
|
<h3 class="title is-5 has-text-weight-normal">评论</h3>
|
||||||
|
<#if commentType == 'post'>
|
||||||
|
<@comment post,"post" />
|
||||||
|
<#else>
|
||||||
|
<@comment post,"sheet" />
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</#macro>
|
|
@ -0,0 +1,28 @@
|
||||||
|
<footer class="footer">
|
||||||
|
<div class="container">
|
||||||
|
<div class="level">
|
||||||
|
<div class="level-start has-text-centered-mobile">
|
||||||
|
<#-- <a class="footer-logo is-block has-mb-6" href="${context!}">-->
|
||||||
|
<#-- <#if options.blog_logo?? && options.blog_logo!=''>-->
|
||||||
|
<#-- <img src="${options.blog_logo!}" alt="${options.blog_title!}" height="28">-->
|
||||||
|
<#-- <#else>-->
|
||||||
|
<#-- ${options.blog_title!}-->
|
||||||
|
<#-- </#if>-->
|
||||||
|
<#-- </a>-->
|
||||||
|
<p class="is-size-6">
|
||||||
|
© ${.now?string('yyyy')} ${user.nickname!}
|
||||||
|
Powered by <a href="https://halo.run/" target="_blank">Halo</a>
|
||||||
|
<br>
|
||||||
|
Theme <a href="#">Fantastic</a> by <a href="https://github.com/imkundev" target="_blank">Quinn</a>
|
||||||
|
<br />
|
||||||
|
<@global.footer />
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="level-end">
|
||||||
|
<div class="field has-addons is-flex-center-mobile has-mt-5-mobile is-flex-wrap is-flex-middle">
|
||||||
|
${settings.links_footer!}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
|
@ -0,0 +1,47 @@
|
||||||
|
<#macro module name>
|
||||||
|
<#if name == 'share'>
|
||||||
|
<div class="column is-4-tablet is-1-desktop <#if is_sheet??>is-hidden-desktop</#if> is-1-widescreen is-1-fullhd has-order-1 column-left is-hidden-touch <%= sticky_class(left) %>">
|
||||||
|
<div class="level">
|
||||||
|
<#-- <a href="#" style="display: block;background: #fff6;width: 30px;height: 30px;border-radius:50px;line-height: 30px;text-align: center;box-shadow: 0 2px 4px 0 rgba(0,0,0,.04);color: #333">-->
|
||||||
|
<#-- <i class="fas fa-eye"></i>-->
|
||||||
|
<#-- </a>-->
|
||||||
|
</div>
|
||||||
|
<div class="level"></div>
|
||||||
|
<div class="level"></div>
|
||||||
|
<div class="level">
|
||||||
|
<#if settings.share_type?? && settings.share_type!=''>
|
||||||
|
<#include "../share/${settings.share_type}.ftl">
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
<#if name == 'slider'>
|
||||||
|
<div class="blog-slider">
|
||||||
|
<div class="blog-slider__wrp swiper-wrapper">
|
||||||
|
<#list posts.content as post>
|
||||||
|
<#if post.topPriority == 1>
|
||||||
|
<div class="blog-slider__item swiper-slide">
|
||||||
|
<div class="blog-slider__img">
|
||||||
|
<a href="${context!}/archives/${post.url!}">
|
||||||
|
<img src="${post.thumbnail!}"
|
||||||
|
alt="${post.title!}">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="blog-slider__content">
|
||||||
|
<span class="blog-slider__code">${post.createTime?string["EEE MMM d"]}</span>
|
||||||
|
<div class="blog-slider__title title is-5">${post.title!}</div>
|
||||||
|
<div class="blog-slider__text">${post.summary!}</div>
|
||||||
|
<a href="${context!}/archives/${post.url!}" class="blog-slider__button">阅读更多</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</div>
|
||||||
|
<div class="blog-slider__pagination"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- partial -->
|
||||||
|
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>
|
||||||
|
<script src='https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.5/js/swiper.min.js'></script>
|
||||||
|
</#if>
|
||||||
|
</#macro>
|
|
@ -0,0 +1,77 @@
|
||||||
|
<#macro navbar layout>
|
||||||
|
<nav class="navbar navbar-main">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-brand is-flex-center">
|
||||||
|
<a class="navbar-item navbar-logo" href="${context!}">
|
||||||
|
<#if options.blog_logo?? && options.blog_logo!=''>
|
||||||
|
<img src="${options.blog_logo!}" alt="${options.blog_title!}" height="28">
|
||||||
|
<#else>
|
||||||
|
${options.blog_title!}
|
||||||
|
</#if>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="navbar-menu">
|
||||||
|
<@menuTag method="tree">
|
||||||
|
<#if menus?? && menus?size gt 0>
|
||||||
|
<#if settings.tree_menu_enable!false>
|
||||||
|
<div class="navbar-start">
|
||||||
|
<#list menus?sort_by('priority') as menu>
|
||||||
|
<#if menu.children?? && menu.children?size gt 0>
|
||||||
|
<div class="navbar-item has-dropdown is-hoverable">
|
||||||
|
<a class="sub-menu" href="${menu.url!}">
|
||||||
|
${menu.name!}
|
||||||
|
</a>
|
||||||
|
<div class="navbar-dropdown is-boxed">
|
||||||
|
<#list menu.children as child>
|
||||||
|
<a class="navbar-item"
|
||||||
|
href="${child.url!}">
|
||||||
|
${child.name!}
|
||||||
|
</a>
|
||||||
|
</#list>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<#else>
|
||||||
|
<a class="navbar-item" href="javascript:void(0)">
|
||||||
|
target="${menu.target!}">${menu.name}</a>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</div>
|
||||||
|
<#else>
|
||||||
|
<#if menus?? && menus?size gt 0>
|
||||||
|
<div class="navbar-start">
|
||||||
|
<#list menus?sort_by('priority') as menu>
|
||||||
|
<a class="navbar-item" href="${menu.url}" target="${menu.target!}">${menu.name}</a>
|
||||||
|
</#list>
|
||||||
|
</div>
|
||||||
|
</#if> </#if>
|
||||||
|
</#if>
|
||||||
|
</@menuTag>
|
||||||
|
<div class="navbar-end">
|
||||||
|
<#-- ${settings.links_top!}-->
|
||||||
|
<a class="navbar-item search" title="夜间模式" href="javascript:alert('开发中,敬请期待');">
|
||||||
|
<i class="fas fa-adjust"></i>
|
||||||
|
</a>
|
||||||
|
<a class="navbar-item search" title="文章搜索" onclick="openSearchPanel()" href="javascript:;">
|
||||||
|
<i class="fas fa-search"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<style>
|
||||||
|
.navbar-dropdown {
|
||||||
|
/*background-color: #fff;*/
|
||||||
|
/*border-bottom-left-radius: 6px;*/
|
||||||
|
/*border-bottom-right-radius: 6px;*/
|
||||||
|
/*border-top: 2px solid #dbdbdb;*/
|
||||||
|
/*box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);*/
|
||||||
|
/*font-size: .875rem;*/
|
||||||
|
/*min-width: 100%;*/
|
||||||
|
/*position: absolute;*/
|
||||||
|
/*top: 100%;*/
|
||||||
|
/*z-index: 20;*/
|
||||||
|
/*width: 120px;*/
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</#macro>
|
|
@ -0,0 +1,28 @@
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js"></script>
|
||||||
|
|
||||||
|
<#include "../plugin/gallery.ftl">
|
||||||
|
<#include "../plugin/outdated-browser.ftl">
|
||||||
|
<#include "../plugin/mathjax.ftl">
|
||||||
|
<#include "../plugin/back-to-top.ftl">
|
||||||
|
|
||||||
|
|
||||||
|
<script src="${static!}/source/js/bundle.js"></script>
|
||||||
|
<#if is_index??>
|
||||||
|
<script src="${static!}/source/js/widget_pin.js"></script>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var url = location.href;
|
||||||
|
var urlstatus = false;
|
||||||
|
$(".navbar-start a").each(function () {
|
||||||
|
if ((url + '/').indexOf($(this).attr('href')) > -1 && $(this).attr('href') != '/') {
|
||||||
|
$(this).addClass('is-active');
|
||||||
|
urlstatus = true;
|
||||||
|
} else {
|
||||||
|
$(this).removeClass('is-active');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!urlstatus) {
|
||||||
|
$(".navbar-start a").eq(0).addClass('is-active');
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,56 @@
|
||||||
|
<#macro widget position>
|
||||||
|
<#if is_post?? || is_sheet?? >
|
||||||
|
<div class="column is-4-tablet is-3-desktop is-3-widescreen is-3-fullhd <#if position=='right'>is-hidden-touch </#if> <#if position == 'left'>has-order-1<#else>has-order-3</#if> column-${position} <%= sticky_class(position) %>">
|
||||||
|
<#elseif is_index??>
|
||||||
|
<div class="column is-4-tablet is-4-desktop <#if position=='right'>is-hidden-touch is-hidden-desktop-only is-4-widescreen is-4-fullhd <#else>is-3-widescreen</#if> <#if position == 'left'>has-order-1<#else>has-order-3</#if> column-${position} <%= sticky_class(position) %>">
|
||||||
|
<#else >
|
||||||
|
<div class="column is-4-tablet is-4-desktop is-3-widescreen is-3-fullhd <#if position=='right'>is-hidden-touch is-hidden-desktop-only</#if> <#if position == 'left'>has-order-1<#else>has-order-3</#if> column-${position} <%= sticky_class(position) %>">
|
||||||
|
</#if>
|
||||||
|
<#if position == 'left'>
|
||||||
|
<#if settings.sidebar_profile!true>
|
||||||
|
<#include "../widget/profile.ftl">
|
||||||
|
</#if>
|
||||||
|
<#if settings.sidebar_categories!true>
|
||||||
|
<#include "../widget/category.ftl">
|
||||||
|
</#if>
|
||||||
|
<#if settings.sidebar_tagcloud!true>
|
||||||
|
<#include "../widget/tagcloud.ftl">
|
||||||
|
</#if>
|
||||||
|
<#if settings.sidebar_links!true>
|
||||||
|
<#include "../widget/links.ftl">
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
<#if position == 'right'>
|
||||||
|
<#if post??>
|
||||||
|
<#include "../widget/cate_posts.ftl">
|
||||||
|
<#include "../widget/tag_posts.ftl">
|
||||||
|
<#else>
|
||||||
|
<#if settings.sidebar_recentpost!true>
|
||||||
|
<#include "../widget/recent_posts.ftl">
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
<#if settings.sidebar_recentcomment!true>
|
||||||
|
<#include "../widget/recent_comments.ftl">
|
||||||
|
</#if>
|
||||||
|
<#-- <#include "../widget/archive.ftl">-->
|
||||||
|
<#if settings.sidebar_tags!true>
|
||||||
|
<#include "../widget/tag.ftl">
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
</#if>
|
||||||
|
<#if position == 'left'>
|
||||||
|
<div class="column-right-shadow is-hidden-widescreen is-6-fullhd ">
|
||||||
|
<#if settings.sidebar_recentpost!true>
|
||||||
|
<#include "../widget/recent_posts.ftl">
|
||||||
|
</#if>
|
||||||
|
<#if settings.sidebar_recentcomment!true>
|
||||||
|
<#include "../widget/recent_comments.ftl">
|
||||||
|
</#if>
|
||||||
|
<#-- <#include "../widget/archive.ftl">-->
|
||||||
|
<#if settings.sidebar_tags!true>
|
||||||
|
<#include "../widget/tag.ftl">
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
</#macro>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<div class="blog-slider">
|
||||||
|
<div class="blog-slider__wrp swiper-wrapper">
|
||||||
|
<div class="blog-slider__item swiper-slide">
|
||||||
|
<div class="blog-slider__img">
|
||||||
|
<img src="https://res.cloudinary.com/muhammederdem/image/upload/v1535759872/kuldar-kalvik-799168-unsplash.jpg" alt="">
|
||||||
|
</div>
|
||||||
|
<div class="blog-slider__content">
|
||||||
|
<span class="blog-slider__code">26 December 2019</span>
|
||||||
|
<div class="blog-slider__title">Lorem Ipsum Dolor</div>
|
||||||
|
<div class="blog-slider__text">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Recusandae voluptate repellendus magni illo ea animi? </div>
|
||||||
|
<a href="#" class="blog-slider__button">READ MORE</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="blog-slider__pagination"></div>
|
||||||
|
</div>
|
||||||
|
<!-- partial -->
|
||||||
|
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>
|
||||||
|
<script src='https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.5/js/swiper.min.js'></script>
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
<a class="button is-info donate">
|
||||||
|
<span class="icon is-small">
|
||||||
|
<i class="fab fa-alipay"></i>
|
||||||
|
</span>
|
||||||
|
<span>支付宝捐赠</span>
|
||||||
|
<div class="qrcode"><img src="${settings.donate_alipay!}" alt="支付宝捐赠"></div>
|
||||||
|
</a>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<a class="button is-success donate">
|
||||||
|
<span class="icon is-small">
|
||||||
|
<i class="fab fa-weixin"></i>
|
||||||
|
</span>
|
||||||
|
<span>微信捐赠</span>
|
||||||
|
<div class="qrcode"><img src="${settings.donate_wechat!}" alt="微信捐赠"></div>
|
||||||
|
</a>
|
|
@ -0,0 +1,144 @@
|
||||||
|
<#macro layout title,keywords,description,canonical>
|
||||||
|
<#include "common/navbar.ftl">
|
||||||
|
<#include "common/widget.ftl">
|
||||||
|
<#include "common/module.ftl">
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
|
||||||
|
<title>${title!}</title>
|
||||||
|
|
||||||
|
<meta name="keywords" content="${keywords!}"/>
|
||||||
|
<meta name="description" content="${description!}">
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="${title!}">
|
||||||
|
<meta property="og:url" content="${canonical}">
|
||||||
|
<meta property="og:site_name" content="${title!}">
|
||||||
|
<meta property="og:description" content="${description!}">
|
||||||
|
<meta property="og:locale" content="zh">
|
||||||
|
<meta property="og:image" content="${user.avatar!}">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="twitter:title" content="${title!}">
|
||||||
|
<meta name="twitter:description" content="${description!}">
|
||||||
|
<meta name="twitter:image" content="${user.avatar!}">
|
||||||
|
|
||||||
|
<link rel="canonical" href="${canonical!}"/>
|
||||||
|
|
||||||
|
<link rel="alternative" href="${context!}/atom.xml" title="${options.blog_title!}" type="application/atom+xml">
|
||||||
|
|
||||||
|
<@global.head />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/bulma@0.7.5/css/bulma.min.css">
|
||||||
|
<link rel="stylesheet" href="//use.fontawesome.com/releases/v5.4.1/css/all.css">
|
||||||
|
<#-- <link rel="stylesheet" href="//fonts.proxy.ustclug.org/css?family=Ubuntu:400,600|Source+Code+Pro">-->
|
||||||
|
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/highlight.js@9.12.0/styles/atom-one-light.css">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body > .footer,
|
||||||
|
body > .navbar,
|
||||||
|
body > .section {
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<#if is_post?? || is_sheet??>
|
||||||
|
<style>
|
||||||
|
.content code .number {
|
||||||
|
background-color: transparent;
|
||||||
|
border-radius: 0;
|
||||||
|
display: unset;
|
||||||
|
font-size: .85em;
|
||||||
|
margin-right: 0;
|
||||||
|
padding: 0;
|
||||||
|
vertical-align: unset;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#if is_post?? || is_sheet??>
|
||||||
|
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/lightgallery@1.6.8/dist/css/lightgallery.min.css">
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="//cdn.jsdelivr.net/npm/justifiedGallery@3.7.0/dist/css/justifiedGallery.min.css">
|
||||||
|
</#if>
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="//cdn.jsdelivr.net/npm/outdatedbrowser@1.1.5/outdatedbrowser/outdatedbrowser.min.css">
|
||||||
|
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/pace-js@1.0.2/pace.min.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="${static!}/source/css/style.css">
|
||||||
|
<link rel="stylesheet" href="${static!}/source/css/bundle.css">
|
||||||
|
<link rel="stylesheet" href="${static!}/source/css/back-to-top.css">
|
||||||
|
|
||||||
|
<#if post??>
|
||||||
|
<link rel="stylesheet" type="text/css"
|
||||||
|
href="${static!}/source/lib/prism/css/prism-${settings.code_pretty!'Default'}.css"/>
|
||||||
|
<script type="text/javascript" src="${static!}/source/lib/prism/js/prism.js"></script>
|
||||||
|
</#if>
|
||||||
|
<#if is_index??>
|
||||||
|
<link rel="stylesheet" href="${static!}/source/css/widget_pin.css">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.5/css/swiper.min.css">
|
||||||
|
</#if>
|
||||||
|
</head>
|
||||||
|
<body class="is-3-column">
|
||||||
|
<@navbar 'page' />
|
||||||
|
<section class="section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="columns">
|
||||||
|
<#if post?? >
|
||||||
|
<#if settings.share_type !=''>
|
||||||
|
<@module 'share' />
|
||||||
|
</#if>
|
||||||
|
<div class="column is-8-tablet <#if is_sheet?? || settings.share_type != ''>is-9-desktop<#else>is--desktop</#if> is-8-widescreen is-8-fullhd has-order-2 column-main">
|
||||||
|
<#nested />
|
||||||
|
</div>
|
||||||
|
<@widget 'right' />
|
||||||
|
<#else >
|
||||||
|
<#if is_index??>
|
||||||
|
<div class="column is-8-tablet is-8-desktop is-9-widescreen is-9-fullhd has-order-2 column-main"
|
||||||
|
style="margin-left: 10px">
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column is-12-tablet is-12-desktop is-12-widescreen has-order-2 column-main">
|
||||||
|
<#-- 判断是否已经有置顶文章-->
|
||||||
|
<#list posts.content as post>
|
||||||
|
<#if post.topPriority == 1>
|
||||||
|
<#assign isTop = 'yes'>
|
||||||
|
<#break>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
<#if isTop??>
|
||||||
|
<div class="level">
|
||||||
|
<#-- <#include "./common/widget_pin.ftl">-->
|
||||||
|
<@module 'slider' />
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
<div class="level">
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column is-8-tablet is-12-desktop is-8-widescreen is-8-fullhd has-order-2 column-main">
|
||||||
|
<#nested />
|
||||||
|
</div>
|
||||||
|
<@widget 'right' />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<@widget 'left' />
|
||||||
|
<#else>
|
||||||
|
<div class="column is-8-tablet is-8-desktop is-6-widescreen is-6-fullhd has-order-2 column-main">
|
||||||
|
<#nested />
|
||||||
|
</div>
|
||||||
|
<@widget 'left' />
|
||||||
|
<@widget 'right' />
|
||||||
|
</#if>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<#include "common/footer.ftl">
|
||||||
|
<#include "common/scripts.ftl">
|
||||||
|
<#include "search/local.ftl">
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</#macro>
|
|
@ -0,0 +1 @@
|
||||||
|
<script src="${static!}/source/js/animation.js"></script>
|
|
@ -0,0 +1 @@
|
||||||
|
<a id="back-to-top" title="返回顶部" href="javascript:;"><i class="fas fa-chevron-up"></i></a>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<#if is_post?? || is_sheet??>
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/lightgallery@1.6.8/dist/js/lightgallery.min.js" defer></script>
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/justifiedGallery@3.7.0/dist/js/jquery.justifiedGallery.min.js" defer></script>
|
||||||
|
</#if>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<#if (is_post?? || is_sheet??) && settings.mathjax_enable!false>
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/mathjax@2.7.5/unpacked/MathJax.js?config=TeX-MML-AM_CHTML" defer></script>
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
MathJax.Hub.Config({
|
||||||
|
'HTML-CSS': {
|
||||||
|
matchFontHeight: false
|
||||||
|
},
|
||||||
|
SVG: {
|
||||||
|
matchFontHeight: false
|
||||||
|
},
|
||||||
|
CommonHTML: {
|
||||||
|
matchFontHeight: false
|
||||||
|
},
|
||||||
|
tex2jax: {
|
||||||
|
inlineMath: [
|
||||||
|
['$','$'],
|
||||||
|
['\\(','\\)']
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</#if>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<div id="outdated">
|
||||||
|
<h6>Your browser is out-of-date!</h6>
|
||||||
|
<p>Update your browser to view this website correctly. <a id="btnUpdateBrowser" href="http://outdatedbrowser.com/">Update
|
||||||
|
my browser now </a></p>
|
||||||
|
<p class="last"><a href="#" id="btnCloseUpdateBrowser" title="Close">×</a></p>
|
||||||
|
</div>
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/outdatedbrowser@1.1.5/outdatedbrowser/outdatedbrowser.min.js" defer>
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
outdatedBrowser({
|
||||||
|
bgColor: '#f25648',
|
||||||
|
color: '#ffffff',
|
||||||
|
lowerThan: 'flex'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -0,0 +1,81 @@
|
||||||
|
<div class="searchbox ins-search">
|
||||||
|
<div class="searchbox-container ins-search-container">
|
||||||
|
<div class="searchbox-input-wrapper">
|
||||||
|
<form method="get" action="/search">
|
||||||
|
<input type="text" class="searchbox-input ins-search-input" name="keyword" placeholder="请输入关键字"/>
|
||||||
|
</form>
|
||||||
|
<span class="searchbox-close ins-close ins-selectable" onclick="closeSearchPanel()"><i class="fas fa-times"></i></span>
|
||||||
|
</div>
|
||||||
|
<div class="searchbox-result-wrapper ins-section-wrapper">
|
||||||
|
<div class="ins-section-container">
|
||||||
|
<#-- <section class="ins-section">-->
|
||||||
|
<#-- <header class="ins-section-header">最新文章</header>-->
|
||||||
|
<#-- <@postTag method="latest" top="5">-->
|
||||||
|
<#-- <#list posts as post>-->
|
||||||
|
<#-- <a href="${context!}/archives/${post.url!}">-->
|
||||||
|
<#-- <div class="ins-selectable ins-search-item">-->
|
||||||
|
<#-- <header><i class="fa fa-file"></i><span class="ins-title">${post.title!}</span>-->
|
||||||
|
<#-- </header>-->
|
||||||
|
<#-- <p class="ins-search-preview">${post.summary!}</p>-->
|
||||||
|
<#-- </div>-->
|
||||||
|
<#-- </a>-->
|
||||||
|
<#-- </#list>-->
|
||||||
|
<#-- </@postTag>-->
|
||||||
|
<#-- </section>-->
|
||||||
|
<section class="ins-section">
|
||||||
|
<header class="ins-section-header">分类</header>
|
||||||
|
<div class="level">
|
||||||
|
<div class="columns is-multiline" style="padding: 1.5em 2em">
|
||||||
|
<@categoryTag method="list">
|
||||||
|
<#list categories as category>
|
||||||
|
<a href="${context!}/categories/${category.slugName!}">
|
||||||
|
<div class="ant-tag ant-tag-purple is-primary is-focused" style="margin-bottom: 8px;"> ${category.name!}</div>
|
||||||
|
<#-- <div class="ins-selectable ins-search-item">-->
|
||||||
|
<#-- <header>-->
|
||||||
|
<#-- <i class="fa fa-folder"></i>-->
|
||||||
|
<#-- <span class="ins-title">${category.name!}</span>-->
|
||||||
|
<#-- <span class="ins-slug">${category.slugName!}</span>-->
|
||||||
|
<#-- </header>-->
|
||||||
|
<#-- </div>-->
|
||||||
|
</a>
|
||||||
|
</#list>
|
||||||
|
</@categoryTag>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<section class="ins-section">
|
||||||
|
<header class="ins-section-header">标签</header>
|
||||||
|
<div class="level">
|
||||||
|
<div class="columns is-multiline" style="padding: 1.5em 2em">
|
||||||
|
<@tagTag method="list">
|
||||||
|
<#list tags as tag>
|
||||||
|
<a href="${context!}/tags/${tag.slugName!}">
|
||||||
|
<div class="ant-tag ant-tag-green" style="margin-bottom: 8px;"> ${tag.name!}</div>
|
||||||
|
|
||||||
|
<#-- <div class="ins-selectable ins-search-item">-->
|
||||||
|
<#-- <header>-->
|
||||||
|
<#-- <i class="fa fa-tag"></i>-->
|
||||||
|
<#-- <span class="ins-title">${tag.name!}</span>-->
|
||||||
|
<#-- <span class="ins-slug">${tag.slugName!}</span>-->
|
||||||
|
<#-- </header>-->
|
||||||
|
<#-- </div>-->
|
||||||
|
</a>
|
||||||
|
</#list>
|
||||||
|
</@tagTag>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
function openSearchPanel() {
|
||||||
|
$(".ins-search").addClass("show");
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeSearchPanel() {
|
||||||
|
$(".ins-search").removeClass("show");
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<!-- AddToAny BEGIN -->
|
||||||
|
<div class="a2a_kit a2a_kit_size_32 a2a_default_style">
|
||||||
|
<a class="a2a_dd" href="https://www.addtoany.com/share"></a>
|
||||||
|
<a class="a2a_button_facebook"></a>
|
||||||
|
<a class="a2a_button_twitter"></a>
|
||||||
|
<a class="a2a_button_telegram"></a>
|
||||||
|
<a class="a2a_button_whatsapp"></a>
|
||||||
|
<a class="a2a_button_reddit"></a>
|
||||||
|
</div>
|
||||||
|
<script async src="//static.addtoany.com/menu/page.js"></script>
|
||||||
|
<style>
|
||||||
|
.a2a_kit, .a2a_menu, .a2a_modal, .a2a_overlay {
|
||||||
|
margin-left: 1.5em;
|
||||||
|
}
|
||||||
|
.a2a_default_style .a2a_counter img, .a2a_default_style .a2a_dd, .a2a_default_style .a2a_svg {
|
||||||
|
margin-top: .8em;
|
||||||
|
}
|
||||||
|
.a2a_menu {
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<!-- AddToAny END -->
|
|
@ -0,0 +1,9 @@
|
||||||
|
<div class="bdsharebuttonbox">
|
||||||
|
<a href="#" class="bds_more" data-cmd="more"></a>
|
||||||
|
<a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a>
|
||||||
|
<a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a>
|
||||||
|
<a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博"></a>
|
||||||
|
<a href="#" class="bds_renren" data-cmd="renren" title="分享到人人网"></a>
|
||||||
|
<a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a>
|
||||||
|
</div>
|
||||||
|
<script>window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "2", "bdPic": "", "bdStyle": "0", "bdSize": "16" }, "share": {} }; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' + ~(-new Date() / 36e5)];</script>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<div class="social-share column is-one-third" style="margin-left: 1.5em;"></div>
|
||||||
|
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/social-share.js@1.0.16/dist/css/share.min.css">
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/social-share.js@1.0.16/dist/js/social-share.min.js"></script>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<#include "common/article.ftl">
|
||||||
|
<#if settings.nav_enable!false>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-content">
|
||||||
|
<nav class="breadcrumb" aria-label="breadcrumbs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="${context!}/tags">标签</a></li>
|
||||||
|
<li class="is-active"><a href="#" aria-current="page">${tag.name}</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
<#if posts.content?size gt 0>
|
||||||
|
<#list posts.content as post>
|
||||||
|
<@article post,'index','null',true />
|
||||||
|
</#list>
|
||||||
|
<#if posts.getTotalPages() gt 0>
|
||||||
|
<div class="card card-transparent">
|
||||||
|
<nav class="pagination is-centered" role="navigation" aria-label="pagination">
|
||||||
|
<div class="pagination-previous<#if posts.number gt 0><#else > is-invisible is-hidden-mobile</#if>">
|
||||||
|
<#if posts.number == 1>
|
||||||
|
<a class="is-flex-grow has-text-black-ter" href="${context!}/tags/${tag.slugName!}">上一页</a>
|
||||||
|
<#else>
|
||||||
|
<a class="is-flex-grow has-text-black-ter"
|
||||||
|
href="${context!}/tags/${tag.slugName!}/page/${posts.number}">上一页</a>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
<div class="pagination-next<#if posts.getTotalPages() gt posts.number+1><#else > is-invisible is-hidden-mobile</#if>">
|
||||||
|
<a class="is-flex-grow has-text-black-ter"
|
||||||
|
href="${context!}/tags/${tag.slugName!}/page/${posts.number+2}">下一页</a>
|
||||||
|
</div>
|
||||||
|
<ul class="pagination-list is-hidden-mobile">
|
||||||
|
<#list rainbow as r>
|
||||||
|
<#if r == posts.number+1>
|
||||||
|
<li><a class="pagination-link is-current"
|
||||||
|
href="${context!}/tags/${tag.slugName!}/page/${posts.number+1}">${posts.number+1}</a>
|
||||||
|
</li>
|
||||||
|
<#else>
|
||||||
|
<li><a class="pagination-link has-text-black-ter"
|
||||||
|
href="${context!}/tags/${tag.slugName!}/page/${r}">${r}</a></li>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
<#else>
|
||||||
|
<div class="level">
|
||||||
|
<div class="level-item has-text-centered">
|
||||||
|
空空如也
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="menu">
|
||||||
|
<h3 class="menu-label">
|
||||||
|
标签
|
||||||
|
</h3>
|
||||||
|
<div class="field is-grouped is-grouped-multiline">
|
||||||
|
<@tagTag method="list">
|
||||||
|
<#list tags as tag>
|
||||||
|
<div class="control">
|
||||||
|
<a class="tags has-addons" href="${context!}/tags/${tag.slugName!}">
|
||||||
|
<span class="tag">${tag.name}</span>
|
||||||
|
<span class="tag is-grey">${tag.postCount!}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</#list>
|
||||||
|
</@tagTag>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,23 @@
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="menu">
|
||||||
|
<h3 class="menu-label">
|
||||||
|
归档
|
||||||
|
</h3>
|
||||||
|
<ul class="menu-list">
|
||||||
|
<% _list_archives().forEach(archive => { %>
|
||||||
|
<li>
|
||||||
|
<a class="level is-marginless" href="<%= archive.url %>">
|
||||||
|
<span class="level-start">
|
||||||
|
<span class="level-item"><%= archive.name %></span>
|
||||||
|
</span>
|
||||||
|
<span class="level-end">
|
||||||
|
<span class="level-item tag"><%= archive.count %></span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<% }) %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,30 @@
|
||||||
|
<#if categories?exists && categories?size gt 0>
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<h3 class="menu-label">
|
||||||
|
相关推荐
|
||||||
|
</h3>
|
||||||
|
<@postTag method="listByCategoryId" categoryId="${categories[0].id}">
|
||||||
|
<#list posts as post>
|
||||||
|
<#if post_index lt 3>
|
||||||
|
<article class="media">
|
||||||
|
<#if post.thumbnail?? && post.thumbnail!=''>
|
||||||
|
<a href="${context!}/archives/${post.url!}" class="media-left">
|
||||||
|
<p class="image is-64x64">
|
||||||
|
<img class="thumbnail" src="${post.thumbnail!}" alt="${post.title!}">
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<div class="media-content">
|
||||||
|
<div class="content">
|
||||||
|
<div><time class="has-text-grey is-size-7 is-uppercase" datetime="${post.createTime!}">${post.createTime?string["EEE MMM d"]}</time></div>
|
||||||
|
<a href="${context!}/archives/${post.url!}" class="title has-link-black-ter is-size-6 has-text-weight-normal">${post.title!}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</@postTag>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
|
@ -0,0 +1 @@
|
||||||
|
<#include "../categories.ftl">
|
|
@ -0,0 +1,27 @@
|
||||||
|
<@linkTag method="list">
|
||||||
|
<#if links?? && links?size gt 0>
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="menu">
|
||||||
|
<h3 class="menu-label">
|
||||||
|
链接
|
||||||
|
</h3>
|
||||||
|
<ul class="menu-list">
|
||||||
|
<#list links as link>
|
||||||
|
<li>
|
||||||
|
<a class="level is-mobile" href="${link.url!}" target="_blank">
|
||||||
|
<span class="level-left">
|
||||||
|
<span class="level-item">${link.name}</span>
|
||||||
|
</span>
|
||||||
|
<span class="level-right">
|
||||||
|
<span class="level-item tag">${link.url!}</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</#list>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</@linkTag>
|
|
@ -0,0 +1,116 @@
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<nav class="level">
|
||||||
|
<div class="level-item has-text-centered" style="flex-shrink: 1">
|
||||||
|
<div class="level">
|
||||||
|
<figure class="image is-64x64 has-mb-6 level-left">
|
||||||
|
<img class="is-rounded"
|
||||||
|
src="${user.avatar!}" alt="${user.nickname!}" style="padding: 2px;
|
||||||
|
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.1);">
|
||||||
|
</figure>
|
||||||
|
<#if settings.profile_enable!true>
|
||||||
|
<div class="level-right">
|
||||||
|
<div>
|
||||||
|
<p class="title is-3">
|
||||||
|
${user.nickname!}
|
||||||
|
</p>
|
||||||
|
<p class="is-size-5 is-block" style="padding-left: 1em;">
|
||||||
|
${user.description!}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
<#-- <#if settings.profile_location?? && settings.profile_location!=''>-->
|
||||||
|
<#-- <p class="is-size-6 is-flex is-flex-center has-text-grey">-->
|
||||||
|
<#-- <i class="fas fa-map-marker-alt has-mr-7"></i>-->
|
||||||
|
<#-- <span>${settings.profile_location!}</span>-->
|
||||||
|
<#-- </p>-->
|
||||||
|
<#-- </#if>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<nav class="level is-mobile">
|
||||||
|
<div class="level-item has-text-centered is-marginless">
|
||||||
|
<div>
|
||||||
|
<p class="heading">
|
||||||
|
文章
|
||||||
|
</p>
|
||||||
|
<p class="title has-text-weight-normal">
|
||||||
|
<@postTag method="count">${count}</@postTag>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="level-item has-text-centered is-marginless">
|
||||||
|
<div>
|
||||||
|
<p class="heading">
|
||||||
|
分类
|
||||||
|
</p>
|
||||||
|
<p class="title has-text-weight-normal">
|
||||||
|
<@categoryTag method="count">${count}</@categoryTag>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="level-item has-text-centered is-marginless">
|
||||||
|
<div>
|
||||||
|
<p class="heading">
|
||||||
|
标签
|
||||||
|
</p>
|
||||||
|
<p class="title has-text-weight-normal">
|
||||||
|
<@tagTag method="count">${count}</@tagTag>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<#-- <div class="level">-->
|
||||||
|
<#-- <a class="level-item button is-link is-rounded" href="${settings.profile_follow_url!'${context!}'}"-->
|
||||||
|
<#-- target="_blank">关注我</a>-->
|
||||||
|
<#-- </div>-->
|
||||||
|
<div class="level is-mobile">
|
||||||
|
<#if settings.social_github?? && settings.social_github!=''>
|
||||||
|
<a class="level-item button is-white is-marginless" target="_blank" title="Github"
|
||||||
|
href="https://github.com/${settings.social_github}">
|
||||||
|
<i class="fab fa-github"></i>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<#if settings.social_qq?? && settings.social_qq!=''>
|
||||||
|
<a class="level-item button is-white is-marginless" target="_blank" title="QQ"
|
||||||
|
href="tencent://message/?uin=${settings.social_qq}&Site=&Menu=yes">
|
||||||
|
<i class="fab fa-qq"></i>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<#if settings.social_weibo?? && settings.social_weibo!=''>
|
||||||
|
<a class="level-item button is-white is-marginless" target="_blank" title="Weibo"
|
||||||
|
href="https://weibo.com/${settings.social_weibo}">
|
||||||
|
<i class="fab fa-weibo"></i>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<#if settings.social_twitter?? && settings.social_twitter!=''>
|
||||||
|
<a class="level-item button is-white is-marginless" target="_blank" title="Twitter"
|
||||||
|
href="https://twitter.com/${settings.social_twitter}">
|
||||||
|
<i class="fab fa-twitter"></i>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<#if settings.social_facebook?? && settings.social_facebook!=''>
|
||||||
|
<a class="level-item button is-white is-marginless" target="_blank" title="Facebook"
|
||||||
|
href="https://www.facebook.com/${settings.social_facebook}">
|
||||||
|
<i class="fab fa-facebook"></i>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<#if settings.social_email?? && settings.social_email!=''>
|
||||||
|
<a class="level-item button is-white is-marginless" target="_blank" title="Email"
|
||||||
|
href="mailto:${settings.social_email}">
|
||||||
|
<i class="fas fa-envelope"></i>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<#if settings.social_telegram?? && settings.social_telegram!=''>
|
||||||
|
<a class="level-item button is-white is-marginless" target="_blank" title="Telegram"
|
||||||
|
href="https://t.me/${settings.social_telegram}">
|
||||||
|
<i class="fab fa-telegram"></i>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<a class="level-item button is-white is-marginless" target="_blank" title="RSS" href="${context!}/atom.xml">
|
||||||
|
<i class="fas fa-rss"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<h3 class="menu-label">
|
||||||
|
最新评论
|
||||||
|
</h3>
|
||||||
|
<@commentTag method="latest" top="5">
|
||||||
|
<#if comments?? && comments.getTotalElements() gt 0>
|
||||||
|
<#list comments.content as comment>
|
||||||
|
<article class="media">
|
||||||
|
<div class="media-content">
|
||||||
|
<div class="content">
|
||||||
|
<div><time class="has-text-grey is-size-7 is-uppercase" datetime="${comment.createTime!}">${comment.createTime?string('yyyy-MM-dd')}</time></div>
|
||||||
|
${comment.author!} : <a href="${context!}/archives/${comment.post.url!}#comment-wrapper" class="title has-link-black-ter is-size-6 has-text-weight-normal">${comment.content!}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</#list>
|
||||||
|
</#if>
|
||||||
|
</@commentTag>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<h3 class="menu-label">
|
||||||
|
最新文章
|
||||||
|
</h3>
|
||||||
|
<@postTag method="latest" top="5">
|
||||||
|
<#list posts as post>
|
||||||
|
<article class="media">
|
||||||
|
<#if post.thumbnail?? && post.thumbnail!=''>
|
||||||
|
<a href="${context!}/archives/${post.url!}" class="media-left">
|
||||||
|
<p class="image is-64x64">
|
||||||
|
<img class="thumbnail" src="${post.thumbnail!}" alt="${post.title!}">
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<div class="media-content">
|
||||||
|
<div class="content">
|
||||||
|
<div><time class="has-text-grey is-size-7 is-uppercase" datetime="${post.createTime!}">${post.createTime?string["EEE MMM d"]}</time></div>
|
||||||
|
<a href="${context!}/archives/${post.url!}" class="title has-link-black-ter is-size-6 has-text-weight-normal">${post.title!}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</#list>
|
||||||
|
</@postTag>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1 @@
|
||||||
|
<#include "../tags.ftl">
|
|
@ -0,0 +1,30 @@
|
||||||
|
<#if tags?exists && tags?size gt 0>
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<h3 class="menu-label">
|
||||||
|
相关文章
|
||||||
|
</h3>
|
||||||
|
<@postTag method="listByTagId" tagId="${tags[0].id}">
|
||||||
|
<#list posts as post>
|
||||||
|
<#if post_index lt 3>
|
||||||
|
<article class="media">
|
||||||
|
<#if post.thumbnail?? && post.thumbnail!=''>
|
||||||
|
<a href="${context!}/archives/${post.url!}" class="media-left">
|
||||||
|
<p class="image is-64x64">
|
||||||
|
<img class="thumbnail" src="${post.thumbnail!}" alt="${post.title!}">
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
</#if>
|
||||||
|
<div class="media-content">
|
||||||
|
<div class="content">
|
||||||
|
<div><time class="has-text-grey is-size-7 is-uppercase" datetime="${post.createTime!}">${post.createTime?string["EEE MMM d"]}</time></div>
|
||||||
|
<a href="${context!}/archives/${post.url!}" class="title has-link-black-ter is-size-6 has-text-weight-normal">${post.title!}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</@postTag>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<@tagTag method="list">
|
||||||
|
<#if tags?? && tags?size gt 0>
|
||||||
|
<div class="card widget">
|
||||||
|
<div class="card-content">
|
||||||
|
<h3 class="menu-label">
|
||||||
|
标签云
|
||||||
|
</h3>
|
||||||
|
<#list tags as tag>
|
||||||
|
<a href="${context!}/tags/${tag.slugName!}" style="font-size:<#if tag.name?length gt 7> ${tag.postCount+(tag.name?length)}<#else>${tag.postCount+(tag.name?length)*3}</#if>px">${tag.name!}</a>
|
||||||
|
</#list>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</@tagTag>
|
|
@ -0,0 +1,39 @@
|
||||||
|
<% if (get_config('toc') === true && (post.layout === 'page' || post.layout === 'post')) {
|
||||||
|
function buildToc(toc) {
|
||||||
|
let result = '';
|
||||||
|
if (toc.hasOwnProperty('id') && toc.hasOwnProperty('index') && toc.hasOwnProperty('text')) {
|
||||||
|
result += `<li>
|
||||||
|
<a class="is-flex" href="#${toc.id}">
|
||||||
|
<span class="has-mr-6">${toc.index}</span>
|
||||||
|
<span>${toc.text}</span>
|
||||||
|
</a>`;
|
||||||
|
}
|
||||||
|
let keys = Object.keys(toc);
|
||||||
|
keys.indexOf('id') > -1 && keys.splice(keys.indexOf('id'), 1);
|
||||||
|
keys.indexOf('text') > -1 && keys.splice(keys.indexOf('text'), 1);
|
||||||
|
keys.indexOf('index') > -1 && keys.splice(keys.indexOf('index'), 1);
|
||||||
|
keys = keys.map(k => parseInt(k)).sort((a, b) => a - b);
|
||||||
|
if (keys.length > 0) {
|
||||||
|
result += '<ul class="menu-list">';
|
||||||
|
for (let i of keys) {
|
||||||
|
result += buildToc(toc[i]);
|
||||||
|
}
|
||||||
|
result += '</ul>';
|
||||||
|
}
|
||||||
|
if (toc.hasOwnProperty('id') && toc.hasOwnProperty('index') && toc.hasOwnProperty('text')) {
|
||||||
|
result += '</li>';
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<div class="card widget" id="toc">
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="menu">
|
||||||
|
<h3 class="menu-label">
|
||||||
|
<%= _p('widget.catalogue', Infinity) %>
|
||||||
|
</h3>
|
||||||
|
<%- buildToc(_toc(post.content)) %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% } %>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<#include "layout/layout.ftl">
|
||||||
|
<#include "layout/common/article.ftl">
|
||||||
|
<@layout title="链接 - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/links">
|
||||||
|
<#include "layout/widget/links.ftl">
|
||||||
|
</@layout>
|
|
@ -0,0 +1,95 @@
|
||||||
|
<#include "./layout/common/navbar.ftl">
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
|
||||||
|
<title>${title!}</title>
|
||||||
|
|
||||||
|
<meta name="keywords" content="${keywords!}"/>
|
||||||
|
<meta name="description" content="${description!}">
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="${title!}">
|
||||||
|
<meta property="og:site_name" content="${title!}">
|
||||||
|
<meta property="og:description" content="${description!}">
|
||||||
|
<meta property="og:locale" content="zh">
|
||||||
|
<meta property="og:image" content="${user.avatar!}">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="twitter:title" content="${title!}">
|
||||||
|
<meta name="twitter:description" content="${description!}">
|
||||||
|
<meta name="twitter:image" content="${user.avatar!}">
|
||||||
|
|
||||||
|
<link rel="canonical" href="${canonical!}"/>
|
||||||
|
|
||||||
|
<link rel="alternative" href="${context!}/atom.xml" title="${options.blog_title!}" type="application/atom+xml">
|
||||||
|
|
||||||
|
<@global.head />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/bulma@0.7.5/css/bulma.min.css">
|
||||||
|
<link rel="stylesheet" href="//use.fontawesome.com/releases/v5.4.1/css/all.css">
|
||||||
|
<#-- <link rel="stylesheet" href="//fonts.proxy.ustclug.org/css?family=Ubuntu:400,600|Source+Code+Pro">-->
|
||||||
|
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/highlight.js@9.12.0/styles/atom-one-light.css">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body > .footer,
|
||||||
|
body > .navbar,
|
||||||
|
body > .section {
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<#if is_post?? || is_sheet??>
|
||||||
|
<style>
|
||||||
|
.content code .number {
|
||||||
|
background-color: transparent;
|
||||||
|
border-radius: 0;
|
||||||
|
display: unset;
|
||||||
|
font-size: .85em;
|
||||||
|
margin-right: 0;
|
||||||
|
padding: 0;
|
||||||
|
vertical-align: unset;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</#if>
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="//cdn.jsdelivr.net/npm/outdatedbrowser@1.1.5/outdatedbrowser/outdatedbrowser.min.css">
|
||||||
|
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/pace-js@1.0.2/pace.min.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="${static!}/source/css/style.css">
|
||||||
|
<link rel="stylesheet" href="${static!}/source/css/bundle.css">
|
||||||
|
<link rel="stylesheet" href="${static!}/source/css/back-to-top.css">
|
||||||
|
|
||||||
|
<#if post??>
|
||||||
|
<link rel="stylesheet" type="text/css"
|
||||||
|
href="${static!}/source/lib/prism/css/prism-${settings.code_pretty!'Default'}.css"/>
|
||||||
|
<script type="text/javascript" src="${static!}/source/lib/prism/js/prism.js"></script>
|
||||||
|
</#if>
|
||||||
|
<#if is_index??>
|
||||||
|
<link rel="stylesheet" href="${static!}/source/css/widget_pin.css">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.5/css/swiper.min.css">
|
||||||
|
</#if>
|
||||||
|
</head>
|
||||||
|
<body class="is-3-column">
|
||||||
|
<@navbar 'page' />
|
||||||
|
<section class="section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="columns is-mobile is-4-tablet is-1-desktop is-1-widescreen is-6-fullhd is-centered">
|
||||||
|
<@photoTag method="list">
|
||||||
|
<div class="column is-2-column " style="padding: 30px">
|
||||||
|
<a href="">
|
||||||
|
<#list photos as photo>
|
||||||
|
<img src="${photo.thumbnail}" alt="">
|
||||||
|
</#list>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</@photoTag>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<#include "./layout/common/footer.ftl">
|
||||||
|
<#include "./layout/common/scripts.ftl">
|
||||||
|
<#include "./layout/search/local.ftl">
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<#include "layout/layout.ftl">
|
||||||
|
<#include "layout/common/article.ftl">
|
||||||
|
<@layout title="${post.title!} - ${options.blog_title!}" keywords="${options.seo_keywords!},${tagWords!}" description="${post.summary!}" canonical="${context!}/archives/${post.url!}">
|
||||||
|
<@article post,'page',"post",false />
|
||||||
|
</@layout>
|
Binary file not shown.
After Width: | Height: | Size: 522 KiB |
|
@ -0,0 +1,38 @@
|
||||||
|
<#include "layout/layout.ftl">
|
||||||
|
<#include "layout/common/article.ftl">
|
||||||
|
<@layout title="搜索:${keyword} - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/search?keyword=${keyword}">
|
||||||
|
<#list posts.content as post>
|
||||||
|
<@article post,'index','null',true />
|
||||||
|
</#list>
|
||||||
|
<#if posts.getTotalPages() gt 0>
|
||||||
|
<div class="card card-transparent">
|
||||||
|
<nav class="pagination is-centered" role="navigation" aria-label="pagination">
|
||||||
|
<div class="pagination-previous<#if posts.number gt 0><#else > is-invisible is-hidden-mobile</#if>">
|
||||||
|
<#if posts.number == 1>
|
||||||
|
<a class="is-flex-grow has-text-black-ter" href="${context!}/search?keyword=${keyword}">上一页</a>
|
||||||
|
<#else>
|
||||||
|
<a class="is-flex-grow has-text-black-ter" href="${context!}/search/page/${posts.number}?keyword=${keyword}">上一页</a>
|
||||||
|
</#if>
|
||||||
|
</div>
|
||||||
|
<div class="pagination-next<#if posts.getTotalPages() gt posts.number+1><#else > is-invisible is-hidden-mobile</#if>">
|
||||||
|
<a class="is-flex-grow has-text-black-ter" href="${context!}/search/page/${posts.number+2}?keyword=${keyword}">下一页</a>
|
||||||
|
</div>
|
||||||
|
<ul class="pagination-list is-hidden-mobile">
|
||||||
|
<#list rainbow as r>
|
||||||
|
<#if r == posts.number+1>
|
||||||
|
<li><a class="pagination-link is-current" href="${context!}/search/page/${posts.number+1}?keyword=${keyword}">${posts.number+1}</a></li>
|
||||||
|
<#else>
|
||||||
|
<li><a class="pagination-link has-text-black-ter" href="${context!}/search/page/${r}?keyword=${keyword}">${r}</a></li>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
<#else>
|
||||||
|
<div class="level">
|
||||||
|
<div class="level-item has-text-centered">
|
||||||
|
没有你要找的内容『${keyword}』
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</#if>
|
||||||
|
</@layout>
|
|
@ -0,0 +1,233 @@
|
||||||
|
post:
|
||||||
|
label: 文章设置
|
||||||
|
items:
|
||||||
|
share_type:
|
||||||
|
name: share_type
|
||||||
|
label: 文章分享组件
|
||||||
|
type: select
|
||||||
|
default: ''
|
||||||
|
options:
|
||||||
|
- value: ''
|
||||||
|
label: '无'
|
||||||
|
- value: addtoany
|
||||||
|
label: addtoany
|
||||||
|
- value: sharejs
|
||||||
|
label: sharejs
|
||||||
|
donate_alipay:
|
||||||
|
name: donate_alipay
|
||||||
|
label: 支付宝捐赠二维码
|
||||||
|
type: attachment
|
||||||
|
placeholder: '二维码地址'
|
||||||
|
donate_wechat:
|
||||||
|
name: donate_wechat
|
||||||
|
label: 微信捐赠二维码
|
||||||
|
type: attachment
|
||||||
|
placeholder: '二维码地址'
|
||||||
|
mathjax_enable:
|
||||||
|
name: mathjax_enable
|
||||||
|
label: MathJax
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: false
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 开启
|
||||||
|
- value: false
|
||||||
|
label: 关闭
|
||||||
|
code_pretty:
|
||||||
|
name: code_pretty
|
||||||
|
label: 文章代码高亮主题
|
||||||
|
type: select
|
||||||
|
default: Default
|
||||||
|
options:
|
||||||
|
- value: Default
|
||||||
|
label: Default
|
||||||
|
- value: Coy
|
||||||
|
label: Coy
|
||||||
|
- value: Dark
|
||||||
|
label: Dark
|
||||||
|
- value: Okaidia
|
||||||
|
label: Okaidia
|
||||||
|
- value: Solarized Light
|
||||||
|
label: Solarized Light
|
||||||
|
- value: Tomorrow Night
|
||||||
|
label: Tomorrow Night
|
||||||
|
- value: Twilight
|
||||||
|
label: Twilight
|
||||||
|
social:
|
||||||
|
label: 社交设置
|
||||||
|
items:
|
||||||
|
social_github:
|
||||||
|
name: social_github
|
||||||
|
label: Github
|
||||||
|
type: text
|
||||||
|
placeholder: 'Github 用户名'
|
||||||
|
social_qq:
|
||||||
|
name: social_qq
|
||||||
|
label: QQ
|
||||||
|
type: text
|
||||||
|
placeholder: 'QQ 号'
|
||||||
|
social_weibo:
|
||||||
|
name: social_weibo
|
||||||
|
label: 微博
|
||||||
|
type: text
|
||||||
|
placeholder: '微博用户名'
|
||||||
|
social_twitter:
|
||||||
|
name: social_twitter
|
||||||
|
label: Twitter
|
||||||
|
type: text
|
||||||
|
placeholder: 'Twitter 用户名'
|
||||||
|
social_facebook:
|
||||||
|
name: social_facebook
|
||||||
|
label: Facebook
|
||||||
|
type: text
|
||||||
|
placeholder: 'Facebook 用户名'
|
||||||
|
social_email:
|
||||||
|
name: social_email
|
||||||
|
label: Email
|
||||||
|
type: text
|
||||||
|
placeholder: '邮箱地址'
|
||||||
|
social_telegram:
|
||||||
|
name: social_telegram
|
||||||
|
label: Telegram
|
||||||
|
type: text
|
||||||
|
placeholder: 'Telegram 用户名'
|
||||||
|
sidebar:
|
||||||
|
label: 个性化
|
||||||
|
items:
|
||||||
|
sidebar_profile:
|
||||||
|
name: sidebar_profile
|
||||||
|
label: 侧边栏个人资料
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: true
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 开启
|
||||||
|
- value: false
|
||||||
|
label: 关闭
|
||||||
|
sidebar_categories:
|
||||||
|
name: sidebar_categories
|
||||||
|
label: 侧边栏分类
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: true
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 开启
|
||||||
|
- value: false
|
||||||
|
label: 关闭
|
||||||
|
sidebar_tagcloud:
|
||||||
|
name: sidebar_tagcloud
|
||||||
|
label: 侧边栏标签云
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: true
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 开启
|
||||||
|
- value: false
|
||||||
|
label: 关闭
|
||||||
|
sidebar_links:
|
||||||
|
name: sidebar_links
|
||||||
|
label: 侧边栏链接
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: true
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 开启
|
||||||
|
- value: false
|
||||||
|
label: 关闭
|
||||||
|
sidebar_recentpost:
|
||||||
|
name: sidebar_recentpost
|
||||||
|
label: 侧边栏最近文章
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: true
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 开启
|
||||||
|
- value: false
|
||||||
|
label: 关闭
|
||||||
|
nav_enable:
|
||||||
|
name: nav_enable
|
||||||
|
label: 是否显示分类导航
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: true
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 开启
|
||||||
|
- value: false
|
||||||
|
label: 关闭
|
||||||
|
profile_enable:
|
||||||
|
name: profile_enable
|
||||||
|
label: 是否显示个性签名
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: true
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 显示
|
||||||
|
- value: false
|
||||||
|
label: 隐藏
|
||||||
|
tree_menu_enable:
|
||||||
|
name: profile_enable
|
||||||
|
label: 菜单样式
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: false
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 级联菜单
|
||||||
|
- value: false
|
||||||
|
label: 列表
|
||||||
|
|
||||||
|
sidebar_recentcomment:
|
||||||
|
name: sidebar_recentcomment
|
||||||
|
label: 侧边栏最近评论
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: false
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 开启
|
||||||
|
- value: false
|
||||||
|
label: 关闭
|
||||||
|
sidebar_tags:
|
||||||
|
name: sidebar_tags
|
||||||
|
label: 侧边栏标签
|
||||||
|
type: radio
|
||||||
|
data-type: bool
|
||||||
|
default: true
|
||||||
|
options:
|
||||||
|
- value: true
|
||||||
|
label: 开启
|
||||||
|
- value: false
|
||||||
|
label: 关闭
|
||||||
|
|
||||||
|
custom_links:
|
||||||
|
label: 自定义链接
|
||||||
|
items:
|
||||||
|
links_top:
|
||||||
|
name: links_top
|
||||||
|
label: 顶部链接
|
||||||
|
type: textarea
|
||||||
|
default: '<a class="navbar-item" target="_blank" title="Download on GitHub" href="https://github.com/halo-dev/halo-theme-icarus">
|
||||||
|
<i class="fab fa-github"></i>
|
||||||
|
</a>'
|
||||||
|
links_footer:
|
||||||
|
name: links_footer
|
||||||
|
label: 底部链接
|
||||||
|
type: textarea
|
||||||
|
default: '<p class="control">
|
||||||
|
<a class="button is-white is-large" target="_blank" title="Creative Commons" href="https://creativecommons.org/">
|
||||||
|
<i class="fab fa-creative-commons title is-4"></i>
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
<p class="control">
|
||||||
|
<a class="button is-white is-large" target="_blank" title="Attribution 4.0 International" href="https://creativecommons.org/licenses/by/4.0/">
|
||||||
|
<i class="fab fa-creative-commons-by title is-4"></i>
|
||||||
|
</a>
|
||||||
|
</p>'
|
|
@ -0,0 +1,5 @@
|
||||||
|
<#include "layout/layout.ftl">
|
||||||
|
<#include "layout/common/article.ftl">
|
||||||
|
<@layout title="${sheet.title} - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/s/${sheet.url!}">
|
||||||
|
<@article sheet,'page',"sheet",false />
|
||||||
|
</@layout>
|
|
@ -0,0 +1,16 @@
|
||||||
|
#back-to-top {
|
||||||
|
position: fixed;
|
||||||
|
padding: 8px 0;
|
||||||
|
transition: 0.4s ease opacity, 0.4s ease width, 0.4s ease transform, 0.4s ease border-radius;
|
||||||
|
opacity: 0;
|
||||||
|
line-height: 24px;
|
||||||
|
outline: none;
|
||||||
|
transform: translateY(120px);
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#back-to-top.fade-in {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
#back-to-top.rise-up {
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
|
@ -0,0 +1,193 @@
|
||||||
|
#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;}.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{font-weight: 400 !important;width:100%;border:none;outline:0;font-size:16px;box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);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{border-radius:2px;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}}
|
||||||
|
|
||||||
|
.ant-tag {
|
||||||
|
font-family: Chinese Quote, -apple-system, BlinkMacSystemFont, Segoe UI, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
|
||||||
|
font-size: 14px;
|
||||||
|
font-variant: tabular-nums;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: rgba(0, 0, 0, .65);
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px 15px;
|
||||||
|
list-style: none;
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 2px;
|
||||||
|
border: 1px solid #d9d9d9;
|
||||||
|
background: #fafafa;
|
||||||
|
font-size: 12px;
|
||||||
|
-webkit-transition: all .3s cubic-bezier(.215, .61, .355, 1);
|
||||||
|
transition: all .3s cubic-bezier(.215, .61, .355, 1);
|
||||||
|
opacity: 1;
|
||||||
|
margin-right: 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
white-space:nowrap;
|
||||||
|
opacity: .8;
|
||||||
|
font-weight: 400;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag:hover {
|
||||||
|
opacity:1;
|
||||||
|
border-color:#91d5ff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag, .ant-tag a, .ant-tag a:hover {
|
||||||
|
color:rgba(0, 0, 0, .65)
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-pink {
|
||||||
|
color: #eb2f96;
|
||||||
|
background: #fff0f6;
|
||||||
|
border-color:#ffadd2
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-pink-inverse {
|
||||||
|
background: #eb2f96;
|
||||||
|
border-color: #eb2f96;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-magenta {
|
||||||
|
color: #eb2f96;
|
||||||
|
background: #fff0f6;
|
||||||
|
border-color:#ffadd2
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-magenta-inverse {
|
||||||
|
background: #eb2f96;
|
||||||
|
border-color: #eb2f96;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-red {
|
||||||
|
color: #f5222d;
|
||||||
|
background: #fff1f0;
|
||||||
|
border-color:#ffa39e
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-red-inverse {
|
||||||
|
background: #f5222d;
|
||||||
|
border-color: #f5222d;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-volcano {
|
||||||
|
color: #fa541c;
|
||||||
|
background: #fff2e8;
|
||||||
|
border-color:#ffbb96
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-volcano-inverse {
|
||||||
|
background: #fa541c;
|
||||||
|
border-color: #fa541c;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-orange {
|
||||||
|
color: #fa8c16;
|
||||||
|
background: #fff7e6;
|
||||||
|
border-color:#ffd591
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-orange-inverse {
|
||||||
|
background: #fa8c16;
|
||||||
|
border-color: #fa8c16;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-yellow {
|
||||||
|
color: #fadb14;
|
||||||
|
background: #feffe6;
|
||||||
|
border-color:#fffb8f
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-yellow-inverse {
|
||||||
|
background: #fadb14;
|
||||||
|
border-color: #fadb14;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-gold {
|
||||||
|
color: #faad14;
|
||||||
|
background: #fffbe6;
|
||||||
|
border-color:#ffe58f
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-gold-inverse {
|
||||||
|
background: #faad14;
|
||||||
|
border-color: #faad14;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-cyan {
|
||||||
|
color: #13c2c2;
|
||||||
|
background: #e6fffb;
|
||||||
|
border-color:#87e8de
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-cyan-inverse {
|
||||||
|
background: #13c2c2;
|
||||||
|
border-color: #13c2c2;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-lime {
|
||||||
|
color: #a0d911;
|
||||||
|
background: #fcffe6;
|
||||||
|
border-color:#eaff8f
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-lime-inverse {
|
||||||
|
background: #a0d911;
|
||||||
|
border-color: #a0d911;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-green {
|
||||||
|
color: #52c41a;
|
||||||
|
background: #f6ffed;
|
||||||
|
border-color:#b7eb8f
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-green-inverse {
|
||||||
|
background: #52c41a;
|
||||||
|
border-color: #52c41a;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-blue {
|
||||||
|
color: #1890ff;
|
||||||
|
background: #e6f7ff;
|
||||||
|
border-color:#91d5ff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-blue-inverse {
|
||||||
|
background: #1890ff;
|
||||||
|
border-color: #1890ff;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-geekblue {
|
||||||
|
color: #2f54eb;
|
||||||
|
background: #f0f5ff;
|
||||||
|
border-color:#adc6ff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-geekblue-inverse {
|
||||||
|
background: #2f54eb;
|
||||||
|
border-color: #2f54eb;
|
||||||
|
color:#fff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-purple {
|
||||||
|
color: #722ed1;
|
||||||
|
background: #f9f0ff;
|
||||||
|
border-color:#d3adf7
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-tag-purple-inverse {
|
||||||
|
background: #722ed1;
|
||||||
|
border-color: #722ed1;
|
||||||
|
color:#fff
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
.ins-section-container {
|
||||||
|
position: relative;
|
||||||
|
background: #f7f7f7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ins-section {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ins-section .ins-section-header, .ins-section .ins-search-item {
|
||||||
|
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 header, .ins-section .ins-search-item .ins-search-preview {
|
||||||
|
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:hover, .ins-section .ins-search-item.active {
|
||||||
|
color: #fff;
|
||||||
|
background: #3273dc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.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 {
|
||||||
|
color: #fff;
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
.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;
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
.searchbox {
|
||||||
|
display: none;
|
||||||
|
perspective: 50em;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 100;
|
||||||
|
background: rgba(0, 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: none;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,549 @@
|
||||||
|
/* ---------------------------------
|
||||||
|
* Override CSS Framework
|
||||||
|
* --------------------------------- */
|
||||||
|
html {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
}
|
||||||
|
.section {
|
||||||
|
padding: 2rem 1.5rem;
|
||||||
|
}
|
||||||
|
body,
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
font-family: "Ubuntu", "Roboto", "Open Sans", "Microsoft YaHei", sans-serif;
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 1280px) {
|
||||||
|
.is-1-column .container,
|
||||||
|
.is-2-column .container {
|
||||||
|
max-width: 960px;
|
||||||
|
width: 960px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 1472px) {
|
||||||
|
.is-2-column .container {
|
||||||
|
max-width: 1152px;
|
||||||
|
width: 1152px;
|
||||||
|
}
|
||||||
|
.is-1-column .container {
|
||||||
|
max-width: 960px;
|
||||||
|
width: 960px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.section {
|
||||||
|
padding: 1.5rem 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 769px) {
|
||||||
|
.column-main.is-sticky,
|
||||||
|
.column-left.is-sticky,
|
||||||
|
.column-right.is-sticky,
|
||||||
|
.column-right-shadow.is-sticky {
|
||||||
|
align-self: flex-start;
|
||||||
|
position: -webkit-sticky;
|
||||||
|
position: sticky;
|
||||||
|
top: 0.75rem;
|
||||||
|
}
|
||||||
|
.column-right-shadow.is-sticky {
|
||||||
|
top: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tag.is-grey {
|
||||||
|
background: #e7e7e7;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.card + .card,
|
||||||
|
.card + .column-right-shadow {
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
}
|
||||||
|
.card.card-transparent {
|
||||||
|
box-shadow: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.card .card-image {
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
flex: 8;
|
||||||
|
}
|
||||||
|
.card .card-image img {
|
||||||
|
max-height: 150px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateX(-5%) translateY(-50%);
|
||||||
|
position: relative;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 3px 4px 12px 0 rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
|
.card .card-content {
|
||||||
|
flex: 12;
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
img.thumbnail {
|
||||||
|
object-fit: cover;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
box-shadow: 3px 4px 12px 0 rgba(0,0,0,0.2);
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
.navbar-logo img,
|
||||||
|
.footer-logo img {
|
||||||
|
max-height: 1.75rem;
|
||||||
|
}
|
||||||
|
.navbar-main {
|
||||||
|
box-shadow: 0 4px 10px rgba(0,0,0,0.05);
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-menu,
|
||||||
|
.navbar-main .navbar-start,
|
||||||
|
.navbar-main .navbar-end {
|
||||||
|
align-items: stretch;
|
||||||
|
display: flex;
|
||||||
|
padding: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-menu {
|
||||||
|
flex-grow: 1;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-start {
|
||||||
|
justify-content: flex-start;
|
||||||
|
margin-right: auto;
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-end {
|
||||||
|
justify-content: flex-end;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 1.25rem 0.75rem;
|
||||||
|
padding-right: 1.5rem;
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-item.is-active {
|
||||||
|
color: #3273dc;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-item .navbar-dropdown {
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 8px 8px rgba(10,10,10,0.1);
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-item .sub-menu {
|
||||||
|
color: #4a4a4a;
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-item .sub-menu:after {
|
||||||
|
content: '\2022';
|
||||||
|
position: absolute;
|
||||||
|
color: #3273dc;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1087px) {
|
||||||
|
.navbar-main .navbar-menu {
|
||||||
|
justify-content: center;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-start {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.navbar-main .navbar-end {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.footer {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.footer .field .button {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.widget .media {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.widget .media + .media {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
.widget .menu-list li ul {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.widget .menu-list a.level {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.pagination {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.pagination .pagination-link:not(.is-current),
|
||||||
|
.pagination .pagination-previous,
|
||||||
|
.pagination .pagination-next {
|
||||||
|
background: #fff;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.pagination .pagination-link,
|
||||||
|
.pagination .pagination-previous,
|
||||||
|
.pagination .pagination-next {
|
||||||
|
box-shadow: 0 4px 10px rgba(0,0,0,0.05);
|
||||||
|
}
|
||||||
|
.post-navigation {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.post-navigation .level-item {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.timeline {
|
||||||
|
margin-left: 1rem;
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
padding-top: 1rem;
|
||||||
|
border-left: 1px solid #dbdbdb;
|
||||||
|
}
|
||||||
|
.timeline .media {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.timeline .media:before,
|
||||||
|
.timeline .media:last-child:after {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: calc(-5px - 1.5rem);
|
||||||
|
}
|
||||||
|
.timeline .media:before {
|
||||||
|
width: 9px;
|
||||||
|
height: 9px;
|
||||||
|
top: 1.3rem;
|
||||||
|
background: #dbdbdb;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.timeline .media:first-child:before {
|
||||||
|
top: 0.3rem;
|
||||||
|
}
|
||||||
|
.timeline .media:last-child:after {
|
||||||
|
top: calc(1.3rem + 9px);
|
||||||
|
width: 9px;
|
||||||
|
bottom: 0;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.timeline .media:first-child:last-child:after {
|
||||||
|
top: calc(0.3rem + 9px);
|
||||||
|
}
|
||||||
|
.article .article-meta {
|
||||||
|
margin-bottom: 0.5rem !important;
|
||||||
|
}
|
||||||
|
.article .content {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
.article .content blockquote.pullquote {
|
||||||
|
float: right;
|
||||||
|
max-width: 50%;
|
||||||
|
font-size: 1.15rem;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.article .content a {
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
.rtl {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
.rtl .level .level-item:not(:last-child),
|
||||||
|
.rtl .level.is-mobile .level-item:not(:last-child) {
|
||||||
|
margin-left: 0.75rem;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.donate {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.donate .qrcode {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 99;
|
||||||
|
bottom: 2.5em;
|
||||||
|
line-height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 4px 10px rgba(0,0,0,0.1), 0 0 1px rgba(0,0,0,0.2);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.donate .qrcode img {
|
||||||
|
max-width: 280px;
|
||||||
|
}
|
||||||
|
.donate:hover .qrcode {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.donate:first-child:not(:last-child) .qrcode {
|
||||||
|
left: -0.75rem;
|
||||||
|
}
|
||||||
|
.donate:last-child:not(:first-child) .qrcode {
|
||||||
|
right: -0.75rem;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
#toc {
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
margin: 1rem;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
z-index: 100;
|
||||||
|
max-height: calc(100vh - 2rem);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
#toc-mask {
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
z-index: 99;
|
||||||
|
background: rgba(0,0,0,0.7);
|
||||||
|
}
|
||||||
|
#toc.is-active,
|
||||||
|
#toc-mask.is-active {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* ---------------------------------
|
||||||
|
* Custom modifiers
|
||||||
|
* --------------------------------- */
|
||||||
|
.is-borderless {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.is-size-7 {
|
||||||
|
font-size: 0.85rem !important;
|
||||||
|
}
|
||||||
|
.is-7by1 {
|
||||||
|
padding-top: 42.8%;
|
||||||
|
}
|
||||||
|
.is-7by1 img {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.is-overflow-x-auto {
|
||||||
|
overflow-x: auto !important;
|
||||||
|
}
|
||||||
|
.is-flex-grow {
|
||||||
|
flex-grow: 1 !important;
|
||||||
|
}
|
||||||
|
.is-flex-wrap {
|
||||||
|
flex-wrap: wrap !important;
|
||||||
|
}
|
||||||
|
.is-flex-start {
|
||||||
|
justify-content: start !important;
|
||||||
|
}
|
||||||
|
.is-flex-center {
|
||||||
|
justify-content: center !important;
|
||||||
|
}
|
||||||
|
.is-flex-middle {
|
||||||
|
align-items: center !important;
|
||||||
|
}
|
||||||
|
.has-order-1 {
|
||||||
|
order: 1;
|
||||||
|
}
|
||||||
|
.has-order-2 {
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
.has-order-3 {
|
||||||
|
order: 3;
|
||||||
|
}
|
||||||
|
.has-mr-6 {
|
||||||
|
margin-right: 0.5em !important;
|
||||||
|
}
|
||||||
|
.has-mb-6 {
|
||||||
|
margin-bottom: 0.5em !important;
|
||||||
|
}
|
||||||
|
.has-mr-7 {
|
||||||
|
margin-right: 0.25em !important;
|
||||||
|
}
|
||||||
|
.has-link-grey,
|
||||||
|
.has-link-black-ter {
|
||||||
|
transition: 0.2s ease;
|
||||||
|
}
|
||||||
|
.has-link-grey:hover,
|
||||||
|
.has-link-black-ter:hover {
|
||||||
|
color: #3273dc !important;
|
||||||
|
}
|
||||||
|
.has-link-grey {
|
||||||
|
color: #7a7a7a !important;
|
||||||
|
}
|
||||||
|
.has-link-black-ter {
|
||||||
|
color: #242424 !important;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.has-text-centered-mobile {
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
.is-flex-center-mobile {
|
||||||
|
justify-content: center !important;
|
||||||
|
}
|
||||||
|
.has-mt-5-mobile {
|
||||||
|
margin-top: 1em !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* ---------------------------------
|
||||||
|
* Font icon fixes
|
||||||
|
* --------------------------------- */
|
||||||
|
.fa,
|
||||||
|
.fab,
|
||||||
|
.fal,
|
||||||
|
.far,
|
||||||
|
.fas {
|
||||||
|
line-height: inherit;
|
||||||
|
font-size: 17px;
|
||||||
|
}
|
||||||
|
/* ---------------------------------
|
||||||
|
* Fix content elements
|
||||||
|
* --------------------------------- */
|
||||||
|
.content h1,
|
||||||
|
.content h2,
|
||||||
|
.content h3,
|
||||||
|
.content h4,
|
||||||
|
.content h5,
|
||||||
|
.content h6 {
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
.content h1 {
|
||||||
|
font-size: 1.75em;
|
||||||
|
}
|
||||||
|
.content h2 {
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
.content h3 {
|
||||||
|
font-size: 1.25em;
|
||||||
|
}
|
||||||
|
.content h4 {
|
||||||
|
font-size: 1.125em;
|
||||||
|
}
|
||||||
|
.content h5 {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
.content blockquote footer strong + cite {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
/* ---------------------------------
|
||||||
|
* Fix code highlight
|
||||||
|
* --------------------------------- */
|
||||||
|
figure.highlight {
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
margin: 1em 0 1em !important;
|
||||||
|
}
|
||||||
|
figure.highlight.folded .highlight-body {
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
figure.highlight pre,
|
||||||
|
figure.highlight table tr:hover {
|
||||||
|
color: inherit;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
figure.highlight table {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
figure.highlight pre {
|
||||||
|
padding: 0;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
figure.highlight pre .line {
|
||||||
|
line-height: 1.5rem;
|
||||||
|
}
|
||||||
|
figure.highlight figcaption,
|
||||||
|
figure.highlight .gutter {
|
||||||
|
background: rgba(200,200,200,0.15);
|
||||||
|
}
|
||||||
|
figure.highlight figcaption {
|
||||||
|
padding: 0.3em 0.75em;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
figure.highlight figcaption:after {
|
||||||
|
clear: both;
|
||||||
|
content: " ";
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
figure.highlight figcaption span {
|
||||||
|
font-weight: 500;
|
||||||
|
font-family: "Source Code Pro", monospace, "Microsoft YaHei";
|
||||||
|
}
|
||||||
|
figure.highlight figcaption .fold,
|
||||||
|
figure.highlight figcaption a {
|
||||||
|
color: #9a9a9a;
|
||||||
|
}
|
||||||
|
figure.highlight figcaption a {
|
||||||
|
float: right;
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
figure.highlight figcaption .fold {
|
||||||
|
margin-right: 0.5em;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
figure.highlight .highlight-body {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
figure.highlight .gutter {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
figure.highlight .tag,
|
||||||
|
figure.highlight .title,
|
||||||
|
figure.highlight .number,
|
||||||
|
figure.highlight .section {
|
||||||
|
display: inherit;
|
||||||
|
font: inherit;
|
||||||
|
margin: inherit;
|
||||||
|
padding: inherit;
|
||||||
|
background: inherit;
|
||||||
|
height: inherit;
|
||||||
|
text-align: inherit;
|
||||||
|
vertical-align: inherit;
|
||||||
|
min-width: inherit;
|
||||||
|
border-radius: inherit;
|
||||||
|
}
|
||||||
|
/* ---------------------------------
|
||||||
|
* Overflow Table
|
||||||
|
* --------------------------------- */
|
||||||
|
.table-overflow {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
.table-overflow table {
|
||||||
|
width: auto !important;
|
||||||
|
}
|
||||||
|
.table-overflow table th {
|
||||||
|
word-break: keep-all;
|
||||||
|
}
|
||||||
|
/* ---------------------------------
|
||||||
|
* Fix Video
|
||||||
|
* --------------------------------- */
|
||||||
|
.video-container {
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 56.25%;
|
||||||
|
padding-top: 25px;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
.video-container iframe {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
/* ---------------------------------
|
||||||
|
* Fix Gist Snippet
|
||||||
|
* --------------------------------- */
|
||||||
|
.gist table tr:hover {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.gist table td {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.gist .file {
|
||||||
|
all: initial;
|
||||||
|
}
|
||||||
|
.post-article {
|
||||||
|
iframe: 400px;
|
||||||
|
}
|
|
@ -0,0 +1,513 @@
|
||||||
|
family-sans = "Ubuntu", "Roboto", "Open Sans", "Microsoft YaHei", sans-serif
|
||||||
|
family-mono = "Source Code Pro", monospace, "Microsoft YaHei"
|
||||||
|
gap = 64px
|
||||||
|
screen-tablet = 769px
|
||||||
|
screen-desktop = 1088px
|
||||||
|
screen-widescreen = 1280px
|
||||||
|
screen-fullhd = 1472px
|
||||||
|
|
||||||
|
/* ---------------------------------
|
||||||
|
* Override CSS Framework
|
||||||
|
* --------------------------------- */
|
||||||
|
html
|
||||||
|
font-size: 14px
|
||||||
|
|
||||||
|
body
|
||||||
|
background-color: #f7f7f7
|
||||||
|
|
||||||
|
.section
|
||||||
|
padding: 2rem 1.5rem
|
||||||
|
|
||||||
|
body, button, input, select, textarea
|
||||||
|
font-family: family-sans
|
||||||
|
|
||||||
|
@media screen and (min-width: screen-widescreen)
|
||||||
|
.is-1-column .container
|
||||||
|
.is-2-column .container
|
||||||
|
max-width: screen-desktop - 2 * gap
|
||||||
|
width: screen-desktop - 2 * gap
|
||||||
|
@media screen and (min-width: screen-fullhd)
|
||||||
|
.is-2-column .container
|
||||||
|
max-width: screen-widescreen - 2 * gap
|
||||||
|
width: screen-widescreen - 2 * gap
|
||||||
|
.is-1-column .container
|
||||||
|
max-width: screen-desktop - 2 * gap
|
||||||
|
width: screen-desktop - 2 * gap
|
||||||
|
|
||||||
|
@media screen and (max-width: screen-tablet - 1)
|
||||||
|
.section
|
||||||
|
padding: 1.5rem 1rem
|
||||||
|
|
||||||
|
@media screen and (min-width: screen-tablet)
|
||||||
|
.column-main,
|
||||||
|
.column-left,
|
||||||
|
.column-right,
|
||||||
|
.column-right-shadow
|
||||||
|
&.is-sticky
|
||||||
|
align-self: flex-start
|
||||||
|
position: -webkit-sticky
|
||||||
|
position: sticky
|
||||||
|
top: .75rem
|
||||||
|
.column-right-shadow
|
||||||
|
&.is-sticky
|
||||||
|
top: 1.5rem
|
||||||
|
|
||||||
|
.tag
|
||||||
|
&.is-grey
|
||||||
|
background: #e7e7e7
|
||||||
|
|
||||||
|
//.card:hover
|
||||||
|
// .card-image
|
||||||
|
// img
|
||||||
|
// transform: scale(1.03);
|
||||||
|
.card
|
||||||
|
border-radius: 2px
|
||||||
|
//box-shadow: 0 4px 10px rgba(0,0,0,0.05), 0 0 1px rgba(0,0,0,0.1)
|
||||||
|
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05)
|
||||||
|
display: flex;
|
||||||
|
& + .card,
|
||||||
|
& + .column-right-shadow
|
||||||
|
margin-top: 1.5rem
|
||||||
|
&.card-transparent
|
||||||
|
box-shadow: none
|
||||||
|
background: transparent
|
||||||
|
.card-image
|
||||||
|
//overflow: hidden
|
||||||
|
border-top-left-radius: 4px
|
||||||
|
border-top-right-radius: 4px
|
||||||
|
flex: 8
|
||||||
|
img
|
||||||
|
//height: 80%
|
||||||
|
max-height 150px
|
||||||
|
top: 50%
|
||||||
|
transform: translateX(-5%) translateY(-50%)
|
||||||
|
position: relative
|
||||||
|
border-radius: 2px
|
||||||
|
box-shadow: 3px 4px 12px 0 rgba(0, 0, 0, .2)
|
||||||
|
.card-content
|
||||||
|
flex: 12
|
||||||
|
padding: 1rem
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
img.thumbnail
|
||||||
|
object-fit: cover
|
||||||
|
width: 100%
|
||||||
|
height: 100%
|
||||||
|
box-shadow: 3px 4px 12px 0 rgba(0,0,0,0.2)
|
||||||
|
border-radius: 2px
|
||||||
|
|
||||||
|
.navbar-logo,
|
||||||
|
.footer-logo
|
||||||
|
img
|
||||||
|
max-height: 1.75rem
|
||||||
|
|
||||||
|
.navbar-main
|
||||||
|
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05)
|
||||||
|
.navbar-menu,
|
||||||
|
.navbar-start,
|
||||||
|
.navbar-end
|
||||||
|
align-items: stretch
|
||||||
|
display: flex
|
||||||
|
padding: 0
|
||||||
|
flex-shrink: 0
|
||||||
|
.navbar-menu
|
||||||
|
flex-grow: 1
|
||||||
|
flex-shrink: 0
|
||||||
|
.navbar-start
|
||||||
|
justify-content: flex-start
|
||||||
|
margin-right: auto
|
||||||
|
font-size:15px
|
||||||
|
.navbar-end
|
||||||
|
justify-content: flex-end
|
||||||
|
margin-left: auto
|
||||||
|
.navbar-item
|
||||||
|
display: flex
|
||||||
|
align-items: center
|
||||||
|
padding: 1.25rem 0.75rem
|
||||||
|
padding-right: 1.5rem
|
||||||
|
&.is-active
|
||||||
|
color: hsl(217, 71%, 53%)
|
||||||
|
background-color: transparent
|
||||||
|
//&.is-active:after
|
||||||
|
// content: '*';
|
||||||
|
// position: absolute;
|
||||||
|
// top: 40px;
|
||||||
|
// left: 20px;
|
||||||
|
.navbar-dropdown
|
||||||
|
border-radius: 2px
|
||||||
|
box-shadow 0 8px 8px rgba(10,10,10,.1)
|
||||||
|
font-weight: 500
|
||||||
|
.sub-menu {
|
||||||
|
color: #4a4a4a
|
||||||
|
}
|
||||||
|
.sub-menu:after
|
||||||
|
content '\2022'
|
||||||
|
position absolute
|
||||||
|
color: #3273dc
|
||||||
|
|
||||||
|
@media screen and (max-width: screen-desktop - 1)
|
||||||
|
.navbar-menu
|
||||||
|
justify-content: center
|
||||||
|
box-shadow: none
|
||||||
|
.navbar-start
|
||||||
|
margin-right: 0
|
||||||
|
.navbar-end
|
||||||
|
margin-left: 0
|
||||||
|
|
||||||
|
.footer
|
||||||
|
background: white
|
||||||
|
.field
|
||||||
|
.button
|
||||||
|
background: transparent
|
||||||
|
|
||||||
|
.widget
|
||||||
|
.media
|
||||||
|
border: none
|
||||||
|
.media + .media
|
||||||
|
margin-top: 0
|
||||||
|
.menu-list li ul
|
||||||
|
margin-right: 0
|
||||||
|
.menu-list a.level
|
||||||
|
display: flex
|
||||||
|
|
||||||
|
.pagination
|
||||||
|
width: 100%
|
||||||
|
.pagination-link:not(.is-current), .pagination-previous, .pagination-next
|
||||||
|
background: white
|
||||||
|
border: none
|
||||||
|
.pagination-link, .pagination-previous, .pagination-next
|
||||||
|
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05)
|
||||||
|
|
||||||
|
.post-navigation
|
||||||
|
//justify-content: space-around
|
||||||
|
width 100%
|
||||||
|
.level-item
|
||||||
|
margin-bottom: 0
|
||||||
|
|
||||||
|
.timeline
|
||||||
|
margin-left: 1rem
|
||||||
|
padding-left: 1.5rem
|
||||||
|
padding-top: 1rem
|
||||||
|
border-left: 1px solid hsl(0, 0%, 86%)
|
||||||
|
.media
|
||||||
|
position: relative
|
||||||
|
&:before,
|
||||||
|
&:last-child:after
|
||||||
|
content: ''
|
||||||
|
display: block
|
||||||
|
position: absolute
|
||||||
|
left: calc(-5px - 1.5rem)
|
||||||
|
&:before
|
||||||
|
width: 9px
|
||||||
|
height: 9px
|
||||||
|
top: 1.3rem
|
||||||
|
background: hsl(0, 0%, 86%)
|
||||||
|
border-radius: 50%
|
||||||
|
&:first-child:before
|
||||||
|
top: 0.3rem
|
||||||
|
&:last-child:after
|
||||||
|
top: calc(1.3rem + 9px)
|
||||||
|
width: 9px
|
||||||
|
bottom: 0
|
||||||
|
background: white
|
||||||
|
&:first-child:last-child:after
|
||||||
|
top: calc(0.3rem + 9px)
|
||||||
|
|
||||||
|
.article
|
||||||
|
.article-meta
|
||||||
|
margin-bottom: 0.5rem !important
|
||||||
|
.content
|
||||||
|
font-size: 1.1rem
|
||||||
|
blockquote.pullquote
|
||||||
|
float: right
|
||||||
|
max-width: 50%
|
||||||
|
font-size: 1.15rem
|
||||||
|
position: relative
|
||||||
|
a
|
||||||
|
word-wrap: break-word
|
||||||
|
|
||||||
|
.rtl
|
||||||
|
direction: rtl
|
||||||
|
.level
|
||||||
|
&, &.is-mobile
|
||||||
|
.level-item:not(:last-child)
|
||||||
|
margin-left: 0.75rem
|
||||||
|
margin-right: 0
|
||||||
|
|
||||||
|
.donate
|
||||||
|
position: relative
|
||||||
|
.qrcode
|
||||||
|
display: none
|
||||||
|
position: absolute
|
||||||
|
z-index: 99
|
||||||
|
bottom: 2.5em
|
||||||
|
line-height: 0
|
||||||
|
overflow: hidden
|
||||||
|
border-radius: 2px
|
||||||
|
box-shadow: 0 4px 10px rgba(0,0,0,.1), 0 0 1px rgba(0,0,0,.2)
|
||||||
|
overflow: hidden
|
||||||
|
img
|
||||||
|
max-width: 280px
|
||||||
|
&:hover
|
||||||
|
.qrcode
|
||||||
|
display: block
|
||||||
|
&:first-child:not(:last-child)
|
||||||
|
.qrcode
|
||||||
|
left: -0.75rem
|
||||||
|
&:last-child:not(:first-child)
|
||||||
|
.qrcode
|
||||||
|
right: -0.75rem
|
||||||
|
|
||||||
|
@media screen and (max-width: screen-tablet - 1)
|
||||||
|
#toc
|
||||||
|
display: none
|
||||||
|
position: fixed
|
||||||
|
margin: 1rem
|
||||||
|
left: 0
|
||||||
|
right: 0
|
||||||
|
bottom: 0
|
||||||
|
z-index: 100
|
||||||
|
max-height: calc(100vh - 2rem)
|
||||||
|
overflow-y: auto
|
||||||
|
#toc-mask
|
||||||
|
display: none
|
||||||
|
position: fixed
|
||||||
|
top: 0
|
||||||
|
left: 0
|
||||||
|
right: 0
|
||||||
|
bottom: 0
|
||||||
|
z-index: 99
|
||||||
|
background: rgba(0, 0, 0, 0.7)
|
||||||
|
#toc,
|
||||||
|
#toc-mask
|
||||||
|
&.is-active
|
||||||
|
display: block
|
||||||
|
|
||||||
|
|
||||||
|
/* ---------------------------------
|
||||||
|
* Custom modifiers
|
||||||
|
* --------------------------------- */
|
||||||
|
.is-borderless
|
||||||
|
border: none
|
||||||
|
|
||||||
|
.is-size-7
|
||||||
|
font-size: 0.85rem !important
|
||||||
|
|
||||||
|
.is-7by1
|
||||||
|
padding-top: 42.8%
|
||||||
|
img
|
||||||
|
bottom: 0
|
||||||
|
left: 0
|
||||||
|
position: absolute
|
||||||
|
right: 0
|
||||||
|
top: 0
|
||||||
|
|
||||||
|
.is-overflow-x-auto
|
||||||
|
overflow-x: auto !important
|
||||||
|
|
||||||
|
.is-flex-grow
|
||||||
|
flex-grow: 1 !important
|
||||||
|
|
||||||
|
.is-flex-wrap
|
||||||
|
flex-wrap: wrap !important
|
||||||
|
|
||||||
|
.is-flex-start
|
||||||
|
justify-content: start !important
|
||||||
|
|
||||||
|
.is-flex-center
|
||||||
|
justify-content: center !important
|
||||||
|
|
||||||
|
.is-flex-middle
|
||||||
|
align-items: center !important
|
||||||
|
|
||||||
|
.has-order-1
|
||||||
|
order: 1
|
||||||
|
|
||||||
|
.has-order-2
|
||||||
|
order: 2
|
||||||
|
|
||||||
|
.has-order-3
|
||||||
|
order: 3
|
||||||
|
|
||||||
|
.has-mr-6
|
||||||
|
margin-right: 0.5em !important
|
||||||
|
|
||||||
|
.has-mb-6
|
||||||
|
margin-bottom: 0.5em !important
|
||||||
|
|
||||||
|
.has-mr-7
|
||||||
|
margin-right: 0.25em !important
|
||||||
|
|
||||||
|
.has-link-grey,
|
||||||
|
.has-link-black-ter
|
||||||
|
transition: 0.2s ease
|
||||||
|
&:hover
|
||||||
|
color: hsl(217, 71%, 53%) !important
|
||||||
|
|
||||||
|
.has-link-grey
|
||||||
|
color: hsl(0, 0%, 48%) !important
|
||||||
|
|
||||||
|
.has-link-black-ter
|
||||||
|
color: hsl(0, 0%, 14%) !important
|
||||||
|
|
||||||
|
@media screen and (max-width: screen-tablet - 1)
|
||||||
|
.has-text-centered-mobile
|
||||||
|
text-align: center !important
|
||||||
|
.is-flex-center-mobile
|
||||||
|
justify-content: center !important
|
||||||
|
.has-mt-5-mobile
|
||||||
|
margin-top: 1em !important
|
||||||
|
|
||||||
|
/* ---------------------------------
|
||||||
|
* Font icon fixes
|
||||||
|
* --------------------------------- */
|
||||||
|
.fa, .fab, .fal, .far, .fas
|
||||||
|
line-height: inherit
|
||||||
|
font-size:17px
|
||||||
|
|
||||||
|
/* ---------------------------------
|
||||||
|
* Fix content elements
|
||||||
|
* --------------------------------- */
|
||||||
|
.content
|
||||||
|
h1, h2, h3, h4, h5, h6
|
||||||
|
font-weight: 400
|
||||||
|
h1
|
||||||
|
font-size: 1.75em
|
||||||
|
h2
|
||||||
|
font-size: 1.5em
|
||||||
|
h3
|
||||||
|
font-size: 1.25em
|
||||||
|
h4
|
||||||
|
font-size: 1.125em
|
||||||
|
h5
|
||||||
|
font-size: 1em
|
||||||
|
//code, pre
|
||||||
|
// font-size: 0.85em
|
||||||
|
// font-family: family-mono
|
||||||
|
//code
|
||||||
|
// color: hsl(348, 100%, 61%)
|
||||||
|
// background: transparent
|
||||||
|
// padding: 0
|
||||||
|
blockquote
|
||||||
|
footer
|
||||||
|
strong + cite
|
||||||
|
margin-left: 0.5em
|
||||||
|
|
||||||
|
/* ---------------------------------
|
||||||
|
* Fix code highlight
|
||||||
|
* --------------------------------- */
|
||||||
|
figure.highlight
|
||||||
|
padding: 0
|
||||||
|
width: 100%
|
||||||
|
position: relative
|
||||||
|
margin: 1em 0 1em !important
|
||||||
|
&.folded
|
||||||
|
.highlight-body
|
||||||
|
height: 0
|
||||||
|
|
||||||
|
pre,
|
||||||
|
table tr:hover
|
||||||
|
color: inherit
|
||||||
|
background: transparent
|
||||||
|
|
||||||
|
table
|
||||||
|
width: auto
|
||||||
|
|
||||||
|
pre
|
||||||
|
padding: 0
|
||||||
|
overflow: visible
|
||||||
|
|
||||||
|
.line
|
||||||
|
line-height: 1.5rem
|
||||||
|
|
||||||
|
figcaption,
|
||||||
|
.gutter
|
||||||
|
background: rgba(200, 200, 200, 0.15)
|
||||||
|
|
||||||
|
figcaption
|
||||||
|
padding: .3em .75em
|
||||||
|
text-align: left
|
||||||
|
font-style: normal
|
||||||
|
font-size: .8em
|
||||||
|
&:after
|
||||||
|
clear: both
|
||||||
|
content: " "
|
||||||
|
display: table
|
||||||
|
|
||||||
|
span
|
||||||
|
font-weight: 500
|
||||||
|
font-family: family-mono
|
||||||
|
|
||||||
|
.fold
|
||||||
|
a
|
||||||
|
color: #9a9a9a
|
||||||
|
|
||||||
|
a
|
||||||
|
float: right
|
||||||
|
margin-left: 0.5em
|
||||||
|
|
||||||
|
.fold
|
||||||
|
margin-right: 0.5em
|
||||||
|
cursor: pointer
|
||||||
|
|
||||||
|
.highlight-body
|
||||||
|
overflow: auto
|
||||||
|
|
||||||
|
.gutter
|
||||||
|
text-align: right
|
||||||
|
|
||||||
|
.tag,
|
||||||
|
.title,
|
||||||
|
.number,
|
||||||
|
.section
|
||||||
|
display: inherit
|
||||||
|
font: inherit
|
||||||
|
margin: inherit
|
||||||
|
padding: inherit
|
||||||
|
background: inherit
|
||||||
|
height: inherit
|
||||||
|
text-align: inherit
|
||||||
|
vertical-align: inherit
|
||||||
|
min-width: inherit
|
||||||
|
border-radius: inherit
|
||||||
|
|
||||||
|
/* ---------------------------------
|
||||||
|
* Overflow Table
|
||||||
|
* --------------------------------- */
|
||||||
|
.table-overflow
|
||||||
|
overflow-x: auto
|
||||||
|
table
|
||||||
|
width: auto!important
|
||||||
|
th
|
||||||
|
word-break: keep-all
|
||||||
|
|
||||||
|
/* ---------------------------------
|
||||||
|
* Fix Video
|
||||||
|
* --------------------------------- */
|
||||||
|
.video-container
|
||||||
|
position: relative
|
||||||
|
padding-bottom: 56.25%
|
||||||
|
padding-top: 25px
|
||||||
|
height: 0
|
||||||
|
iframe
|
||||||
|
position: absolute
|
||||||
|
top: 0
|
||||||
|
left: 0
|
||||||
|
width: 100%
|
||||||
|
height: 100%
|
||||||
|
|
||||||
|
/* ---------------------------------
|
||||||
|
* Fix Gist Snippet
|
||||||
|
* --------------------------------- */
|
||||||
|
.gist
|
||||||
|
table
|
||||||
|
tr:hover
|
||||||
|
background: transparent
|
||||||
|
td
|
||||||
|
border: none
|
||||||
|
.file
|
||||||
|
all: initial
|
||||||
|
|
||||||
|
.post-article
|
||||||
|
iframe: 400px
|
|
@ -0,0 +1,250 @@
|
||||||
|
/*@import url("https://fonts.googleapis.com/css?family=Fira+Sans:400,500,600,700,800");*/
|
||||||
|
.blog-slider {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
margin: auto;
|
||||||
|
background: #fff;
|
||||||
|
padding: 25px;
|
||||||
|
border-radius: 2px;
|
||||||
|
height: 250px;
|
||||||
|
transition: all .3s;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 992px) {
|
||||||
|
.blog-slider {
|
||||||
|
max-width: 680px;
|
||||||
|
height: 400px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 769px) {
|
||||||
|
.blog-slider {
|
||||||
|
/*min-height: 500px;*/
|
||||||
|
height: auto;
|
||||||
|
/*margin: 80px auto;*/
|
||||||
|
margin-top: 80px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-height: 500px) and (min-width: 992px) {
|
||||||
|
.blog-slider {
|
||||||
|
height: 350px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.blog-slider__item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.blog-slider__item {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__img img {
|
||||||
|
opacity: 1;
|
||||||
|
transition-delay: .3s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > * {
|
||||||
|
opacity: 1;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(1) {
|
||||||
|
transition-delay: 0.3s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(2) {
|
||||||
|
transition-delay: 0.4s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(3) {
|
||||||
|
transition-delay: 0.5s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(4) {
|
||||||
|
transition-delay: 0.6s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(5) {
|
||||||
|
transition-delay: 0.7s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(6) {
|
||||||
|
transition-delay: 0.8s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(7) {
|
||||||
|
transition-delay: 0.9s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(8) {
|
||||||
|
transition-delay: 1s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(9) {
|
||||||
|
transition-delay: 1.1s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(10) {
|
||||||
|
transition-delay: 1.2s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(11) {
|
||||||
|
transition-delay: 1.3s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(12) {
|
||||||
|
transition-delay: 1.4s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(13) {
|
||||||
|
transition-delay: 1.5s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(14) {
|
||||||
|
transition-delay: 1.6s;
|
||||||
|
}
|
||||||
|
.blog-slider__item.swiper-slide-active .blog-slider__content > *:nth-child(15) {
|
||||||
|
transition-delay: 1.7s;
|
||||||
|
}
|
||||||
|
.blog-slider__img {
|
||||||
|
width: 300px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
height: 200px;
|
||||||
|
background-image: linear-gradient(147deg, #fffcf9, #cde8f6);
|
||||||
|
box-shadow: 3px 4px 12px 0 rgba(0,0,0,0.2);
|
||||||
|
border-radius: 2px;
|
||||||
|
transform: translateX(-40px);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.blog-slider__img:after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
/*background-image: linear-gradient(147deg, #fff9fb 0%, #fd3838 74%);*/
|
||||||
|
border-radius: 2px;
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
.blog-slider__img img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
display: block;
|
||||||
|
opacity: 0;
|
||||||
|
border-radius: 2px;
|
||||||
|
transition: all .3s;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.blog-slider__img {
|
||||||
|
transform: translateY(-50%);
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 576px) {
|
||||||
|
.blog-slider__img {
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-height: 500px) and (min-width: 992px) {
|
||||||
|
.blog-slider__img {
|
||||||
|
height: 270px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.blog-slider__content {
|
||||||
|
padding-right: 25px;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.blog-slider__content {
|
||||||
|
margin-top: -80px;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 576px) {
|
||||||
|
.blog-slider__content {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.blog-slider__content > * {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(25px);
|
||||||
|
transition: all .4s;
|
||||||
|
}
|
||||||
|
.blog-slider__code {
|
||||||
|
color: #7b7992;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
display: block;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
.blog-slider__title {
|
||||||
|
/*color: #0d0925;*/
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.blog-slider__text {
|
||||||
|
color: #4e4a67;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
.blog-slider__button {
|
||||||
|
display: inline-flex;
|
||||||
|
background-image: linear-gradient(149deg, #6c2bfe, #7e8dfd 49.58%);
|
||||||
|
padding: 8px 25px;
|
||||||
|
border-radius: 2px;
|
||||||
|
color: #fff;
|
||||||
|
box-shadow: 3px 4px 12px 0 rgba(0,0,0,0.2);
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: 500;
|
||||||
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 576px) {
|
||||||
|
.blog-slider__button {
|
||||||
|
/*width: 100%;*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.blog-slider .swiper-container-horizontal > .swiper-pagination-bullets, .blog-slider .swiper-pagination-custom, .blog-slider .swiper-pagination-fraction {
|
||||||
|
bottom: 10px;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.blog-slider__pagination {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 21;
|
||||||
|
right: 20px;
|
||||||
|
width: 11px !important;
|
||||||
|
text-align: center;
|
||||||
|
left: auto !important;
|
||||||
|
top: 50%;
|
||||||
|
bottom: auto !important;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.blog-slider__pagination {
|
||||||
|
transform: translateX(-50%);
|
||||||
|
left: 50% !important;
|
||||||
|
top: 205px;
|
||||||
|
width: 100% !important;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.blog-slider__pagination.swiper-pagination-bullets .swiper-pagination-bullet {
|
||||||
|
margin: 8px 0;
|
||||||
|
}
|
||||||
|
.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet {
|
||||||
|
margin: 10px 4px !important;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.blog-slider__pagination.swiper-pagination-bullets .swiper-pagination-bullet {
|
||||||
|
margin: 0px 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.blog-slider__pagination .swiper-pagination-bullet {
|
||||||
|
width: 11px;
|
||||||
|
height: 11px;
|
||||||
|
display: block;
|
||||||
|
border-radius: 10px;
|
||||||
|
background: #062744;
|
||||||
|
opacity: 0.2;
|
||||||
|
transition: all .3s;
|
||||||
|
}
|
||||||
|
.blog-slider__pagination .swiper-pagination-bullet-active {
|
||||||
|
opacity: 1;
|
||||||
|
background: linear-gradient(149deg, #6c2bfe, #7e8dfd 49.58%);
|
||||||
|
height: 30px;
|
||||||
|
box-shadow: 0px 0px 20px rgba(126, 141, 253, 0.3);
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.blog-slider__pagination .swiper-pagination-bullet-active {
|
||||||
|
height: 11px;
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
|
@ -0,0 +1,6 @@
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg" version="1.1" width="256" height="256" viewbox="0 0 949 256">
|
||||||
|
<path fill="#2366d1" d="M110.85125168440814 128L221.70250336881628 192L110.85125168440814 256L0 192Z"/>
|
||||||
|
<path fill="#609dff" d="M110.85125168440814 64L221.70250336881628 128L110.85125168440814 192L0 128Z"/>
|
||||||
|
<path fill="#a4c7ff" d="M110.85125168440814 0L221.70250336881628 64L110.85125168440814 128L0 64Z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 431 B |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 9.3 KiB |
Binary file not shown.
After Width: | Height: | Size: 56 KiB |
|
@ -0,0 +1,9 @@
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" fill="#ccc">
|
||||||
|
<rect width="100%" height="100%" fill="#f2f2f2"/>
|
||||||
|
<path d="M39 38H11c-1.7 0-3-1.3-3-3V17c0-1.7 1.3-3 3-3h6c.2 0 .5-.2.6-.3l1.1-2.2c.4-.8 1.4-1.4 2.3-1.4h8c.9 0 1.9.6 2.3 1.4l1.1 2.2c.1.2.4.3.6.3h6c1.7 0 3 1.3 3 3v18c0 1.7-1.3 3-3 3zM11 16c-.6 0-1 .4-1 1v18c0 .6.4 1 1 1h28c.6 0 1-.4 1-1V17c0-.6-.4-1-1-1h-6c-.9 0-1.9-.6-2.3-1.4l-1.1-2.2c-.1-.2-.4-.4-.6-.4h-8c-.2 0-.5.2-.6.3l-1.1 2.2c-.4.9-1.4 1.5-2.3 1.5h-6z"/>
|
||||||
|
<path d="M25 34c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9zm0-16c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z"/>
|
||||||
|
<circle cx="35" cy="18" r="1"/>
|
||||||
|
<path d="M12 12h4v1h-4z"/>
|
||||||
|
<path d="M25 21v-1c-2.8 0-5 2.2-5 5h1c0-2.2 1.8-4 4-4z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 747 B |
|
@ -0,0 +1,41 @@
|
||||||
|
(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++;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})();
|
|
@ -0,0 +1,156 @@
|
||||||
|
$(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() < lastScrollTop && $(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() {
|
||||||
|
// desktop mode or tablet mode with only right sidebar enabled
|
||||||
|
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() < getRightSidebarBottom() + padding + getButtonHeight()) {
|
||||||
|
nextState = state['desktop-hidden'];
|
||||||
|
} else if (getScrollBottom() < maxBottom) {
|
||||||
|
nextState = state['desktop-visible'];
|
||||||
|
} else {
|
||||||
|
nextState = Object.assign({}, state['desktop-dock'], {
|
||||||
|
bottom: getScrollBottom() - maxBottom + bottomMargin
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var left = $mainColumn.offset().left + $mainColumn.outerWidth() + padding;
|
||||||
|
nextState = Object.assign({}, nextState, {
|
||||||
|
left: Math.min(left, maxLeft)
|
||||||
|
});
|
||||||
|
applyState(nextState);
|
||||||
|
} else {
|
||||||
|
// mobile and tablet mode
|
||||||
|
if (!isScrollUp()) {
|
||||||
|
applyState(state['mobile-hidden']);
|
||||||
|
} else {
|
||||||
|
applyState(state['mobile-visible']);
|
||||||
|
}
|
||||||
|
updateScrollTop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
update();
|
||||||
|
$(window).resize(update);
|
||||||
|
$(window).scroll(update);
|
||||||
|
|
||||||
|
$('#back-to-top').on('click', function () {
|
||||||
|
$('body, html').animate({ scrollTop: 0 }, 400);
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,11 @@
|
||||||
|
// main.js
|
||||||
|
(function($){$('.article img:not(".not-gallery-item")').each(function(){if($(this).parent("a").length===0){$(this).wrap('<a class="gallery-item" href="'+$(this).attr("src")+'"></a>');if(this.alt){$(this).after('<div class="has-text-centered is-size-6 has-text-grey caption">'+this.alt+"</div>")}}});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('<div class="table-overflow"></div>')}});function adjustNavbar(){const navbarWidth=$(".navbar-main .navbar-start").outerWidth()+$(".navbar-main .navbar-end").outerWidth();if($(document).outerWidth()<navbarWidth){$(".navbar-main .navbar-menu").addClass("is-flex-start")}else{$(".navbar-main .navbar-menu").removeClass("is-flex-start")}}adjustNavbar();$(window).resize(adjustNavbar);$("figure.highlight table").wrap('<div class="highlight-body">');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='<a href="javascript:;" class="copy" title="Copy" data-clipboard-target="#'+id+' .code"><i class="fas fa-copy"></i></a>';$(this).attr("id",id);if($(this).find("figcaption").length){$(this).find("figcaption").prepend(button)}else{$(this).prepend("<figcaption>"+button+"</figcaption>")}});new ClipboardJS(".highlight .copy")}var fold=IcarusThemeSettings.article.highlight.fold;if(fold.trim()){var button='<span class="fold">'+(fold==="unfolded"?'<i class="fas fa-angle-down"></i>':'<i class="fas fa-angle-right"></i>')+"</span>";$("figure.highlight").each(function(){if($(this).find("figcaption").length){$(this).find("figcaption").prepend(button)}else{$(this).prepend("<figcaption>"+button+"</figcaption>")}});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=$("<div>");$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);
|
||||||
|
|
||||||
|
// animation.js
|
||||||
|
(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++})})})})();
|
||||||
|
|
||||||
|
// back-to-top.js
|
||||||
|
$(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()<lastScrollTop&&$(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()<getRightSidebarBottom()+padding+getButtonHeight()){nextState=state['desktop-hidden']}else if(getScrollBottom()<maxBottom){nextState=state['desktop-visible']}else{nextState=Object.assign({},state['desktop-dock'],{bottom:getScrollBottom()-maxBottom+bottomMargin})}var left=$mainColumn.offset().left+$mainColumn.outerWidth()+padding;nextState=Object.assign({},nextState,{left:Math.min(left,maxLeft)});applyState(nextState)}else{if(!isScrollUp()){applyState(state['mobile-hidden'])}else{applyState(state['mobile-visible'])}updateScrollTop()}}update();$(window).resize(update);$(window).scroll(update);$('#back-to-top').on('click',function(){$('body, html').animate({scrollTop:0},400)})});
|
||||||
|
|
||||||
|
// gallery.js
|
||||||
|
document.addEventListener('DOMContentLoaded',function(){if(typeof($.fn.lightGallery)==='function'){$('.article').lightGallery({selector:'.gallery-item'})}if(typeof($.fn.justifiedGallery)==='function'){if($('.justified-gallery > p > .gallery-item').length){$('.justified-gallery > p > .gallery-item').unwrap()}$('.justified-gallery').justifiedGallery()}});
|
|
@ -0,0 +1,11 @@
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
if (typeof ($.fn.lightGallery) === 'function') {
|
||||||
|
$('.article').lightGallery({ selector: '.gallery-item' });
|
||||||
|
}
|
||||||
|
if (typeof ($.fn.justifiedGallery) === 'function') {
|
||||||
|
if ($('.justified-gallery > p > .gallery-item').length) {
|
||||||
|
$('.justified-gallery > p > .gallery-item').unwrap();
|
||||||
|
}
|
||||||
|
$('.justified-gallery').justifiedGallery();
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1,97 @@
|
||||||
|
(function ($) {
|
||||||
|
alert();
|
||||||
|
$('.article img:not(".not-gallery-item")').each(function () {
|
||||||
|
// wrap images with link and add caption if possible
|
||||||
|
if ($(this).parent('a').length === 0) {
|
||||||
|
$(this).wrap('<a class="gallery-item" href="' + $(this).attr('src') + '"></a>');
|
||||||
|
if (this.alt) {
|
||||||
|
$(this).after('<div class="has-text-centered is-size-6 has-text-grey caption">' + this.alt + '</div>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
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('<div class="table-overflow"></div>');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function adjustNavbar() {
|
||||||
|
const navbarWidth = $('.navbar-main .navbar-start').outerWidth() + $('.navbar-main .navbar-end').outerWidth();
|
||||||
|
if ($(document).outerWidth() < navbarWidth) {
|
||||||
|
$('.navbar-main .navbar-menu').addClass('is-flex-start');
|
||||||
|
} else {
|
||||||
|
$('.navbar-main .navbar-menu').removeClass('is-flex-start');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
adjustNavbar();
|
||||||
|
$(window).resize(adjustNavbar);
|
||||||
|
|
||||||
|
$('figure.highlight table').wrap('<div class="highlight-body">');
|
||||||
|
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 = '<a href="javascript:;" class="copy" title="Copy" data-clipboard-target="#' + id + ' .code"><i class="fas fa-copy"></i></a>';
|
||||||
|
$(this).attr('id', id);
|
||||||
|
if ($(this).find('figcaption').length) {
|
||||||
|
$(this).find('figcaption').prepend(button);
|
||||||
|
} else {
|
||||||
|
$(this).prepend('<figcaption>' + button + '</figcaption>');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
new ClipboardJS('.highlight .copy');
|
||||||
|
}
|
||||||
|
var fold = IcarusThemeSettings.article.highlight.fold;
|
||||||
|
if (fold.trim()) {
|
||||||
|
var button = '<span class="fold">' + (fold === 'unfolded' ? '<i class="fas fa-angle-down"></i>' : '<i class="fas fa-angle-right"></i>') + '</span>';
|
||||||
|
$('figure.highlight').each(function () {
|
||||||
|
if ($(this).find('figcaption').length) {
|
||||||
|
$(this).find('figcaption').prepend(button);
|
||||||
|
} else {
|
||||||
|
$(this).prepend('<figcaption>' + button + '</figcaption>');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
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 = $('<div>');
|
||||||
|
$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);
|
|
@ -0,0 +1,9 @@
|
||||||
|
var swiper = new Swiper('.blog-slider', {
|
||||||
|
spaceBetween: 30,
|
||||||
|
effect: 'fade',
|
||||||
|
// autoHeight: true,
|
||||||
|
pagination: {
|
||||||
|
el: '.blog-slider__pagination',
|
||||||
|
clickable: true,
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1,228 @@
|
||||||
|
/* PrismJS 1.15.0
|
||||||
|
https://prismjs.com/download.html#themes=prism-coy&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
|
||||||
|
/**
|
||||||
|
* prism.js Coy theme for JavaScript, CoffeeScript, CSS and HTML
|
||||||
|
* Based on https://github.com/tshedor/workshop-wp-theme (Example: http://workshop.kansan.com/category/sessions/basics or http://workshop.timshedor.com/category/sessions/basics);
|
||||||
|
* @author Tim Shedor
|
||||||
|
*/
|
||||||
|
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
color: black;
|
||||||
|
background: none;
|
||||||
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
text-align: left;
|
||||||
|
white-space: pre;
|
||||||
|
word-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
|
||||||
|
-moz-tab-size: 4;
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-moz-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
|
hyphens: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks */
|
||||||
|
pre[class*="language-"] {
|
||||||
|
position: relative;
|
||||||
|
margin: .5em 0;
|
||||||
|
overflow: visible;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
pre[class*="language-"]>code {
|
||||||
|
position: relative;
|
||||||
|
border-left: 10px solid #358ccb;
|
||||||
|
box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
|
||||||
|
background-color: #fdfdfd;
|
||||||
|
background-image: linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
|
||||||
|
background-size: 3em 3em;
|
||||||
|
background-origin: content-box;
|
||||||
|
background-attachment: local;
|
||||||
|
}
|
||||||
|
|
||||||
|
code[class*="language"] {
|
||||||
|
max-height: inherit;
|
||||||
|
height: inherit;
|
||||||
|
padding: 0 1em;
|
||||||
|
display: block;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Margin bottom to accommodate shadow */
|
||||||
|
:not(pre) > code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
background-color: #fdfdfd;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline code */
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
position: relative;
|
||||||
|
padding: .2em;
|
||||||
|
border-radius: 0.3em;
|
||||||
|
color: #c92c2c;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
display: inline;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"]:before,
|
||||||
|
pre[class*="language-"]:after {
|
||||||
|
content: '';
|
||||||
|
z-index: -2;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0.75em;
|
||||||
|
left: 0.18em;
|
||||||
|
width: 40%;
|
||||||
|
height: 20%;
|
||||||
|
max-height: 13em;
|
||||||
|
box-shadow: 0px 13px 8px #979797;
|
||||||
|
-webkit-transform: rotate(-2deg);
|
||||||
|
-moz-transform: rotate(-2deg);
|
||||||
|
-ms-transform: rotate(-2deg);
|
||||||
|
-o-transform: rotate(-2deg);
|
||||||
|
transform: rotate(-2deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(pre) > code[class*="language-"]:after,
|
||||||
|
pre[class*="language-"]:after {
|
||||||
|
right: 0.75em;
|
||||||
|
left: auto;
|
||||||
|
-webkit-transform: rotate(2deg);
|
||||||
|
-moz-transform: rotate(2deg);
|
||||||
|
-ms-transform: rotate(2deg);
|
||||||
|
-o-transform: rotate(2deg);
|
||||||
|
transform: rotate(2deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.block-comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: #7D8B99;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.punctuation {
|
||||||
|
color: #5F6364;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.property,
|
||||||
|
.token.tag,
|
||||||
|
.token.boolean,
|
||||||
|
.token.number,
|
||||||
|
.token.function-name,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol,
|
||||||
|
.token.deleted {
|
||||||
|
color: #c92c2c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.selector,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.function,
|
||||||
|
.token.builtin,
|
||||||
|
.token.inserted {
|
||||||
|
color: #2f9c0a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.operator,
|
||||||
|
.token.entity,
|
||||||
|
.token.url,
|
||||||
|
.token.variable {
|
||||||
|
color: #a67f59;
|
||||||
|
background: rgba(255, 255, 255, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.atrule,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.keyword,
|
||||||
|
.token.class-name {
|
||||||
|
color: #1990b8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.regex,
|
||||||
|
.token.important {
|
||||||
|
color: #e90;
|
||||||
|
}
|
||||||
|
|
||||||
|
.language-css .token.string,
|
||||||
|
.style .token.string {
|
||||||
|
color: #a67f59;
|
||||||
|
background: rgba(255, 255, 255, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.important {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.token.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
|
||||||
|
.namespace {
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
pre[class*="language-"]:before,
|
||||||
|
pre[class*="language-"]:after {
|
||||||
|
bottom: 14px;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Plugin styles */
|
||||||
|
.token.tab:not(:empty):before,
|
||||||
|
.token.cr:before,
|
||||||
|
.token.lf:before {
|
||||||
|
color: #e0d7d1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Plugin styles: Line Numbers */
|
||||||
|
pre[class*="language-"].line-numbers.line-numbers {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"].line-numbers.line-numbers code {
|
||||||
|
padding-left: 3.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"].line-numbers.line-numbers .line-numbers-rows {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Plugin styles: Line Highlight */
|
||||||
|
pre[class*="language-"][data-line] {
|
||||||
|
padding-top: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
pre[data-line] code {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 4em;
|
||||||
|
}
|
||||||
|
pre .line-highlight {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,131 @@
|
||||||
|
/* PrismJS 1.15.0
|
||||||
|
https://prismjs.com/download.html#themes=prism-dark&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
|
||||||
|
/**
|
||||||
|
* prism.js Dark theme for JavaScript, CSS and HTML
|
||||||
|
* Based on the slides of the talk “/Reg(exp){2}lained/”
|
||||||
|
* @author Lea Verou
|
||||||
|
*/
|
||||||
|
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
color: white;
|
||||||
|
background: none;
|
||||||
|
text-shadow: 0 -.1em .2em black;
|
||||||
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
text-align: left;
|
||||||
|
white-space: pre;
|
||||||
|
word-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
|
||||||
|
-moz-tab-size: 4;
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-moz-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
|
hyphens: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"],
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
background: hsl(30, 20%, 25%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks */
|
||||||
|
pre[class*="language-"] {
|
||||||
|
padding: 1em;
|
||||||
|
margin: .5em 0;
|
||||||
|
overflow: auto;
|
||||||
|
border: .3em solid hsl(30, 20%, 40%);
|
||||||
|
border-radius: .5em;
|
||||||
|
box-shadow: 1px 1px .5em black inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline code */
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
padding: .15em .2em .05em;
|
||||||
|
border-radius: .3em;
|
||||||
|
border: .13em solid hsl(30, 20%, 40%);
|
||||||
|
box-shadow: 1px 1px .3em -.1em black inset;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: hsl(30, 20%, 50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.punctuation {
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.namespace {
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.property,
|
||||||
|
.token.tag,
|
||||||
|
.token.boolean,
|
||||||
|
.token.number,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol {
|
||||||
|
color: hsl(350, 40%, 70%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.selector,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.builtin,
|
||||||
|
.token.inserted {
|
||||||
|
color: hsl(75, 70%, 60%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.operator,
|
||||||
|
.token.entity,
|
||||||
|
.token.url,
|
||||||
|
.language-css .token.string,
|
||||||
|
.style .token.string,
|
||||||
|
.token.variable {
|
||||||
|
color: hsl(40, 90%, 60%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.atrule,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.keyword {
|
||||||
|
color: hsl(350, 40%, 70%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.regex,
|
||||||
|
.token.important {
|
||||||
|
color: #e90;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.important,
|
||||||
|
.token.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.token.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.deleted {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,255 @@
|
||||||
|
/* PrismJS 1.17.1
|
||||||
|
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+abap+abnf+actionscript+ada+apacheconf+apl+applescript+aql+c+arff+asciidoc+asm6502+csharp+autohotkey+autoit+bash+basic+batch+bison+bnf+brainfuck+bro+cpp+aspnet+arduino+cil+coffeescript+cmake+clojure+ruby+csp+css-extras+d+dart+diff+markup-templating+dns-zone-file+docker+ebnf+eiffel+ejs+elixir+elm+erb+erlang+fsharp+firestore-security-rules+flow+fortran+gcode+gdscript+gedcom+gherkin+git+glsl+gml+go+graphql+groovy+less+handlebars+haskell+haxe+hcl+http+hpkp+hsts+ichigojam+icon+inform7+ini+io+j+java+scala+php+javastacktrace+jolie+jq+javadoclike+n4js+markdown+json+jsonp+json5+julia+keyman+kotlin+latex+crystal+scheme+liquid+lisp+livescript+lolcode+lua+makefile+js-templates+django+matlab+mel+mizar+monkey+n1ql+typescript+nand2tetris-hdl+nasm+nginx+nim+nix+nsis+objectivec+ocaml+opencl+oz+parigp+parser+pascal+pascaligo+pcaxis+perl+jsdoc+phpdoc+php-extras+sql+powershell+processing+prolog+properties+protobuf+scss+puppet+pure+python+q+qore+r+js-extras+jsx+renpy+reason+vala+rest+rip+roboconf+robot-framework+textile+rust+sas+sass+stylus+javadoc+lilypond+shell-session+smalltalk+smarty+solidity+soy+turtle+splunk-spl+plsql+twig+swift+yaml+tcl+haml+toml+tt2+sparql+pug+tsx+t4-templating+visual-basic+t4-cs+regex+vbnet+velocity+verilog+vhdl+vim+t4-vb+wasm+wiki+xeora+xojo+xquery+tap+zig&plugins=line-numbers+toolbar+show-language+copy-to-clipboard */
|
||||||
|
/**
|
||||||
|
* prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
|
||||||
|
* Based on https://github.com/chriskempson/tomorrow-theme
|
||||||
|
* @author Rose Pritchard
|
||||||
|
*/
|
||||||
|
|
||||||
|
pre,
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
color: #ccc;
|
||||||
|
background: none;
|
||||||
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
font-size: .9em;
|
||||||
|
text-align: left;
|
||||||
|
white-space: pre;
|
||||||
|
word-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
-moz-tab-size: 4;
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-moz-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
|
hyphens: none;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks */
|
||||||
|
pre[class*="language-"] {
|
||||||
|
padding: 1em;
|
||||||
|
margin: .5em 0;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*:not(pre) > code[class*="language-"],*/
|
||||||
|
pre,
|
||||||
|
pre[class*="language-"] {
|
||||||
|
background: #2d2d2d;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline code */
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
padding: .1em;
|
||||||
|
border-radius: .3em;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.block-comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.punctuation {
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.tag,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.namespace,
|
||||||
|
.token.deleted {
|
||||||
|
color: #e2777a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.function-name {
|
||||||
|
color: #6196cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.boolean,
|
||||||
|
.token.number,
|
||||||
|
.token.function {
|
||||||
|
color: #f08d49;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.property,
|
||||||
|
.token.class-name,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol {
|
||||||
|
color: #f8c555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.selector,
|
||||||
|
.token.important,
|
||||||
|
.token.atrule,
|
||||||
|
.token.keyword,
|
||||||
|
.token.builtin {
|
||||||
|
color: #cc99cd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.regex,
|
||||||
|
.token.variable {
|
||||||
|
color: #7ec699;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.operator,
|
||||||
|
.token.entity,
|
||||||
|
.token.url {
|
||||||
|
color: #67cdcc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.important,
|
||||||
|
.token.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.token.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.inserted {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"].line-numbers {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 3.8em;
|
||||||
|
counter-reset: linenumber;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"].line-numbers > code {
|
||||||
|
position: relative;
|
||||||
|
white-space: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-numbers .line-numbers-rows {
|
||||||
|
position: absolute;
|
||||||
|
pointer-events: none;
|
||||||
|
top: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
left: -3.8em;
|
||||||
|
width: 3em; /* works for line-numbers below 1000 lines */
|
||||||
|
letter-spacing: -1px;
|
||||||
|
border-right: 1px solid #999;
|
||||||
|
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-numbers-rows > span {
|
||||||
|
pointer-events: none;
|
||||||
|
display: block;
|
||||||
|
counter-increment: linenumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-numbers-rows > span:before {
|
||||||
|
content: counter(linenumber);
|
||||||
|
color: #999;
|
||||||
|
display: block;
|
||||||
|
padding-right: 0.8em;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar {
|
||||||
|
position: absolute;
|
||||||
|
top: .3em;
|
||||||
|
right: .2em;
|
||||||
|
transition: opacity 0.3s ease-in-out;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar:hover > .toolbar {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Separate line b/c rules are thrown out if selector is invalid.
|
||||||
|
IE11 and old Edge versions don't support :focus-within. */
|
||||||
|
div.code-toolbar:focus-within > .toolbar {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar .toolbar-item {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
div.code-toolbar > .toolbar .toolbar-item:not(:first-child){
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar a {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar button {
|
||||||
|
background: none;
|
||||||
|
border: 0;
|
||||||
|
color: inherit;
|
||||||
|
font: inherit;
|
||||||
|
line-height: normal;
|
||||||
|
overflow: visible;
|
||||||
|
padding: 0;
|
||||||
|
-webkit-user-select: none; /* for button */
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar a,
|
||||||
|
div.code-toolbar > .toolbar button,
|
||||||
|
div.code-toolbar > .toolbar span {
|
||||||
|
color: #fff;
|
||||||
|
font-size: .8em;
|
||||||
|
padding: .5em 1em;
|
||||||
|
background: #f5f2f0;
|
||||||
|
background: rgba(224, 224, 224, 0.2);
|
||||||
|
box-shadow: 0 2px 0 0 rgba(0,0,0,0.2);
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
div.code-toolbar > .toolbar a:not(:first-child),
|
||||||
|
div.code-toolbar > .toolbar button:not(:first-child),
|
||||||
|
div.code-toolbar > .toolbar span:not(:first-child) {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar a:hover,
|
||||||
|
div.code-toolbar > .toolbar a:focus,
|
||||||
|
div.code-toolbar > .toolbar button:hover,
|
||||||
|
div.code-toolbar > .toolbar button:focus,
|
||||||
|
div.code-toolbar > .toolbar span:hover,
|
||||||
|
div.code-toolbar > .toolbar span:focus {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.language-html .tag {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
color: #3273dc;
|
||||||
|
font-size: .875em;
|
||||||
|
font-weight: 400;
|
||||||
|
padding: .25em .5em .25em;
|
||||||
|
}
|
|
@ -0,0 +1,125 @@
|
||||||
|
/* PrismJS 1.15.0
|
||||||
|
https://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
|
||||||
|
/**
|
||||||
|
* okaidia theme for JavaScript, CSS and HTML
|
||||||
|
* Loosely based on Monokai textmate theme by http://www.monokai.nl/
|
||||||
|
* @author ocodia
|
||||||
|
*/
|
||||||
|
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
color: #f8f8f2;
|
||||||
|
background: none;
|
||||||
|
text-shadow: 0 1px rgba(0, 0, 0, 0.3);
|
||||||
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
text-align: left;
|
||||||
|
white-space: pre;
|
||||||
|
word-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
|
||||||
|
-moz-tab-size: 4;
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-moz-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
|
hyphens: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks */
|
||||||
|
pre[class*="language-"] {
|
||||||
|
padding: 1em;
|
||||||
|
margin: .5em 0;
|
||||||
|
overflow: auto;
|
||||||
|
border-radius: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(pre) > code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
background: #272822;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline code */
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
padding: .1em;
|
||||||
|
border-radius: .3em;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: slategray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.punctuation {
|
||||||
|
color: #f8f8f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.namespace {
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.property,
|
||||||
|
.token.tag,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol,
|
||||||
|
.token.deleted {
|
||||||
|
color: #f92672;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.boolean,
|
||||||
|
.token.number {
|
||||||
|
color: #ae81ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.selector,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.builtin,
|
||||||
|
.token.inserted {
|
||||||
|
color: #a6e22e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.operator,
|
||||||
|
.token.entity,
|
||||||
|
.token.url,
|
||||||
|
.language-css .token.string,
|
||||||
|
.style .token.string,
|
||||||
|
.token.variable {
|
||||||
|
color: #f8f8f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.atrule,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.function,
|
||||||
|
.token.class-name {
|
||||||
|
color: #e6db74;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.keyword {
|
||||||
|
color: #66d9ef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.regex,
|
||||||
|
.token.important {
|
||||||
|
color: #fd971f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.important,
|
||||||
|
.token.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.token.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,152 @@
|
||||||
|
/* PrismJS 1.15.0
|
||||||
|
https://prismjs.com/download.html#themes=prism-solarizedlight&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
|
||||||
|
/*
|
||||||
|
Solarized Color Schemes originally by Ethan Schoonover
|
||||||
|
http://ethanschoonover.com/solarized
|
||||||
|
|
||||||
|
Ported for PrismJS by Hector Matos
|
||||||
|
Website: https://krakendev.io
|
||||||
|
Twitter Handle: https://twitter.com/allonsykraken)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
SOLARIZED HEX
|
||||||
|
--------- -------
|
||||||
|
base03 #002b36
|
||||||
|
base02 #073642
|
||||||
|
base01 #586e75
|
||||||
|
base00 #657b83
|
||||||
|
base0 #839496
|
||||||
|
base1 #93a1a1
|
||||||
|
base2 #eee8d5
|
||||||
|
base3 #fdf6e3
|
||||||
|
yellow #b58900
|
||||||
|
orange #cb4b16
|
||||||
|
red #dc322f
|
||||||
|
magenta #d33682
|
||||||
|
violet #6c71c4
|
||||||
|
blue #268bd2
|
||||||
|
cyan #2aa198
|
||||||
|
green #859900
|
||||||
|
*/
|
||||||
|
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
color: #657b83; /* base00 */
|
||||||
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
text-align: left;
|
||||||
|
white-space: pre;
|
||||||
|
word-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
|
||||||
|
line-height: 1.5;
|
||||||
|
|
||||||
|
-moz-tab-size: 4;
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-moz-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
|
hyphens: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
|
||||||
|
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
|
||||||
|
background: #073642; /* base02 */
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
|
||||||
|
code[class*="language-"]::selection, code[class*="language-"] ::selection {
|
||||||
|
background: #073642; /* base02 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks */
|
||||||
|
pre[class*="language-"] {
|
||||||
|
padding: 1em;
|
||||||
|
margin: .5em 0;
|
||||||
|
overflow: auto;
|
||||||
|
border-radius: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(pre) > code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
background-color: #fdf6e3; /* base3 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline code */
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
padding: .1em;
|
||||||
|
border-radius: .3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: #93a1a1; /* base1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.punctuation {
|
||||||
|
color: #586e75; /* base01 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.namespace {
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.property,
|
||||||
|
.token.tag,
|
||||||
|
.token.boolean,
|
||||||
|
.token.number,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol,
|
||||||
|
.token.deleted {
|
||||||
|
color: #268bd2; /* blue */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.selector,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.builtin,
|
||||||
|
.token.url,
|
||||||
|
.token.inserted {
|
||||||
|
color: #2aa198; /* cyan */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.entity {
|
||||||
|
color: #657b83; /* base00 */
|
||||||
|
background: #eee8d5; /* base2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.atrule,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.keyword {
|
||||||
|
color: #859900; /* green */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.function,
|
||||||
|
.token.class-name {
|
||||||
|
color: #b58900; /* yellow */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.regex,
|
||||||
|
.token.important,
|
||||||
|
.token.variable {
|
||||||
|
color: #cb4b16; /* orange */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.important,
|
||||||
|
.token.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.token.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
/* PrismJS 1.15.0
|
||||||
|
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
|
||||||
|
/**
|
||||||
|
* prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
|
||||||
|
* Based on https://github.com/chriskempson/tomorrow-theme
|
||||||
|
* @author Rose Pritchard
|
||||||
|
*/
|
||||||
|
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
color: #ccc;
|
||||||
|
background: none;
|
||||||
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
text-align: left;
|
||||||
|
white-space: pre;
|
||||||
|
word-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
|
||||||
|
-moz-tab-size: 4;
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-moz-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
|
hyphens: none;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks */
|
||||||
|
pre[class*="language-"] {
|
||||||
|
padding: 1em;
|
||||||
|
margin: .5em 0;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(pre) > code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
background: #2d2d2d;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline code */
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
padding: .1em;
|
||||||
|
border-radius: .3em;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.block-comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.punctuation {
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.tag,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.namespace,
|
||||||
|
.token.deleted {
|
||||||
|
color: #e2777a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.function-name {
|
||||||
|
color: #6196cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.boolean,
|
||||||
|
.token.number,
|
||||||
|
.token.function {
|
||||||
|
color: #f08d49;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.property,
|
||||||
|
.token.class-name,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol {
|
||||||
|
color: #f8c555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.selector,
|
||||||
|
.token.important,
|
||||||
|
.token.atrule,
|
||||||
|
.token.keyword,
|
||||||
|
.token.builtin {
|
||||||
|
color: #cc99cd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.regex,
|
||||||
|
.token.variable {
|
||||||
|
color: #7ec699;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.operator,
|
||||||
|
.token.entity,
|
||||||
|
.token.url {
|
||||||
|
color: #67cdcc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.important,
|
||||||
|
.token.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.token.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.inserted {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,201 @@
|
||||||
|
/* PrismJS 1.15.0
|
||||||
|
https://prismjs.com/download.html#themes=prism-twilight&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
|
||||||
|
/**
|
||||||
|
* prism.js Twilight theme
|
||||||
|
* Based (more or less) on the Twilight theme originally of Textmate fame.
|
||||||
|
* @author Remy Bach
|
||||||
|
*/
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
color: white;
|
||||||
|
background: none;
|
||||||
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
text-align: left;
|
||||||
|
text-shadow: 0 -.1em .2em black;
|
||||||
|
white-space: pre;
|
||||||
|
word-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
|
||||||
|
-moz-tab-size: 4;
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-moz-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
|
hyphens: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"],
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
background: hsl(0, 0%, 8%); /* #141414 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks */
|
||||||
|
pre[class*="language-"] {
|
||||||
|
border-radius: .5em;
|
||||||
|
border: .3em solid hsl(0, 0%, 33%); /* #282A2B */
|
||||||
|
box-shadow: 1px 1px .5em black inset;
|
||||||
|
margin: .5em 0;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"]::-moz-selection {
|
||||||
|
/* Firefox */
|
||||||
|
background: hsl(200, 4%, 16%); /* #282A2B */
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"]::selection {
|
||||||
|
/* Safari */
|
||||||
|
background: hsl(200, 4%, 16%); /* #282A2B */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text Selection colour */
|
||||||
|
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
|
||||||
|
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
|
||||||
|
text-shadow: none;
|
||||||
|
background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
|
||||||
|
code[class*="language-"]::selection, code[class*="language-"] ::selection {
|
||||||
|
text-shadow: none;
|
||||||
|
background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline code */
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
border-radius: .3em;
|
||||||
|
border: .13em solid hsl(0, 0%, 33%); /* #545454 */
|
||||||
|
box-shadow: 1px 1px .3em -.1em black inset;
|
||||||
|
padding: .15em .2em .05em;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: hsl(0, 0%, 47%); /* #777777 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.punctuation {
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.namespace {
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.tag,
|
||||||
|
.token.boolean,
|
||||||
|
.token.number,
|
||||||
|
.token.deleted {
|
||||||
|
color: hsl(14, 58%, 55%); /* #CF6A4C */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.keyword,
|
||||||
|
.token.property,
|
||||||
|
.token.selector,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol,
|
||||||
|
.token.builtin {
|
||||||
|
color: hsl(53, 89%, 79%); /* #F9EE98 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.attr-name,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.operator,
|
||||||
|
.token.entity,
|
||||||
|
.token.url,
|
||||||
|
.language-css .token.string,
|
||||||
|
.style .token.string,
|
||||||
|
.token.variable,
|
||||||
|
.token.inserted {
|
||||||
|
color: hsl(76, 21%, 52%); /* #8F9D6A */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.atrule {
|
||||||
|
color: hsl(218, 22%, 55%); /* #7587A6 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.regex,
|
||||||
|
.token.important {
|
||||||
|
color: hsl(42, 75%, 65%); /* #E9C062 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.important,
|
||||||
|
.token.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.token.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[data-line] {
|
||||||
|
padding: 1em 0 1em 3em;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Markup */
|
||||||
|
.language-markup .token.tag,
|
||||||
|
.language-markup .token.attr-name,
|
||||||
|
.language-markup .token.punctuation {
|
||||||
|
color: hsl(33, 33%, 52%); /* #AC885B */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make the tokens sit above the line highlight so the colours don't look faded. */
|
||||||
|
.token {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight {
|
||||||
|
background: hsla(0, 0%, 33%, 0.25); /* #545454 */
|
||||||
|
background: linear-gradient(to right, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */
|
||||||
|
border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */
|
||||||
|
border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */
|
||||||
|
left: 0;
|
||||||
|
line-height: inherit;
|
||||||
|
margin-top: 0.75em; /* Same as .prism’s padding-top */
|
||||||
|
padding: inherit 0;
|
||||||
|
pointer-events: none;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
white-space: pre;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight:before,
|
||||||
|
.line-highlight[data-end]:after {
|
||||||
|
background-color: hsl(215, 15%, 59%); /* #8794A6 */
|
||||||
|
border-radius: 999px;
|
||||||
|
box-shadow: 0 1px white;
|
||||||
|
color: hsl(24, 20%, 95%); /* #F5F2F0 */
|
||||||
|
content: attr(data-start);
|
||||||
|
font: bold 65%/1.5 sans-serif;
|
||||||
|
left: .6em;
|
||||||
|
min-width: 1em;
|
||||||
|
padding: 0 .5em;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
text-shadow: none;
|
||||||
|
top: .4em;
|
||||||
|
vertical-align: .3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight[data-end]:after {
|
||||||
|
bottom: .4em;
|
||||||
|
content: attr(data-end);
|
||||||
|
top: auto;
|
||||||
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
||||||
|
<#include "layout/layout.ftl">
|
||||||
|
<#include "layout/common/article.ftl">
|
||||||
|
<@layout title="标签:${tag.name!} - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/tags/${tag.slugName!}">
|
||||||
|
<#include "layout/tag.ftl">
|
||||||
|
</@layout>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<#include "layout/layout.ftl">
|
||||||
|
<#include "layout/common/article.ftl">
|
||||||
|
<@layout title="标签 - ${options.blog_title!}" keywords="${options.seo_keywords!}" description="${options.seo_description!}" canonical="${context!}/tags">
|
||||||
|
<#include "layout/tags.ftl">
|
||||||
|
</@layout>
|
|
@ -0,0 +1,10 @@
|
||||||
|
id: imkun_fantastic
|
||||||
|
name: Fantastic
|
||||||
|
author:
|
||||||
|
name: Quinn
|
||||||
|
website: https://github.com/imkundev
|
||||||
|
description:
|
||||||
|
logo:
|
||||||
|
website: https://www.imkun.dev
|
||||||
|
repo: https://github.com/halo-dev/halo-theme-icarus
|
||||||
|
version: 1.0
|
Loading…
Reference in New Issue