Compare commits
25 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2ae9bdc091 | ||
|
431364fd6a | ||
|
805ffd514c | ||
|
e55e26fdb7 | ||
|
21c902d4c8 | ||
|
8e70bda33f | ||
|
da36b64ab0 | ||
|
114cfeb316 | ||
|
b661ebc480 | ||
|
999f05c024 | ||
|
8d94204592 | ||
|
2fbe6d9f89 | ||
|
f4db24d52a | ||
|
5c864e8819 | ||
|
ab7b7a940c | ||
|
2556bfb0b4 | ||
|
4148d8c552 | ||
|
784f7058cd | ||
|
8acd61e237 | ||
|
cfceead292 | ||
|
6adee8cc2f | ||
|
65343c5618 | ||
|
739fb30584 | ||
|
2aa7e6f36e | ||
|
d2f7b0f918 |
4
.gitignore
vendored
@ -1,3 +1 @@
|
||||
**/node_modules/**
|
||||
**/.DS_Store
|
||||
.idea
|
||||
**/.DS_Store
|
@ -21,7 +21,7 @@
|
||||
<#list articles as article>
|
||||
<article class="post">
|
||||
<header>
|
||||
<h1>
|
||||
<h2>
|
||||
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
@ -37,10 +37,11 @@
|
||||
</a>
|
||||
</sup>
|
||||
</#if>
|
||||
</h1>
|
||||
</h2>
|
||||
|
||||
<div class="meta">
|
||||
<span class="vditor-tooltipped vditor-tooltipped__n" aria-label="${createDateLabel}">
|
||||
<span class="vditor-tooltipped vditor-tooltipped__n"
|
||||
aria-label="<#if article.articleCreateDate?datetime != article.articleUpdateDate?datetime>${updateDateLabel}<#else>${createDateLabel}</#if>">
|
||||
<i class="icon-date"></i>
|
||||
<time>
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")}
|
||||
@ -96,4 +97,4 @@
|
||||
</nav>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -35,27 +35,28 @@
|
||||
</@head>
|
||||
</head>
|
||||
<body>
|
||||
<#include "header.ftl">
|
||||
<#include "header.ftl">
|
||||
<div class="wrapper">
|
||||
<div class="main-wrap">
|
||||
<main>
|
||||
<article class="post">
|
||||
<header>
|
||||
<h1>
|
||||
<h2>
|
||||
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
<#if article.articlePutTop>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
</h1>
|
||||
<#if article.articlePutTop>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
</h2>
|
||||
<div class="meta">
|
||||
<span class="vditor-tooltipped vditor-tooltipped__n" aria-label="${createDateLabel}">
|
||||
<span class="vditor-tooltipped vditor-tooltipped__n"
|
||||
aria-label="<#if article.articleCreateDate?datetime != article.articleUpdateDate?datetime>${updateDateLabel}<#else>${createDateLabel}</#if>">
|
||||
<i class="icon-date"></i>
|
||||
<time>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd")}
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")}
|
||||
</time>
|
||||
</span>
|
||||
|
|
||||
@ -73,71 +74,72 @@
|
||||
</header>
|
||||
|
||||
<div class="vditor-reset post__content">
|
||||
${article.articleContent}
|
||||
<#if "" != article.articleSign.signHTML?trim>
|
||||
<div>
|
||||
${article.articleSign.signHTML}
|
||||
</div>
|
||||
</#if>
|
||||
${article.articleContent}
|
||||
<#if "" != article.articleSign.signHTML?trim>
|
||||
<div>
|
||||
${article.articleSign.signHTML}
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
<footer class="tags">
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<a class="tag" rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
${articleTag}</a>
|
||||
</#list>
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<a class="tag" rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
${articleTag}</a>
|
||||
</#list>
|
||||
|
||||
<#-- div class="copyright">
|
||||
${articleCP1Label}
|
||||
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a> -
|
||||
<a href="${servePath}">
|
||||
${blogTitle}
|
||||
</a>
|
||||
</div -->
|
||||
<#-- div class="copyright">
|
||||
${articleCP1Label}
|
||||
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a> -
|
||||
<a href="${servePath}">
|
||||
${blogTitle}
|
||||
</a>
|
||||
</div -->
|
||||
|
||||
<div class="rel fn-clear">
|
||||
<#if previousArticlePermalink??>
|
||||
<a href="${servePath}${previousArticlePermalink}" rel="prev"
|
||||
class="fn-left vditor-tooltipped vditor-tooltipped__n"
|
||||
aria-label="${previousArticleTitle}">
|
||||
${previousArticleLabel}
|
||||
</a>
|
||||
</#if>
|
||||
<#if nextArticlePermalink??>
|
||||
<a href="${servePath}${nextArticlePermalink}" rel="next"
|
||||
class="fn-right vditor-tooltipped vditor-tooltipped__n"
|
||||
aria-label="${nextArticleTitle}">
|
||||
${nextArticleLabel}
|
||||
</a>
|
||||
</#if>
|
||||
<div class="rel fn-clear ft__center">
|
||||
<#if previousArticlePermalink??>
|
||||
<a href="${servePath}${previousArticlePermalink}" rel="prev"
|
||||
class="fn-left vditor-tooltipped vditor-tooltipped__n"
|
||||
aria-label="${previousArticleTitle}">
|
||||
${previousArticleLabel}
|
||||
</a>
|
||||
</#if>
|
||||
<#include "../../common-template/share.ftl">
|
||||
<#if nextArticlePermalink??>
|
||||
<a href="${servePath}${nextArticlePermalink}" rel="next"
|
||||
class="fn-right vditor-tooltipped vditor-tooltipped__n"
|
||||
aria-label="${nextArticleTitle}">
|
||||
${nextArticleLabel}
|
||||
</a>
|
||||
</#if>
|
||||
</div>
|
||||
</footer>
|
||||
<@comments commentList=articleComments article=article></@comments>
|
||||
<@comments commentList=articleComments article=article></@comments>
|
||||
<br>
|
||||
<div id="externalRelevantArticles" class="list"></div>
|
||||
<div id="relevantArticles" class="list"></div>
|
||||
<div id="randomArticles" class="list"></div>
|
||||
</article>
|
||||
</main>
|
||||
<#include "side.ftl">
|
||||
<#include "side.ftl">
|
||||
</div>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
<@comment_script oId=article.oId commentable=article.commentable>
|
||||
page.tips.externalRelevantArticlesDisplayCount = "${externalRelevantArticlesDisplayCount}";
|
||||
<#if 0 != randomArticlesDisplayCount>
|
||||
<#include "footer.ftl">
|
||||
<@comment_script oId=article.oId commentable=article.commentable>
|
||||
page.tips.externalRelevantArticlesDisplayCount = "${externalRelevantArticlesDisplayCount}";
|
||||
<#if 0 != randomArticlesDisplayCount>
|
||||
page.loadRandomArticles();
|
||||
</#if>
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>"
|
||||
, "<header class='title'><h2>${externalRelevantArticlesLabel}</h2></header>");
|
||||
</#if>
|
||||
<#if 0 != relevantArticlesDisplayCount>
|
||||
</#if>
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>", "<header class='title'><h2>${externalRelevantArticlesLabel}</h2></header>");
|
||||
</#if>
|
||||
<#if 0 != relevantArticlesDisplayCount>
|
||||
page.loadRelevantArticles('${article.oId}', '<h4>${relevantArticlesLabel}</h4>');
|
||||
</#if>
|
||||
Skin.initToc()
|
||||
</@comment_script>
|
||||
</#if>
|
||||
Skin.initToc()
|
||||
page.share()
|
||||
</@comment_script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -19,7 +19,7 @@
|
||||
* skin style
|
||||
*
|
||||
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
|
||||
* @version 1.3.0.0, Aug 2, 2019
|
||||
* @version 1.4.0.0, Sep 23, 2019
|
||||
*/
|
||||
/* start common */
|
||||
@import "../../../scss/reset";
|
||||
@ -545,26 +545,29 @@ aside {
|
||||
}
|
||||
}
|
||||
|
||||
.post h1 {
|
||||
.post h2 {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.post h1 > a {
|
||||
.post h2 > a {
|
||||
font-size: 24px;
|
||||
font-weight: 500;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.post sup,
|
||||
.post sup {
|
||||
.post sup {
|
||||
color: #aaa;
|
||||
font-weight: 300;
|
||||
|
||||
a {
|
||||
color: #aaa;
|
||||
cursor: text;
|
||||
|
||||
&:hover {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
&:visited {
|
||||
color: #fff;
|
||||
}
|
||||
@ -650,6 +653,50 @@ aside {
|
||||
}
|
||||
}
|
||||
|
||||
.article__share {
|
||||
margin: 20px 0;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
|
||||
.item {
|
||||
float: left;
|
||||
text-align: center;
|
||||
padding: 5px 10px;
|
||||
box-sizing: border-box;
|
||||
color: #fdc200;
|
||||
cursor: pointer;
|
||||
transition: all .3s ease;
|
||||
opacity: .86;
|
||||
|
||||
svg {
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
&[data-type="wechat"] {
|
||||
color: #3caf36;
|
||||
}
|
||||
|
||||
&[data-type="twitter"] {
|
||||
color: #18a3fa;
|
||||
}
|
||||
|
||||
&[data-type="weibo"] {
|
||||
color: #f93;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&__qr {
|
||||
position: absolute;
|
||||
top: 33px;
|
||||
left: 60px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* end article list */
|
||||
|
||||
/* start comments */
|
||||
@ -792,6 +839,10 @@ aside {
|
||||
.responsive .list li.current {
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.post {
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
/* end responsive */
|
||||
/* end responsive */
|
||||
|
0
9IPHP/css/fonts/icomoon.eot
Executable file → Normal file
0
9IPHP/css/fonts/icomoon.svg
Executable file → Normal file
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
0
9IPHP/css/fonts/icomoon.ttf
Executable file → Normal file
0
9IPHP/css/fonts/icomoon.woff
Executable file → Normal file
0
9IPHP/css/selection.json
Executable file → Normal file
2
9IPHP/js/common.min.js
vendored
@ -1 +1 @@
|
||||
var Skin={_initCommon:function(i){var n=$("header .banner"),t=$("header .navbar");$(window).scroll(function(){if(125<$(window).scrollTop()?i.show():i.hide(),$(window).width()<701)return!1;$(window).scrollTop()>n.height()?(t.addClass("pin"),$(".main-wrap").parent().css("margin-top","81px"),$(".article__toc").css("position","fixed")):(t.removeClass("pin"),$(".main-wrap").parent().css("margin-top","0"),$(".article__toc").css("position","inherit"))}),$(window).scroll()},init:function(){this._initCommon($(".icon-up")),$(".navbar nav a").each(function(){this.href===location.href&&(this.className="current")}),$(".responsive .list a").each(function(){this.href===location.href&&$(this).parent().addClass("current")}),$(".responsive .icon-list").click(function(){$(".responsive .list").slideToggle()})},initToc:function(){var n=$(".article__toc");if(0===n.length)return!1;n.css({width:n.parent().width(),left:n.parent().offset().left}).find("a").click(function(){n.find("li").removeClass("toc--current"),$(this).parent().addClass("toc--current");var i=$(this).attr("href");setTimeout(function(){$(window).scrollTop($(i).offset().top-60)})})}};$(document).ready(function(){Skin.init()});
|
||||
var Skin={_initCommon:function(i){var n=$("header .banner"),t=$("header .navbar");$(window).scroll((function(){if($(window).scrollTop()>125?i.show():i.hide(),$(window).width()<701)return!1;$(window).scrollTop()>n.height()?(t.addClass("pin"),$(".main-wrap").parent().css("margin-top","81px"),$(".article__toc").css("position","fixed")):(t.removeClass("pin"),$(".main-wrap").parent().css("margin-top","0"),$(".article__toc").css("position","inherit"))})),$(window).scroll()},init:function(){this._initCommon($(".icon-up")),$(".navbar nav a").each((function(){this.href===location.href&&(this.className="current")})),$(".responsive .list a").each((function(){this.href===location.href&&$(this).parent().addClass("current")})),$(".responsive .icon-list").click((function(){$(".responsive .list").slideToggle()}))},initToc:function(){var i=$(".article__toc");if(0===i.length)return!1;i.css({width:i.parent().width(),left:i.parent().offset().left}).find("a").click((function(){i.find("li").removeClass("toc--current"),$(this).parent().addClass("toc--current");var n=$(this).attr("href");setTimeout((function(){$(window).scrollTop($(n).offset().top-60)}))}))}};$(document).ready((function(){Skin.init()}));
|
@ -43,11 +43,7 @@
|
||||
</#if>
|
||||
</h2>
|
||||
<div class="article-date">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yyyy HH:mm:ss")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yyyy HH:mm:ss")}
|
||||
</#if>
|
||||
by
|
||||
<a rel="nofollow" class="underline" title="${article.authorName}" href="${servePath}/authors/${article.authorId}">
|
||||
${article.authorName}</a> |
|
||||
@ -88,4 +84,4 @@
|
||||
${sumLabel} ${paginationPageCount} ${pageLabel}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</#if>
|
||||
</#if>
|
||||
|
@ -44,8 +44,8 @@
|
||||
<div class="main-content">
|
||||
<div class="article">
|
||||
<div class="date">
|
||||
<div class="month">${article.articleCreateDate?string("MM")}</div>
|
||||
<div class="day">${article.articleCreateDate?string("dd")}</div>
|
||||
<div class="month">${article.articleUpdateDate?string("MM")}</div>
|
||||
<div class="day">${article.articleUpdateDate?string("dd")}</div>
|
||||
</div>
|
||||
<div class="left">
|
||||
<h2 class="article-title">
|
||||
@ -57,11 +57,7 @@
|
||||
</#if>
|
||||
</h2>
|
||||
<div class="article-date">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yyyy HH:mm:ss")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yyyy HH:mm:ss")}
|
||||
</#if>
|
||||
by
|
||||
<a rel="nofollow" title="${article.authorName}" href="${servePath}/authors/${article.authorId}">
|
||||
${article.authorName}</a> |
|
||||
@ -135,6 +131,6 @@
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
|
||||
</#if>
|
||||
</@comment_script>
|
||||
</@comment_script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -38,7 +38,7 @@
|
||||
<#setting locale=localeString>
|
||||
</div>
|
||||
|
||||
<div class="row article-content">
|
||||
<div class="row article-content vditor-reset">
|
||||
<div class="col-sm-12" id="abstract${article.oId}">
|
||||
${article.articleAbstract}
|
||||
</div>
|
||||
@ -48,20 +48,20 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-2"></div>
|
||||
|
||||
|
||||
<div class="col-sm-4">
|
||||
<#if 1 < paginationCurrentPageNum>
|
||||
<#assign prePage = paginationCurrentPageNum - 1>
|
||||
<a class="btn btn-success" href="${servePath}${path}?p=${prePage}">Newer</a>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-sm-4 text-right">
|
||||
<#if paginationCurrentPageNum < paginationPageCount>
|
||||
<#assign nextPage = paginationCurrentPageNum + 1>
|
||||
<a class="btn btn-success" href="${servePath}${path}?p=${nextPage}">Older</a>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-sm-2"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -58,7 +58,7 @@
|
||||
|
||||
<div class="row article-date">
|
||||
<#setting locale="en_US">
|
||||
${article.articleCreateDate?string("MMMM d, yyyy")}
|
||||
${article.articleUpdateDate?string("MMMM d, yyyy")}
|
||||
<#setting locale=localeString>
|
||||
</div>
|
||||
|
||||
@ -105,6 +105,6 @@
|
||||
<#if 0 != relevantArticlesDisplayCount>
|
||||
page.loadRelevantArticles('${article.oId}', '<h4>${relevantArticles1Label}</h4>');
|
||||
</#if>
|
||||
</@comment_script>
|
||||
</@comment_script>
|
||||
</body>
|
||||
</html>
|
||||
|
2
Bruce/js/bootstrap.min.js
vendored
@ -47,7 +47,7 @@
|
||||
<div class="ft__center">
|
||||
<div class="article__meta">
|
||||
<time>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd")}
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")}
|
||||
</time>
|
||||
/
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
|
@ -19,7 +19,7 @@
|
||||
* skin style
|
||||
*
|
||||
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
|
||||
* @version 0.4.0.0, Aug 2, 2019
|
||||
* @version 0.4.1.0, Oct 4, 2019
|
||||
*/
|
||||
@import "../../../scss/reset";
|
||||
@import "../../../scss/usite";
|
||||
@ -431,7 +431,6 @@ a {
|
||||
padding: 0 10px 0 20px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
&:after {
|
||||
display: inline-block;
|
||||
@ -968,4 +967,4 @@ a {
|
||||
.side__top--toc {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
2
Bubble/js/TweenMax.min.js
vendored
2
Bubble/js/circleMagic.min.js
vendored
2
Bubble/js/common.min.js
vendored
@ -1 +1 @@
|
||||
var Skin={init:function(){$("#headerDown").click(function(){$("html, body").animate({scrollTop:$(window).height()},300)}),$(window).scroll(function(o){$(".fn__progress").attr("value",parseInt($(window).scrollTop())).attr("max",parseInt($("body").outerHeight()-$(window).height())),$(window).scrollTop()>$(window).height()/2-20?($(".side__menu").addClass("side__menu--edge"),$("#sideTop").removeClass("side__top--bottom")):($(".side__menu").removeClass("side__menu--edge"),$("#sideTop").addClass("side__top--bottom"))}),$(".side__menu").click(function(){$(".side__main").addClass("side__main--show").show()}),$(".side__bg, .side__close").click(function(){$(".side__main").removeClass("side__main--show"),setTimeout(function(){$(".side__main").hide()},1e3)}),$("#sideTop").click(function(){$(this).hasClass("side__top--bottom")?Util.goBottom():Util.goTop()});var o=0,e=$(".header__h1").text();document.addEventListener("visibilitychange",function(){o&&clearTimeout(o),o=document.hidden?setTimeout(function(){document.title="(◍´꒳`◍) - "+e},500):(document.title="(*´∇`*) 欢迎回来!",setTimeout(function(){document.title=e},1e3))},!1),new Ribbons({colorSaturation:"60%",colorBrightness:"50%",colorAlpha:.5,colorCycleSpeed:5,verticalPosition:"random",horizontalSpeed:200,ribbonCount:3,strokeSize:0,parallaxAmount:-.2,animateSections:!0}),1!==$("#comments").length&&($(window).scroll(),$(".header").circleMagic({clearOffset:.3,color:"rgba(255,255,255, .2)",density:.2,radius:15}))},initArticle:function(){page.share(),initCanvas("articleTop"),768<=$(window).width()?$(".post__toc").css({left:document.querySelector(".article__content").getBoundingClientRect().right+20,right:"auto",display:"block"}):$(".side__top--toc").click(function(){$(".post__toc").slideToggle()});var d=$(".vditor-reset [id^=b3_solo_h]"),l=$(".article__toc");l.find("a").click(function(o){var e=$(this).attr("href");return window.location.hash=e,$(window).scrollTop($(e).offset().top),$(window).width()<768&&$(".post__toc").slideToggle(),o.preventDefault(),o.stopPropagation(),!1}),$(window).scroll(function(o){if(0===$(".article__toc li").length)return!1;var e=[];d.each(function(o){e.push({id:this.id,offsetTop:$(this).offset().top})});for(var t=$(window).scrollTop()+10,i=0,n=e.length;i<n;i++)if(t<e[i].offsetTop){l.find("li").removeClass("current");var s=0<i?i-1:0;l.find('a[href="#'+e[s].id+'"]').parent().addClass("current");break}t>=e[e.length-1].offsetTop&&(l.find("li").removeClass("current"),l.find("li:last").addClass("current"))}),$(window).scroll()}};$(document).ready(function(){Skin.init()});
|
||||
var Skin={init:function(){$("#headerDown").click((function(){$("html, body").animate({scrollTop:$(window).height()},300)})),$(window).scroll((function(o){$(".fn__progress").attr("value",parseInt($(window).scrollTop())).attr("max",parseInt($("body").outerHeight()-$(window).height())),$(window).scrollTop()>$(window).height()/2-20?($(".side__menu").addClass("side__menu--edge"),$("#sideTop").removeClass("side__top--bottom")):($(".side__menu").removeClass("side__menu--edge"),$("#sideTop").addClass("side__top--bottom"))})),$(".side__menu").click((function(){$(".side__main").addClass("side__main--show").show()})),$(".side__bg, .side__close").click((function(){$(".side__main").removeClass("side__main--show"),setTimeout((function(){$(".side__main").hide()}),1e3)})),$("#sideTop").click((function(){$(this).hasClass("side__top--bottom")?Util.goBottom():Util.goTop()}));var o=0,e=$(".header__h1").text();document.addEventListener("visibilitychange",(function(){o&&clearTimeout(o),document.hidden?o=setTimeout((function(){document.title="(\u25cd\xb4\ua4b3`\u25cd) - "+e}),500):(document.title="(*\xb4\u2207\uff40*) \u6b22\u8fce\u56de\u6765\uff01",o=setTimeout((function(){document.title=e}),1e3))}),!1),new Ribbons({colorSaturation:"60%",colorBrightness:"50%",colorAlpha:.5,colorCycleSpeed:5,verticalPosition:"random",horizontalSpeed:200,ribbonCount:3,strokeSize:0,parallaxAmount:-.2,animateSections:!0}),1!==$("#comments").length&&($(window).scroll(),$(".header").circleMagic({clearOffset:.3,color:"rgba(255,255,255, .2)",density:.2,radius:15}))},initArticle:function(){page.share(),initCanvas("articleTop"),$(window).width()>=768?$(".post__toc").css({left:document.querySelector(".article__content").getBoundingClientRect().right+20,right:"auto",display:"block"}):$(".side__top--toc").click((function(){$(".post__toc").slideToggle()}));var o=$(".vditor-reset [id^=b3_solo_h]"),e=$(".article__toc");e.find("a").click((function(o){var e=$(this).attr("href");return window.location.hash=e,$(window).scrollTop($(e).offset().top),$(window).width()<768&&$(".post__toc").slideToggle(),o.preventDefault(),o.stopPropagation(),!1})),$(window).scroll((function(t){if(0===$(".article__toc li").length)return!1;var i=[];o.each((function(o){i.push({id:this.id,offsetTop:$(this).offset().top})}));for(var n=$(window).scrollTop()+10,s=0,d=i.length;s<d;s++)if(n<i[s].offsetTop){e.find("li").removeClass("current");var l=s>0?s-1:0;e.find('a[href="#'+i[l].id+'"]').parent().addClass("current");break}n>=i[i.length-1].offsetTop&&(e.find("li").removeClass("current"),e.find("li:last").addClass("current"))})),$(window).scroll()}};$(document).ready((function(){Skin.init()}));
|
@ -51,7 +51,7 @@
|
||||
<div class="ft__center">
|
||||
<div class="item__meta">
|
||||
<time>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd")}
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")}
|
||||
</time>
|
||||
/
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
|
2
Casper/js/common.min.js
vendored
@ -1 +1 @@
|
||||
var Skin={init:function(){Util.initPjax()},initArticle:function(){page.share();var l=$(".vditor-reset [id^=b3_solo_h]"),s=$(".article__toc"),c=$(".article__progress");1===s.length&&(876<$(window).width()?$(".post__toc").css("left",$(".article .item__content").offset().left+$(".article .item__content").outerWidth()-80):$(".post__toc a").click(function(){$(".post__toc").hide()})),s.find("a").click(function(t){var o=$(this).attr("href");return window.location.hash=o,$(window).scrollTop($(o).offset().top-60),t.preventDefault(),t.stopPropagation(),!1}),$(window).unbind("scroll").scroll(function(t){if(0===c.length)return!1;if(c.attr("value",parseInt($(window).scrollTop())).attr("max",parseInt($("body").outerHeight()-$(window).height())),236<$(window).scrollTop()?$(".article__top").css("top",0):$(".article__top").css("top",-61),0===$(".article__toc li").length)return!1;876<$(window).width()&&(975<$(window).scrollTop()&&$(window).scrollTop()<$(".article").outerHeight()+100?$(".post__toc").show():$(".post__toc").hide());var o=[];l.each(function(t){o.push({id:this.id,offsetTop:$(this).offset().top})});for(var i=$(window).scrollTop(),e=0,r=o.length;e<r;e++)if(i<o[e].offsetTop-61){s.find("li").removeClass("current");var n=0<e?e-1:0;s.find('a[href="#'+o[n].id+'"]').parent().addClass("current");break}i>=o[o.length-1].offsetTop-61&&(s.find("li").removeClass("current"),s.find("li:last").addClass("current"))}),$(window).scroll()}};Skin.init();
|
||||
var Skin={init:function(){Util.initPjax()},initArticle:function(){page.share();var t=$(".vditor-reset [id^=b3_solo_h]"),o=$(".article__toc"),i=$(".article__progress");1===o.length&&($(window).width()>876?$(".post__toc").css("left",$(".article .item__content").offset().left+$(".article .item__content").outerWidth()-80):$(".post__toc a").click((function(){$(".post__toc").hide()}))),o.find("a").click((function(t){var o=$(this).attr("href");return window.location.hash=o,$(window).scrollTop($(o).offset().top-60),t.preventDefault(),t.stopPropagation(),!1})),$(window).unbind("scroll").scroll((function(e){if(0===i.length)return!1;if(i.attr("value",parseInt($(window).scrollTop())).attr("max",parseInt($("body").outerHeight()-$(window).height())),$(window).scrollTop()>236?$(".article__top").css("top",0):$(".article__top").css("top",-61),0===$(".article__toc li").length)return!1;$(window).width()>876&&($(window).scrollTop()>975&&$(window).scrollTop()<$(".article").outerHeight()+100?$(".post__toc").show():$(".post__toc").hide());var r=[];t.each((function(t){r.push({id:this.id,offsetTop:$(this).offset().top})}));for(var n=$(window).scrollTop(),l=0,s=r.length;l<s;l++)if(n<r[l].offsetTop-61){o.find("li").removeClass("current");var c=l>0?l-1:0;o.find('a[href="#'+r[c].id+'"]').parent().addClass("current");break}n>=r[r.length-1].offsetTop-61&&(o.find("li").removeClass("current"),o.find("li:last").addClass("current"))})),$(window).scroll()}};Skin.init();
|
@ -49,6 +49,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<#if pjax><!---- pjax {#pjax} end ----></#if>
|
||||
</div>
|
||||
<#include "footer.ftl">
|
||||
</body>
|
||||
</html>
|
||||
|
@ -18,106 +18,107 @@
|
||||
|
||||
-->
|
||||
<#list articles as article>
|
||||
<div class="marginBottom40">
|
||||
<div class="article-header">
|
||||
<div class="article-date">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd HH:mm")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd HH:mm")}
|
||||
</#if>
|
||||
</div>
|
||||
<div class="arrow-right"></div>
|
||||
<div class="clear"></div>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="marginBottom40">
|
||||
<div class="article-header">
|
||||
<div class="article-date">
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")}
|
||||
</div>
|
||||
<div class="arrow-right"></div>
|
||||
<div class="clear"></div>
|
||||
<ul>
|
||||
<li>
|
||||
<span class="left">
|
||||
by
|
||||
</span>
|
||||
<a rel="nofollow" class="left" title="${article.authorName}" href="${servePath}/authors/${article.authorId}">
|
||||
${article.authorName}
|
||||
</a>
|
||||
<span class="clear"></span>
|
||||
</li>
|
||||
<li>
|
||||
<a rel="nofollow" href="${servePath}${article.articlePermalink}" title="${viewLabel}">
|
||||
${viewLabel} (${article.articleViewCount})
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a rel="nofollow" title="${commentLabel}" href="${servePath}${article.articlePermalink}#comments">
|
||||
${commentLabel} (${article.articleCommentCount})
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="article-main">
|
||||
<h2 class="title">
|
||||
<a rel="bookmark" class="no-underline" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
<#if article.articlePutTop>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
<#if article.hasUpdated>
|
||||
<sup>
|
||||
<a href="${servePath}${article.articlePermalink}">
|
||||
${updatedLabel}
|
||||
<a rel="nofollow" class="left" title="${article.authorName}"
|
||||
href="${servePath}/authors/${article.authorId}">
|
||||
${article.authorName}
|
||||
</a>
|
||||
</sup>
|
||||
</#if>
|
||||
</h2>
|
||||
<div class="vditor-reset">
|
||||
${article.articleAbstract}
|
||||
<span class="clear"></span>
|
||||
</li>
|
||||
<li>
|
||||
<a rel="nofollow" href="${servePath}${article.articlePermalink}" title="${viewLabel}">
|
||||
${viewLabel} (${article.articleViewCount})
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a rel="nofollow" title="${commentLabel}" href="${servePath}${article.articlePermalink}#comments">
|
||||
${commentLabel} (${article.articleCommentCount})
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="read-more">
|
||||
<a href="${servePath}${article.articlePermalink}">
|
||||
<span class="left">${readmore2Label}</span>
|
||||
<span class="read-more-icon"></span>
|
||||
<span class="clear"></span>
|
||||
</a>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="article-footer">
|
||||
<h3>${tagsLabel}</h3>
|
||||
<ul>
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<li>
|
||||
<a rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
${articleTag}
|
||||
<div class="article-main">
|
||||
<h2 class="title">
|
||||
<a rel="bookmark" class="no-underline" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
</li>
|
||||
</#list>
|
||||
<li>
|
||||
<#if article.articlePutTop>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
<#if article.hasUpdated>
|
||||
<sup>
|
||||
<a href="${servePath}${article.articlePermalink}">
|
||||
${updatedLabel}
|
||||
</a>
|
||||
</sup>
|
||||
</#if>
|
||||
</h2>
|
||||
<div class="vditor-reset">
|
||||
${article.articleAbstract}
|
||||
</div>
|
||||
<div class="read-more">
|
||||
<a href="${servePath}${article.articlePermalink}">
|
||||
${createDateLabel}:${article.articleCreateDate?string("yyyy-MM-dd HH:mm")}
|
||||
<span class="left">${readmore2Label}</span>
|
||||
<span class="read-more-icon"></span>
|
||||
<span class="clear"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="article-footer">
|
||||
<h3>${tagsLabel}</h3>
|
||||
<ul>
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<li>
|
||||
<a rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
${articleTag}
|
||||
</a>
|
||||
</li>
|
||||
</#list>
|
||||
<li>
|
||||
<a href="${servePath}${article.articlePermalink}">
|
||||
<#if article.articleCreateDate?datetime != article.articleUpdateDate?datetime>
|
||||
${updateDateLabel}
|
||||
<#else>
|
||||
${createDateLabel}
|
||||
</#if>:${article.articleUpdateDate?string("yyyy-MM-dd HH:mm")}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</#list>
|
||||
<#if 0 != paginationPageCount>
|
||||
<div class="pagination">
|
||||
<#if 1 != paginationPageNums?first>
|
||||
<a href="${servePath}${path}">${firstPageLabel}</a>
|
||||
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}">${previousPageLabel}</a>
|
||||
</#if>
|
||||
<#list paginationPageNums as paginationPageNum>
|
||||
<#if paginationPageNum == paginationCurrentPageNum>
|
||||
<a href="${servePath}${path}?p=${paginationPageNum}" class="selected">${paginationPageNum}</a>
|
||||
<#else>
|
||||
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
|
||||
</#if>
|
||||
</#list>
|
||||
<#if paginationPageNums?last != paginationPageCount>
|
||||
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}">${nextPagePabel}</a>
|
||||
<a href="${servePath}${path}?p=${paginationPageCount}">${lastPageLabel}</a>
|
||||
</#if>
|
||||
${sumLabel} ${paginationPageCount} ${pageLabel}
|
||||
</div>
|
||||
</#if>
|
||||
<div class="pagination">
|
||||
<#if 1 != paginationPageNums?first>
|
||||
<a href="${servePath}${path}">${firstPageLabel}</a>
|
||||
<a id="previousPage" href="${servePath}${path}?p=${paginationPreviousPageNum}">${previousPageLabel}</a>
|
||||
</#if>
|
||||
<#list paginationPageNums as paginationPageNum>
|
||||
<#if paginationPageNum == paginationCurrentPageNum>
|
||||
<a href="${servePath}${path}?p=${paginationPageNum}" class="selected">${paginationPageNum}</a>
|
||||
<#else>
|
||||
<a href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
|
||||
</#if>
|
||||
</#list>
|
||||
<#if paginationPageNums?last != paginationPageCount>
|
||||
<a id="nextPage" href="${servePath}${path}?p=${paginationNextPageNum}">${nextPagePabel}</a>
|
||||
<a href="${servePath}${path}?p=${paginationPageCount}">${lastPageLabel}</a>
|
||||
</#if>
|
||||
${sumLabel} ${paginationPageCount} ${pageLabel}
|
||||
</div>
|
||||
</#if>
|
||||
|
@ -43,11 +43,7 @@
|
||||
<div class="marginBottom40">
|
||||
<div class="article-header">
|
||||
<div class="article-date">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd HH")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd HH")}
|
||||
</#if>
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")}
|
||||
</div>
|
||||
<div class="arrow-right"></div>
|
||||
<div class="clear"></div>
|
||||
@ -142,6 +138,6 @@
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
|
||||
</#if>
|
||||
</@comment_script>
|
||||
</@comment_script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -117,34 +117,6 @@ img {
|
||||
height: 38px;
|
||||
width: 14px;
|
||||
}
|
||||
|
||||
input[type='button'] {
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3) inset, 0 0 2px rgba(255, 255, 255, 0.3) inset, 0 1px 2px rgba(0, 0, 0, 0.29);
|
||||
background-color: #000000;
|
||||
background-image: linear-gradient(top, #333333, #000000);
|
||||
background-image: -moz-linear-gradient(top, #333333, #000000);
|
||||
background-image: -ms-linear-gradient(top, #333333, #000000);
|
||||
background-image: -o-linear-gradient(top, #333333, #000000);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#333333), to(#000000));
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#000000');
|
||||
border: 1px solid #000000;
|
||||
color: white;
|
||||
margin: 15px 0 0 200px;
|
||||
padding: 7px 13px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
input[type='button']:hover {
|
||||
background-color: #333333;
|
||||
background-image: linear-gradient(top, #333333, #212121);
|
||||
background-image: -moz-linear-gradient(top, #333333, #212121);
|
||||
background-image: -ms-linear-gradient(top, #333333, #212121);
|
||||
background-image: -o-linear-gradient(top, #333333, #212121);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#333333), to(#212121));
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#212121');
|
||||
}
|
||||
|
||||
.marginBottom40 {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
@ -818,4 +790,4 @@ a.star-icon {
|
||||
background-color: #B4D9E2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,7 +43,7 @@
|
||||
<main>
|
||||
<article class="post fn-wrap">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
<h2 class="post-title">
|
||||
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
@ -52,7 +52,7 @@
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
</h1>
|
||||
</h2>
|
||||
<section class="post-meta">
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<span>
|
||||
@ -60,7 +60,7 @@
|
||||
${articleTag}</a><#if articleTag_has_next>,</#if>
|
||||
</span>
|
||||
</#list>
|
||||
<time>${article.articleCreateDate?string("yyyy-MM-dd")}</time>
|
||||
<time>${article.articleUpdateDate?string("yyyy-MM-dd")}</time>
|
||||
</section>
|
||||
</header>
|
||||
<section class="post-content post-content--article vditor-reset">
|
||||
@ -138,7 +138,7 @@
|
||||
<#if 0 != relevantArticlesDisplayCount>
|
||||
page.loadRelevantArticles('${article.oId}', '<h4>${relevantArticles1Label}</h4>');
|
||||
</#if>
|
||||
</@comment_script>
|
||||
</@comment_script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -91,13 +91,10 @@ h4, h5, h6 {
|
||||
|
||||
h1 {
|
||||
font-size: 5rem;
|
||||
letter-spacing: -2px;
|
||||
text-indent: -3px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 3.6rem;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
@ -1210,7 +1207,6 @@ ul.comments {
|
||||
|
||||
h1 {
|
||||
font-size: 4.5rem;
|
||||
text-indent: -2px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
|
0
Finding/css/fonts/icomoon.eot
Executable file → Normal file
0
Finding/css/fonts/icomoon.svg
Executable file → Normal file
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
0
Finding/css/fonts/icomoon.ttf
Executable file → Normal file
0
Finding/css/fonts/icomoon.woff
Executable file → Normal file
0
Finding/css/fonts/selection.json
Executable file → Normal file
@ -20,12 +20,12 @@
|
||||
<header class="main-header"<#if !isIndex> style='height:30vh;'</#if>>
|
||||
<div class="fn-vertical">
|
||||
<div class="main-header-content fn-wrap">
|
||||
<h1 class="page-title">
|
||||
<h2 class="page-title">
|
||||
<a href="${servePath}">${blogTitle}</a>
|
||||
<#if "" != noticeBoard>
|
||||
<small class="page-description"> ${blogSubtitle}</small>
|
||||
</#if>
|
||||
</h1>
|
||||
</h2>
|
||||
<h2 class="page-description">
|
||||
<#if "" != noticeBoard>
|
||||
${noticeBoard}
|
||||
@ -36,4 +36,4 @@
|
||||
</div>
|
||||
</div>
|
||||
<#if isIndex><a class="scroll-down icon-arrow-left" href="#content" data-offset="-45"></a></#if>
|
||||
</header>
|
||||
</header>
|
||||
|
2
Finding/js/Finding.min.js
vendored
@ -1 +1 @@
|
||||
var Finding={init:function(){Util.killIE(),this._initToc(),this.share(),$(".scroll-down").click(function(t){t.preventDefault();var n=$(this),e=$("html, body"),o=!!n.attr("data-offset")&&n.attr("data-offset"),i=parseInt(o);e.stop(!0,!1).animate({scrollTop:$(this.hash).offset().top+i},500)}),$("body").append('<a class="icon-gotop fn-none" href="javascript:Util.goTop()"></a><span class="menu-button icon-menu"><span class="word">Menu</span></span>'),$(".menu-button").click(function(t){t.stopPropagation(),$("body").toggleClass("nav-opened nav-closed")}),$(window).scroll(function(){$(window).scrollTop()>$(".main-header").height()?$(".icon-gotop").show():$(".icon-gotop").hide()})},_initToc:function(){0!==$(".article__toc li").length&&500<$(window).width()&&$("body").toggleClass("nav-opened nav-closed")},share:function(){var t=$(".share"),n=t.find(".icon-wechat"),e=n.data("url"),o=n.data("avatar"),i=encodeURIComponent(n.data("title")+" - "+n.data("blogtitle")),a=encodeURIComponent(e),s={};s.weibo="http://v.t.sina.com.cn/share/share.php?title="+i+"&url="+a+"&pic="+o,s.qqz="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url="+a+"&sharesource=qzone&title="+i+"&pics="+o,s.twitter="https://twitter.com/intent/tweet?status="+i+" "+a,t.find("span").click(function(){var t=$(this).data("type");if(t)return"wechat"===t?(0===n.find("canvas").length?$.ajax({method:"GET",url:Label.staticServePath+"/js/lib/jquery.qrcode.min.js",dataType:"script",cache:!0,success:function(){n.qrcode({width:128,height:128,text:e})}}):n.find("canvas").slideToggle(),!1):void window.open(s[t],"_blank","top=100,left=200,width=648,height=618")})}};Finding.init();
|
||||
var Finding={init:function(){Util.killIE(),this._initToc(),this.share(),$(".scroll-down").click((function(t){t.preventDefault();var n=$(this),e=$("html, body"),o=!!n.attr("data-offset")&&n.attr("data-offset"),i=parseInt(o);e.stop(!0,!1).animate({scrollTop:$(this.hash).offset().top+i},500)})),$("body").append('<a class="icon-gotop fn-none" href="javascript:Util.goTop()"></a><span class="menu-button icon-menu"><span class="word">Menu</span></span>'),$(".menu-button").click((function(t){t.stopPropagation(),$("body").toggleClass("nav-opened nav-closed")})),$(window).scroll((function(){$(window).scrollTop()>$(".main-header").height()?$(".icon-gotop").show():$(".icon-gotop").hide()}))},_initToc:function(){0!==$(".article__toc li").length&&$(window).width()>500&&$("body").toggleClass("nav-opened nav-closed")},share:function(){var t=$(".share"),n=t.find(".icon-wechat"),e=n.data("url"),o=n.data("avatar"),i=encodeURIComponent(n.data("title")+" - "+n.data("blogtitle")),a=encodeURIComponent(e),s={};s.weibo="http://v.t.sina.com.cn/share/share.php?title="+i+"&url="+a+"&pic="+o,s.qqz="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url="+a+"&sharesource=qzone&title="+i+"&pics="+o,s.twitter="https://twitter.com/intent/tweet?status="+i+" "+a,t.find("span").click((function(){var t=$(this).data("type");if(t)return"wechat"===t?(0===n.find("canvas").length?$.ajax({method:"GET",url:Label.staticServePath+"/js/lib/jquery.qrcode.min.js",dataType:"script",cache:!0,success:function(){n.qrcode({width:128,height:128,text:e})}}):n.find("canvas").slideToggle(),!1):void window.open(s[t],"_blank","top=100,left=200,width=648,height=618")}))}};Finding.init();
|
@ -52,7 +52,7 @@
|
||||
|
||||
<div class="ft__gray fn__clear">
|
||||
<time>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd")}
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")}
|
||||
</time>
|
||||
|
||||
<span class="mobile__none">
|
||||
|
0
Jane/css/fonts/icomoon.eot
Executable file → Normal file
0
Jane/css/fonts/icomoon.svg
Executable file → Normal file
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
0
Jane/css/fonts/icomoon.ttf
Executable file → Normal file
0
Jane/css/fonts/icomoon.woff
Executable file → Normal file
0
Jane/css/fonts/selection.json
Executable file → Normal file
2
Jane/js/common.min.js
vendored
@ -1 +1 @@
|
||||
var Skin={initToc:function(){0<$(".article__toc li").length&&768<$(window).width()?($(".article__toc").css({right:"50px","border-right":"1px solid #fff",opacity:1}),$("#pjax.wrapper").css({"max-width":"968px","padding-right":"270px"})):$("#pjax.wrapper").removeAttr("style")},init:function(){Skin.initToc(),Util.initPjax(function(){$(".header a").each(function(){this.href===location.href?this.className="current vditor-tooltipped vditor-tooltipped__w":this.className="vditor-tooltipped vditor-tooltipped__w"}),Skin.initToc()}),$(".header a").each(function(){this.href===location.href&&(this.className="current vditor-tooltipped vditor-tooltipped__w")}).click(function(){$(".header a").removeClass("current"),this.className="current vditor-tooltipped vditor-tooltipped__w"})}};Skin.init();
|
||||
var Skin={initToc:function(){$(".article__toc li").length>0&&$(window).width()>768?($(".article__toc").css({right:"50px","border-right":"1px solid #fff",opacity:1}),$("#pjax.wrapper").css({"max-width":"968px","padding-right":"270px"})):$("#pjax.wrapper").removeAttr("style")},init:function(){Skin.initToc(),Util.initPjax((function(){$(".header a").each((function(){this.href===location.href?this.className="current vditor-tooltipped vditor-tooltipped__w":this.className="vditor-tooltipped vditor-tooltipped__w"})),Skin.initToc()})),$(".header a").each((function(){this.href===location.href&&(this.className="current vditor-tooltipped vditor-tooltipped__w")})).click((function(){$(".header a").removeClass("current"),this.className="current vditor-tooltipped vditor-tooltipped__w"}))}};Skin.init();
|
@ -47,14 +47,14 @@
|
||||
<div class="wrapper content">
|
||||
<article class="post">
|
||||
<header>
|
||||
<h1 class="post__title">
|
||||
<h2 class="post__title">
|
||||
${article.articleTitle}
|
||||
<#if article.articlePutTop>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
</h1>
|
||||
</h2>
|
||||
</header>
|
||||
<section class="vditor-reset">
|
||||
${article.articleContent}
|
||||
@ -74,7 +74,7 @@
|
||||
</footer>
|
||||
<div class="post__share fn-clear">
|
||||
<time class="ft-gray">
|
||||
${article.articleCreateDate?string("yyyy-MM-dd")} •
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")} •
|
||||
</time>
|
||||
<a class="post__view" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleViewCount} ${viewLabel}</a>
|
||||
|
@ -350,6 +350,7 @@
|
||||
position: fixed;
|
||||
top: 90px;
|
||||
bottom: 60px;
|
||||
width: 260px;
|
||||
|
||||
a {
|
||||
color: rgba(0, 0, 0, 0.54);
|
||||
@ -866,4 +867,4 @@
|
||||
#nprogress .spinner-icon {
|
||||
border-top-color: #d23f31;
|
||||
border-left-color: #d23f31;
|
||||
}
|
||||
}
|
||||
|
2
Medium/js/common.min.js
vendored
@ -1 +1 @@
|
||||
var Skin={init:function(){var t=$(".article__toc");$(window).scroll(function(){1===t.length&&($(".article__bottom").offset().top<$(window).scrollTop()?t.hide():t.show()),0!==$("#headerNav").length&&(64<$(window).scrollTop()?($("#headerNav").addClass("header__nav--fixed"),$(".main").css("margin-top","100px")):($("#headerNav").removeClass("header__nav--fixed"),$(".main").css("margin-top","50px")))}),$(window).scroll(),Util.initPjax(function(){Util.parseMarkdown(),Util.isArticlePage(location.href)&&($("#articleSideShare .article__code").qrcode||$.ajax({method:"GET",url:Label.staticServePath+"/js/lib/jquery.qrcode.min.js",dataType:"script",cache:!0})),Skin.initToc()}),Skin.initToc()},initTags:function(){for(var t=$("#tags"),e=t.find(".tag"),i=parseInt(e.first().data("count")),o=Math.ceil(i/5),a=0;a<e.length;a++)for(var n=parseInt($(e[a]).data("count")),s=0;s<5;s++)if(s*o<n&&n<=(s+1)*o){e[a].className="tag tag__level"+s;break}t.html(e.get().sort(function(t,e){var i=$(t).text().toLowerCase(),o=$(e).text().toLowerCase();return i.localeCompare(o)}))},initArticle:function(){if(0!==$("#articleShare").length){Skin._share("#articleShare"),Skin._share("#articleSideShare"),Skin._share("#articleBottomShare");var i=$(".post__side");$(window).height()>=$(".post").height()&&i.css("opacity",1),i.css("left",($(".post").offset().left-20)/2-27+"px");var o=($(window).height()-249)/2+125,a=$(window).scrollTop();$(window).scroll(function(){if(0!==$("#articleShare").length){var t=$(window).scrollTop(),e=$(".article__bottom").offset().top;65<t?(i.css("opacity",1),0<a-t?($(".header").addClass("header--fixed").css({top:"0"}),$(".main").css("padding-top","64px"),$(window).height()<=$(".post").height()&&t<e-$(window).height()&&$(".article__toolbar").css({bottom:0,opacity:1})):a-t<0&&($(".header").css({top:"-64px"}).removeClass("header--fixed"),$(".main").css("padding-top","0"),$(".article__toolbar").css({bottom:"-44px",opacity:0}))):($(window).height()<=$(".post").height()&&i.css("opacity",0),$(".header").removeClass("header--fixed").css("top","-64px"),$(".main").css("padding-top","0")),t>e-$(window).height()?e<$(window).height()?i.css({position:"absolute",top:e-125+"px"}):i.css({position:"absolute",top:e-o+"px"}):i.css({position:"fixed",top:"50%"}),a=t}}),$(window).scroll()}},_share:function(t){var e=$(t),i=e.find(".article__code"),o=i.data("url"),a=i.data("avatar"),n=encodeURIComponent(i.data("title")+" - "+i.data("blogtitle")),s=encodeURIComponent(o),r={};r.tencent="http://share.v.t.qq.com/index.php?c=share&a=index&title="+n+"&url="+s+"&pic="+a,r.weibo="http://v.t.sina.com.cn/share/share.php?title="+n+"&url="+s+"&pic="+a,r.qqz="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url="+s+"&sharesource=qzone&title="+n+"&pics="+a,r.twitter="https://twitter.com/intent/tweet?status="+n+" "+s,e.find("span").click(function(){var t=$(this).data("type");if(t)return"wechat"===t?(0===i.find("canvas").length?i.qrcode({width:128,height:128,text:o}):i.slideToggle(),!1):void window.open(r[t],"_blank","top=100,left=200,width=648,height=618")})},initToc:function(){0!==$(".article__toc").length&&1e3<$(window).width()?$(".article__toc").animate({left:$(".post").outerWidth()+$(".post").offset().left+"px"},600):$(".article__toc").hide()}};Skin.init();
|
||||
var Skin={init:function(){var t=$(".article__toc");$(window).scroll((function(){1===t.length&&($(".article__bottom").offset().top<$(window).scrollTop()?t.hide():t.show()),0!==$("#headerNav").length&&($(window).scrollTop()>64?($("#headerNav").addClass("header__nav--fixed"),$(".main").css("margin-top","100px")):($("#headerNav").removeClass("header__nav--fixed"),$(".main").css("margin-top","50px")))})),$(window).scroll(),Util.initPjax((function(){Util.parseMarkdown(),Util.isArticlePage(location.href)&&($("#articleSideShare .article__code").qrcode||$.ajax({method:"GET",url:Label.staticServePath+"/js/lib/jquery.qrcode.min.js",dataType:"script",cache:!0})),Skin.initToc()})),Skin.initToc()},initTags:function(){for(var t=$("#tags"),e=t.find(".tag"),i=parseInt(e.first().data("count")),o=Math.ceil(i/5),a=0;a<e.length;a++)for(var n=parseInt($(e[a]).data("count")),s=0;s<5;s++)if(n>s*o&&n<=(s+1)*o){e[a].className="tag tag__level"+s;break}t.html(e.get().sort((function(t,e){var i=$(t).text().toLowerCase(),o=$(e).text().toLowerCase();return i.localeCompare(o)})))},initArticle:function(){if(0!==$("#articleShare").length){Skin._share("#articleShare"),Skin._share("#articleSideShare"),Skin._share("#articleBottomShare");var t=$(".post__side");$(window).height()>=$(".post").height()&&t.css("opacity",1),t.css("left",($(".post").offset().left-20)/2-27+"px");var e=($(window).height()-249)/2+125,i=$(window).scrollTop();$(window).scroll((function(){if(0!==$("#articleShare").length){var o=$(window).scrollTop(),a=$(".article__bottom").offset().top;o>65?(t.css("opacity",1),i-o>0?($(".header").addClass("header--fixed").css({top:"0"}),$(".main").css("padding-top","64px"),$(window).height()<=$(".post").height()&&o<a-$(window).height()&&$(".article__toolbar").css({bottom:0,opacity:1})):i-o<0&&($(".header").css({top:"-64px"}).removeClass("header--fixed"),$(".main").css("padding-top","0"),$(".article__toolbar").css({bottom:"-44px",opacity:0}))):($(window).height()<=$(".post").height()&&t.css("opacity",0),$(".header").removeClass("header--fixed").css("top","-64px"),$(".main").css("padding-top","0")),o>a-$(window).height()?a<$(window).height()?t.css({position:"absolute",top:a-125+"px"}):t.css({position:"absolute",top:a-e+"px"}):t.css({position:"fixed",top:"50%"}),i=o}})),$(window).scroll()}},_share:function(t){var e=$(t),i=e.find(".article__code"),o=i.data("url"),a=i.data("avatar"),n=encodeURIComponent(i.data("title")+" - "+i.data("blogtitle")),s=encodeURIComponent(o),r={};r.tencent="http://share.v.t.qq.com/index.php?c=share&a=index&title="+n+"&url="+s+"&pic="+a,r.weibo="http://v.t.sina.com.cn/share/share.php?title="+n+"&url="+s+"&pic="+a,r.qqz="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url="+s+"&sharesource=qzone&title="+n+"&pics="+a,r.twitter="https://twitter.com/intent/tweet?status="+n+" "+s,e.find("span").click((function(){var t=$(this).data("type");if(t)return"wechat"===t?(0===i.find("canvas").length?i.qrcode({width:128,height:128,text:o}):i.slideToggle(),!1):void window.open(r[t],"_blank","top=100,left=200,width=648,height=618")}))},initToc:function(){0!==$(".article__toc").length&&$(window).width()>1e3?$(".article__toc").animate({left:$(".post").outerWidth()+$(".post").offset().left+"px"},600):$(".article__toc").hide()}};Skin.init();
|
@ -41,7 +41,7 @@
|
||||
<span class="clear"></span>
|
||||
</h2>
|
||||
<div class="left article-element">
|
||||
<span class="date-ico" title="${dateLabel}">
|
||||
<span class="date-ico" title="${dateLabel}">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
<#else>
|
||||
@ -80,8 +80,8 @@
|
||||
<#if 0 != paginationPageCount>
|
||||
<div class="pagination">
|
||||
<#if 1 != paginationPageNums?first>
|
||||
<a href="${servePath}${path}" title="${firstPageLabel}"><</a>
|
||||
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" title="${previousPageLabel}"><<</a>
|
||||
<a href="${servePath}${path}" title="${firstPageLabel}"><<</a>
|
||||
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" title="${previousPageLabel}"><</a>
|
||||
</#if>
|
||||
<#list paginationPageNums as paginationPageNum>
|
||||
<#if paginationPageNum == paginationCurrentPageNum>
|
||||
@ -96,4 +96,4 @@
|
||||
</#if>
|
||||
${sumLabel} ${paginationPageCount} ${pageLabel}
|
||||
</div>
|
||||
</#if>
|
||||
</#if>
|
||||
|
@ -52,12 +52,8 @@
|
||||
</#if>
|
||||
</h2>
|
||||
<div class="left article-element">
|
||||
<span class="date-ico" title="${dateLabel}">
|
||||
<#if article.hasUpdated>
|
||||
<span class="date-ico" title="${dateLabel}">
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
</#if>
|
||||
</span>
|
||||
<span class="user-ico" title="${authorLabel}">
|
||||
<a rel="nofollow" href="${servePath}/authors/${article.authorId}">${article.authorName}</a>
|
||||
@ -93,7 +89,7 @@
|
||||
<div class="right">
|
||||
<a href="${servePath}${nextArticlePermalink}">${nextArticle1Label}${nextArticleTitle}</a>
|
||||
</div><div class="clear"></div>
|
||||
</#if>
|
||||
</#if>
|
||||
<#if previousArticlePermalink??>
|
||||
<div class="right">
|
||||
<a href="${servePath}${previousArticlePermalink}">${previousArticle1Label}${previousArticleTitle}</a>
|
||||
@ -126,6 +122,6 @@
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
|
||||
</#if>
|
||||
</@comment_script>
|
||||
</@comment_script>
|
||||
</body>
|
||||
</html>
|
||||
|
2
NeoEase/js/NeoEase.min.js
vendored
@ -1 +1 @@
|
||||
var goTop=function(e){e=e||.1;var a=$(window).scrollTop(),t=1+e;if(window.scrollTo(0,Math.floor(a/t)),0<a){var n="goTop("+e+")";window.setTimeout(n,16)}},collapseArchive=function(e,a){var t=!0;"collapse-ico"===e.className?(e.className="expand-ico",t=!1):e.className="collapse-ico",$("#archiveSide li").each(function(){$(this).data("year")===a&&(t?$(this).show():$(this).hide())})},getArticle=function(t,e){var n=$("#abstract"+e),i=$("#content"+e);return""===i.html()?$.ajax({url:"/get-article-content?id="+e,type:"GET",dataType:"html",beforeSend:function(){n.css("background","url(/skins/neoease/images/ajax-loader.gif) no-repeat scroll center center transparent")},success:function(e,a){t.className="collapse-ico",i.html(e),n.hide().css("background","none"),i.fadeIn("slow"),Util.parseLanguage(),Util.parseMarkdown()}}):"expand-ico"===t.className?(n.hide(),i.fadeIn(),t.className="collapse-ico"):(i.hide(),n.fadeIn(),t.className="expand-ico"),!1},goTranslate=function(){window.open("http://translate.google.com/translate?sl=auto&tl=auto&u="+location.href)};$(document).ready(function(){$(window).scroll(function(){var e=$(window).scrollTop();if(182<e){var a=$(window).height(),t=e+a-21;$("body").height()-58<=e+a&&(t=$(".footer").offset().top-21),$("#goTop").fadeIn("slow").css("top",t)}else $("#goTop").hide()});var t=(new Date).getFullYear(),n=t;$("#archiveSide li").each(function(e){var a=$(this);a.data("year")!==t&&$(this).hide(),n!==a.data("year")&&(n=a.data("year"),a.before("<li class='archive-year'><div onclick='collapseArchive(this, "+n+")' class='expand-ico'>"+n+" 年</div></li>"))}),$(".recent-comments .expand-ico").click(function(){"expand-ico"===this.className?($(this).parent().next().css({height:"auto","white-space":"normal"}),this.className="collapse-ico"):($(this).parent().next().animate({height:"18px"},function(){$(this).css("white-space","nowrap")}),this.className="expand-ico")}),$(".nav ul li").each(function(){$(this).find("a").attr("href")===Label.servePath+location.pathname?$(this).addClass("current"):/\/[0-9]+$/.test(location.pathname)&&($(".nav ul li")[0].className="current")}),Util.setTopBar(),Util.replaceSideEm($(".recent-comments-content")),Util.buildTags("tagsSide"),$(".recent-comments .recent-comments-main").each(function(){$(this).find(".recent-comments-content>a").height()<30?$(this).find(".expand-ico").remove():$(this).find(".expand-ico").parent().next().css({"white-space":"nowrap"})})});
|
||||
var goTop=function(e){e=e||.1;var a=$(window).scrollTop(),t=1+e;if(window.scrollTo(0,Math.floor(a/t)),a>0){var n="goTop("+e+")";window.setTimeout(n,16)}},collapseArchive=function(e,a){var t=!0;"collapse-ico"===e.className?(e.className="expand-ico",t=!1):e.className="collapse-ico",$("#archiveSide li").each((function(){$(this).data("year")===a&&(t?$(this).show():$(this).hide())}))},getArticle=function(e,a){var t=$("#abstract"+a),n=$("#content"+a);return""===n.html()?$.ajax({url:"/get-article-content?id="+a,type:"GET",dataType:"html",beforeSend:function(){t.css("background","url(/skins/neoease/images/ajax-loader.gif) no-repeat scroll center center transparent")},success:function(a,i){e.className="collapse-ico",n.html(a),t.hide().css("background","none"),n.fadeIn("slow"),Util.parseLanguage(),Util.parseMarkdown()}}):"expand-ico"===e.className?(t.hide(),n.fadeIn(),e.className="collapse-ico"):(n.hide(),t.fadeIn(),e.className="expand-ico"),!1},goTranslate=function(){window.open("http://translate.google.com/translate?sl=auto&tl=auto&u="+location.href)};$(document).ready((function(){$(window).scroll((function(){var e=$(window).scrollTop();if(e>182){var a=$(window).height(),t=e+a-21;$("body").height()-58<=e+a&&(t=$(".footer").offset().top-21),$("#goTop").fadeIn("slow").css("top",t)}else $("#goTop").hide()}));var e=(new Date).getFullYear(),a=e;$("#archiveSide li").each((function(t){var n=$(this);n.data("year")!==e&&$(this).hide(),a!==n.data("year")&&(a=n.data("year"),n.before("<li class='archive-year'><div onclick='collapseArchive(this, "+a+")' class='expand-ico'>"+a+" \u5e74</div></li>"))})),$(".recent-comments .expand-ico").click((function(){"expand-ico"===this.className?($(this).parent().next().css({height:"auto","white-space":"normal"}),this.className="collapse-ico"):($(this).parent().next().animate({height:"18px"},(function(){$(this).css("white-space","nowrap")})),this.className="expand-ico")})),$(".nav ul li").each((function(){$(this).find("a").attr("href")===Label.servePath+location.pathname?$(this).addClass("current"):/\/[0-9]+$/.test(location.pathname)&&($(".nav ul li")[0].className="current")})),Util.setTopBar(),Util.replaceSideEm($(".recent-comments-content")),Util.buildTags("tagsSide"),$(".recent-comments .recent-comments-main").each((function(){$(this).find(".recent-comments-content>a").height()<30?$(this).find(".expand-ico").remove():$(this).find(".expand-ico").parent().next().css({"white-space":"nowrap"})}))}));
|
@ -30,35 +30,36 @@
|
||||
<div class="item__slant"></div>
|
||||
<div class="item__slant item__slant--white"></div>
|
||||
<div class="item__main">
|
||||
<#if article.articlePutTop>
|
||||
<sup class="ft__red">
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
<#if article.hasUpdated>
|
||||
<sup>
|
||||
<a class="ft__red" href="${servePath}${article.articlePermalink}">
|
||||
<span class="item__sup">
|
||||
<#if article.articlePutTop>
|
||||
<sup class="ft__red">
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
<#if article.hasUpdated>
|
||||
<sup class="ft__red">
|
||||
${updatedLabel}
|
||||
</a>
|
||||
</sup>
|
||||
</#if>
|
||||
</sup>
|
||||
</#if>
|
||||
</span>
|
||||
<h2 class="item__title">
|
||||
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
</h2>
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<#if articleTag_index == 0>
|
||||
<div class="ico ico--${article_index % 10}"></div>
|
||||
<#if article.category??>
|
||||
<a class="item__tag" href="${servePath}/category/${article.category.categoryURI}">${article.category.categoryTitle}</a>
|
||||
<#else>
|
||||
<a rel="tag" class="item__tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
${articleTag}
|
||||
</a>
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<#if articleTag_index == 0>
|
||||
<div class="ico ico--${article_index % 10}"></div>
|
||||
<#if article.category??>
|
||||
<a class="item__tag"
|
||||
href="${servePath}/category/${article.category.categoryURI}">${article.category.categoryTitle}</a>
|
||||
<#else>
|
||||
<a rel="tag" class="item__tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
${articleTag}
|
||||
</a>
|
||||
</#if>
|
||||
</#if>
|
||||
</#if>
|
||||
</#list>
|
||||
</#list>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@ -73,10 +74,10 @@
|
||||
</#if>
|
||||
<#list paginationPageNums as paginationPageNum>
|
||||
<#if paginationPageNum == paginationCurrentPageNum>
|
||||
<span class="pagination__item pagination__item--current">${paginationPageNum}</span>
|
||||
<span class="pagination__item pagination__item--current">${paginationPageNum}</span>
|
||||
<#else>
|
||||
<a class="pagination__item"
|
||||
href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
|
||||
<a class="pagination__item"
|
||||
href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
|
||||
</#if>
|
||||
</#list>
|
||||
<#if paginationPageNums?last != paginationPageCount>
|
||||
@ -86,4 +87,4 @@
|
||||
<a href="${servePath}${path}?p=${paginationNextPageNum}" class="pagination__item">→</a>
|
||||
</#if>
|
||||
</nav>
|
||||
</#if>
|
||||
</#if>
|
||||
|
@ -41,19 +41,23 @@
|
||||
<div class="post wrapper wrapper--miner">
|
||||
<h2 class="item__title">
|
||||
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
<#if article.articlePutTop>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
</h2>
|
||||
<div class="ft__fade item__meta">
|
||||
Published on
|
||||
<#if article.articleCreateDate?datetime != article.articleUpdateDate?datetime>
|
||||
Updated on
|
||||
<#else>
|
||||
Published on
|
||||
</#if>
|
||||
<time>
|
||||
<#setting locale="en_US">
|
||||
${article.articleCreateDate?string["MMM d, yyyy"]}
|
||||
${article.articleUpdateDate?string["MMM d, yyyy"]}
|
||||
</time>
|
||||
<#if article.category??>
|
||||
in <a href="${servePath}/category/${article.category.categoryURI}">${article.category.categoryTitle}</a>
|
||||
@ -64,25 +68,25 @@
|
||||
</#if>
|
||||
</div>
|
||||
<div class="item__tags">
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<a rel="tag" class="tag tag--${articleTag_index}" href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
<b># ${articleTag}</b>
|
||||
</a>
|
||||
</#list>
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<a rel="tag" class="tag tag--${articleTag_index}" href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
<b># ${articleTag}</b>
|
||||
</a>
|
||||
</#list>
|
||||
</div>
|
||||
<div class="vditor-reset">
|
||||
${article.articleContent}
|
||||
<#if "" != article.articleSign.signHTML?trim>
|
||||
<div>
|
||||
${article.articleSign.signHTML}
|
||||
</div>
|
||||
</#if>
|
||||
${article.articleContent}
|
||||
<#if "" != article.articleSign.signHTML?trim>
|
||||
<div>
|
||||
${article.articleSign.signHTML}
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
<div class="post__toc">
|
||||
<#if article?? && article.articleToC?? && article.articleToC?size > 0>
|
||||
<#include "../../common-template/toc.ftl"/>
|
||||
</#if>
|
||||
<#if article?? && article.articleToC?? && article.articleToC?size > 0>
|
||||
<#include "../../common-template/toc.ftl"/>
|
||||
</#if>
|
||||
</div>
|
||||
<div class="body--gray post__gray">
|
||||
<div class="wrapper comment">
|
||||
@ -118,17 +122,17 @@
|
||||
</span>
|
||||
<span class="post__arrow">
|
||||
<#if previousArticlePermalink??>
|
||||
<a href="${servePath}${previousArticlePermalink}" rel="prev"
|
||||
class="vditor-tooltipped__n vditor-tooltipped"
|
||||
pjax-title="${previousArticleTitle}"
|
||||
aria-label="${previousArticleLabel}: ${previousArticleTitle}">←</a>
|
||||
<a href="${servePath}${previousArticlePermalink}" rel="prev"
|
||||
class="vditor-tooltipped__n vditor-tooltipped"
|
||||
pjax-title="${previousArticleTitle}"
|
||||
aria-label="${previousArticleLabel}: ${previousArticleTitle}">←</a>
|
||||
</#if>
|
||||
|
||||
<#if nextArticlePermalink??>
|
||||
<a href="${servePath}${nextArticlePermalink}" rel="next"
|
||||
class="vditor-tooltipped__n vditor-tooltipped"
|
||||
pjax-title="${nextArticleTitle}"
|
||||
aria-label="${nextArticleLabel}: ${nextArticleTitle}">→</a>
|
||||
<a href="${servePath}${nextArticlePermalink}" rel="next"
|
||||
class="vditor-tooltipped__n vditor-tooltipped"
|
||||
pjax-title="${nextArticleTitle}"
|
||||
aria-label="${nextArticleLabel}: ${nextArticleTitle}">→</a>
|
||||
</#if>
|
||||
<a href="javascript:Util.goTop()" class="vditor-tooltipped__n vditor-tooltipped"
|
||||
aria-label="${goTopLabel}">↑</a>
|
||||
@ -137,7 +141,7 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<#if pjax><!---- pjax {#pjax} end ----></#if>
|
||||
<#if pjax><!---- pjax {#pjax} end ----></#if>
|
||||
</main>
|
||||
<#include "footer.ftl">
|
||||
|
||||
|
@ -318,6 +318,11 @@ a:active, a:focus, a:hover {
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
&__sup {
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
}
|
||||
|
||||
&__slant {
|
||||
transform: rotate(-10deg) translate(10px, -10px);
|
||||
opacity: .7;
|
||||
@ -811,4 +816,4 @@ a:active, a:focus, a:hover {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
0
Pinghsu/images/ico.png
Executable file → Normal file
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
2
Pinghsu/js/common.min.js
vendored
@ -1 +1 @@
|
||||
var Skin={init:function(){new Headroom($("header")[0],{tolerance:0,offset:70,classes:{initial:"header",pinned:"header--down",unpinned:"header--up",top:"header",notTop:"header",bottom:"header",notBottom:"header"}}).init(),Util.initPjax(function(){0===$(".post__fix").length?$("body").addClass("body--gray"):$("body").removeClass("body--gray"),$(".header__nav a").each(function(){$(".header__nav a").removeClass("current"),this.href===location.href&&(this.className="current")}),Skin._initToc()}),$(".header__nav a").each(function(){this.href===location.href&&(this.className="current")}).click(function(){$(".header__nav a").removeClass("current"),this.href===location.href&&(this.className="current")})},_initToc:function(){if(0!==$(".article__toc").length){$(".post__toc").css("left",$(".post").offset().left+$(".post").outerWidth());var s=$(".vditor-reset [id^=b3_solo_h]"),r=$(".article__toc");$(window).unbind("scroll").scroll(function(t){if(0===$(".article__toc li").length)return!1;if(72<$(window).scrollTop()){$(".post__toc").show();var e=[];s.each(function(t){e.push({id:this.id,offsetTop:this.offsetTop})});for(var i=$(window).scrollTop(),n=0,o=e.length;n<o;n++)if(i<e[n].offsetTop-20){r.find("li").removeClass("current");var a=0<n?n-1:0;r.find('a[href="#'+e[a].id+'"]').parent().addClass("current");break}i>=e[e.length-1].offsetTop-20&&(r.find("li").removeClass("current"),r.find("li:last").addClass("current"))}else $(".post__toc").hide()}),$(window).scroll()}},_initShare:function(){var t=$(".post__share"),e=t.find(".post__code"),i=e.data("url"),n=e.data("avatar"),o=encodeURIComponent(e.data("title")+" - "+e.data("blogtitle")),a=encodeURIComponent(i),s={};s.weibo="http://v.t.sina.com.cn/share/share.php?title="+o+"&url="+a+"&pic="+n,s.qqz="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url="+a+"&sharesource=qzone&title="+o+"&pics="+n,s.twitter="https://twitter.com/intent/tweet?status="+o+" "+a,t.find("span").click(function(){var t=$(this).data("type");if(t)return"wechat"===t?(0===e.find("canvas").length?$.ajax({method:"GET",url:Label.staticServePath+"/js/lib/jquery.qrcode.min.js",dataType:"script",cache:!0,success:function(){e.qrcode({width:128,height:128,text:i})}}):e.find("canvas").slideToggle(),!1):void window.open(s[t],"_blank","top=100,left=200,width=648,height=618")})},initArticle:function(){new Headroom($(".post__fix")[0],{tolerance:0,offset:48,classes:{initial:"post__fix",pinned:"post__fix--pinned",unpinned:"post__fix--unpinned",top:"post__fix",notTop:"post__fix",bottom:"post__fix",notBottom:"post__fix"}}).init(),Skin._initShare(),Skin._initToc()}};Skin.init();
|
||||
var Skin={init:function(){new Headroom($("header")[0],{tolerance:0,offset:70,classes:{initial:"header",pinned:"header--down",unpinned:"header--up",top:"header",notTop:"header",bottom:"header",notBottom:"header"}}).init(),Util.initPjax((function(){0===$(".post__fix").length?$("body").addClass("body--gray"):$("body").removeClass("body--gray"),$(".header__nav a").each((function(){$(".header__nav a").removeClass("current"),this.href===location.href&&(this.className="current")})),Skin._initToc()})),$(".header__nav a").each((function(){this.href===location.href&&(this.className="current")})).click((function(){$(".header__nav a").removeClass("current"),this.href===location.href&&(this.className="current")}))},_initToc:function(){if(0!==$(".article__toc").length){$(".post__toc").css("left",$(".post").offset().left+$(".post").outerWidth());var t=$(".vditor-reset [id^=b3_solo_h]"),e=$(".article__toc");$(window).unbind("scroll").scroll((function(i){if(0===$(".article__toc li").length)return!1;if($(window).scrollTop()>72){$(".post__toc").show();var n=[];t.each((function(t){n.push({id:this.id,offsetTop:this.offsetTop})}));for(var o=$(window).scrollTop(),a=0,s=n.length;a<s;a++)if(o<n[a].offsetTop-20){e.find("li").removeClass("current");var r=a>0?a-1:0;e.find('a[href="#'+n[r].id+'"]').parent().addClass("current");break}o>=n[n.length-1].offsetTop-20&&(e.find("li").removeClass("current"),e.find("li:last").addClass("current"))}else $(".post__toc").hide()})),$(window).scroll()}},_initShare:function(){var t=$(".post__share"),e=t.find(".post__code"),i=e.data("url"),n=e.data("avatar"),o=encodeURIComponent(e.data("title")+" - "+e.data("blogtitle")),a=encodeURIComponent(i),s={};s.weibo="http://v.t.sina.com.cn/share/share.php?title="+o+"&url="+a+"&pic="+n,s.qqz="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url="+a+"&sharesource=qzone&title="+o+"&pics="+n,s.twitter="https://twitter.com/intent/tweet?status="+o+" "+a,t.find("span").click((function(){var t=$(this).data("type");if(t)return"wechat"===t?(0===e.find("canvas").length?$.ajax({method:"GET",url:Label.staticServePath+"/js/lib/jquery.qrcode.min.js",dataType:"script",cache:!0,success:function(){e.qrcode({width:128,height:128,text:i})}}):e.find("canvas").slideToggle(),!1):void window.open(s[t],"_blank","top=100,left=200,width=648,height=618")}))},initArticle:function(){new Headroom($(".post__fix")[0],{tolerance:0,offset:48,classes:{initial:"post__fix",pinned:"post__fix--pinned",unpinned:"post__fix--unpinned",top:"post__fix",notTop:"post__fix",bottom:"post__fix",notBottom:"post__fix"}}).init(),Skin._initShare(),Skin._initToc()}};Skin.init();
|
2
Pinghsu/js/headroom.min.js
vendored
@ -38,18 +38,10 @@
|
||||
</h2>
|
||||
<div class="posttime-blue">
|
||||
<div class="posttime-MY">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yyyy-MM")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yyyy-MM")}
|
||||
</#if>
|
||||
</div>
|
||||
<div class="posttime-D">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("dd")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("dd")}
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
<div class="article-abstract">
|
||||
@ -110,4 +102,4 @@
|
||||
</#if>
|
||||
${sumLabel} ${paginationPageCount} ${pageLabel}
|
||||
</div>
|
||||
</#if>
|
||||
</#if>
|
||||
|
@ -56,18 +56,10 @@
|
||||
</h2>
|
||||
<div class="posttime-blue">
|
||||
<div class="posttime-MY">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yyyy-MM")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yyyy-MM")}
|
||||
</#if>
|
||||
</div>
|
||||
<div class="posttime-D">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("dd")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("dd")}
|
||||
</#if>
|
||||
</div>
|
||||
</div>
|
||||
<div class="article-abstract">
|
||||
@ -152,6 +144,6 @@
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
|
||||
</#if>
|
||||
</@comment_script>
|
||||
</@comment_script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -44,11 +44,7 @@
|
||||
</a>
|
||||
<span class="dateIcon"></span>
|
||||
<span class="left">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
</#if>
|
||||
</span>
|
||||
</div>
|
||||
<div class="right">
|
||||
@ -100,4 +96,4 @@
|
||||
</#if>
|
||||
${sumLabel} ${paginationPageCount} ${pageLabel}
|
||||
</div>
|
||||
</#if>
|
||||
</#if>
|
||||
|
@ -58,11 +58,7 @@
|
||||
${article.authorName}
|
||||
</a>
|
||||
<span class="dateIcon left"></span>
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
</#if>
|
||||
</div>
|
||||
<div class="right">
|
||||
<a rel="nofollow" href="${servePath}${article.articlePermalink}#comments" class="left">
|
||||
@ -137,7 +133,7 @@
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
|
||||
</#if>
|
||||
</@comment_script>
|
||||
</@comment_script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -24,11 +24,7 @@
|
||||
<div class="article-abstract article-image">
|
||||
<div class="fn-clear">
|
||||
<div class="article-date" data-ico="">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yy-MM-dd HH:mm")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yy-MM-dd HH:mm")}
|
||||
</#if>
|
||||
</div>
|
||||
<div class="fn-right">
|
||||
<a rel="nofollow" data-ico="" href="${servePath}${article.articlePermalink}#comments">
|
||||
|
@ -42,14 +42,10 @@
|
||||
<#include "header.ftl">
|
||||
<div class="article-header">
|
||||
<span class="article-date" data-ico="">
|
||||
<#if article.hasUpdated>
|
||||
${article.articleUpdateDate?string("yy-MM-dd HH:mm")}
|
||||
<#else>
|
||||
${article.articleCreateDate?string("yy-MM-dd HH:mm")}
|
||||
</#if>
|
||||
</span>
|
||||
|
||||
<h2>
|
||||
<h2>
|
||||
<#if article.articlePutTop>
|
||||
<span>
|
||||
[${topArticleLabel}]
|
||||
@ -104,6 +100,6 @@
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
MetroHot.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
|
||||
</#if>
|
||||
</@comment_script>
|
||||
</@comment_script>
|
||||
</body>
|
||||
</html>
|
||||
|
2
metro-hot/js/metro-hot.min.js
vendored
@ -1 +1 @@
|
||||
var MetroHot={headerH:$("#header").height()+30+($("#header > div").get(1)?30:0),responsiveType:"large",goTranslate:function(){window.open("http://translate.google.com/translate?sl=auto&tl=auto&u="+location.href)},init:function(){var e="";$("#admin a").each(function(){-1<$(this).attr("href").indexOf("/logout")&&(e=$(this).attr("href"))}),$("#logout, .logout").attr("href",e),$(".header .title, .navigation").mouseover(function(){$(".navigation").show()}).mouseout(function(){$(".navigation").hide()}),$(".header .title").click(function(){window.location.href=Label.servePath});var t=$("#top > span").first().text();if($(".online-count .text").append(t.substr(1,t.length)),1===$("#dynamic").length)return $(window).scroll(function(){$(window).scrollTop()>MetroHot.headerH?$("#goTop").fadeIn("slow"):$("#goTop").hide()}).click(function(e){"title"!==e.target.className&&"title"!==e.target.parentElement.className&&$(".navigation").slideUp()}),void $("body").css("min-height","inherit");$(window).scroll(function(){$(window).scrollTop()>MetroHot.headerH?$("#goTop").fadeIn("slow"):$("#goTop").hide()}).click(function(e){"title"!==e.target.className&&"title"!==e.target.parentElement.className&&$(".navigation").slideUp()}).resize(function(){var e=window.innerWidth,t="large";460<e&&e<=860?t="mid":window<460&&(t="small"),MetroHot.responsiveType!==t&&($(window).scroll(),MetroHot.responsiveType)}),$(window).scroll()},loadImg:function(e){e.style.marginTop=(220-e.height)/2+"px"},share:function(){var e=$(".share .text"),t=e.find(".icon-wechat"),a=t.data("url"),n=t.data("avatar"),i=encodeURIComponent(t.data("title")+" - "+t.data("blogtitle")),l=encodeURIComponent(a),r={};r.weibo="http://v.t.sina.com.cn/share/share.php?title="+i+"&url="+l+"&pic="+n,r.qqz="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url="+l+"&sharesource=qzone&title="+i+"&pics="+n,r.twitter="https://twitter.com/intent/tweet?status="+i+" "+l,e.find("span").click(function(){var e=$(this).data("type");if(e)return"wechat"===e?(0===t.find("canvas").length?$.ajax({method:"GET",url:Label.staticServePath+"/js/lib/jquery.qrcode.min.js",dataType:"script",cache:!0,success:function(){t.qrcode({width:111,height:111,text:a})}}):t.find("canvas").slideToggle(),!1):void window.open(r[e],"_blank","top=100,left=200,width=648,height=618")})},loadRandomArticles:function(){$.ajax({url:Label.servePath+"/articles/random",type:"POST",success:function(e,t){var a=e.randomArticles;if(a&&0!==a.length){for(var n="",i=0;i<a.length&&i<5;i++){var l=a[i],r=l.articleTitle;n+="<li><a rel='nofollow' title='"+r+"' href='"+Label.servePath+l.articlePermalink+"'>"+r+"</a></li>"}var o="<ul>"+n+"</ul>";$("#randomArticles .text").append(o)}else $("#randomArticles").remove()}})},loadRelevantArticles:function(e){$.ajax({url:Label.servePath+"/article/id/"+e+"/relevant/articles",type:"GET",success:function(e,t){var a=e.relevantArticles;if(a&&0!==a.length){for(var n="",i=0;i<a.length&&i<5;i++){var l=a[i],r=l.articleTitle;n+="<li><a rel='nofollow' title='"+r+"' href='"+Label.servePath+l.articlePermalink+"'>"+r+"</a></li>"}var o="<ul>"+n+"</ul>";$("#relevantArticles .text").append(o)}else $("#relevantArticles").remove()},error:function(){$("#relevantArticles").remove()}})},loadExternalRelevantArticles:function(e){var t=this.tips;try{$.ajax({url:"http://rhythm.b3log.org:80/get-articles-by-tags.do?tags="+e+"&blogHost="+t.blogHost+"&paginationPageSize="+t.externalRelevantArticlesDisplayCount,type:"GET",cache:!0,dataType:"jsonp",error:function(){$("#externalRelevantArticles").remove()},success:function(e,t){var a=e.articles;if(a&&0!==a.length){for(var n="",i=0;i<a.length&&i<5;i++){var l=a[i],r=l.articleTitle;n+="<li><a rel='nofollow' title='"+r+"' target='_blank' href='"+l.articlePermalink+"'>"+r+"</a></li>"}var o="<ul>"+n+"</ul>";$("#externalRelevantArticles .text").append(o)}else $("#externalRelevantArticles").remove()}})}catch(e){$("#externalRelevantArticles").remove()}},goCmt:function(){$("html, body").animate({scrollTop:$(".comment-disabled").get(0).offsetTop})}};MetroHot.init(),0<$(".article-header").length&&MetroHot.share();
|
||||
var MetroHot={headerH:$("#header").height()+30+($("#header > div").get(1)?30:0),responsiveType:"large",goTranslate:function(){window.open("http://translate.google.com/translate?sl=auto&tl=auto&u="+location.href)},init:function(){var e="";$("#admin a").each((function(){$(this).attr("href").indexOf("/logout")>-1&&(e=$(this).attr("href"))})),$("#logout, .logout").attr("href",e),$(".header .title, .navigation").mouseover((function(){$(".navigation").show()})).mouseout((function(){$(".navigation").hide()})),$(".header .title").click((function(){window.location.href=Label.servePath}));var t=$("#top > span").first().text();if($(".online-count .text").append(t.substr(1,t.length)),1===$("#dynamic").length)return $(window).scroll((function(){$(window).scrollTop()>MetroHot.headerH?$("#goTop").fadeIn("slow"):$("#goTop").hide()})).click((function(e){"title"!==e.target.className&&"title"!==e.target.parentElement.className&&$(".navigation").slideUp()})),void $("body").css("min-height","inherit");$(window).scroll((function(){$(window).scrollTop()>MetroHot.headerH?$("#goTop").fadeIn("slow"):$("#goTop").hide()})).click((function(e){"title"!==e.target.className&&"title"!==e.target.parentElement.className&&$(".navigation").slideUp()})).resize((function(){var e=window.innerWidth,t="large";e>460&&e<=860?t="mid":window<460&&(t="small"),MetroHot.responsiveType!==t&&($(window).scroll(),MetroHot.responsiveType)})),$(window).scroll()},loadImg:function(e){e.style.marginTop=(220-e.height)/2+"px"},share:function(){var e=$(".share .text"),t=e.find(".icon-wechat"),a=t.data("url"),n=t.data("avatar"),i=encodeURIComponent(t.data("title")+" - "+t.data("blogtitle")),l=encodeURIComponent(a),r={};r.weibo="http://v.t.sina.com.cn/share/share.php?title="+i+"&url="+l+"&pic="+n,r.qqz="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url="+l+"&sharesource=qzone&title="+i+"&pics="+n,r.twitter="https://twitter.com/intent/tweet?status="+i+" "+l,e.find("span").click((function(){var e=$(this).data("type");if(e)return"wechat"===e?(0===t.find("canvas").length?$.ajax({method:"GET",url:Label.staticServePath+"/js/lib/jquery.qrcode.min.js",dataType:"script",cache:!0,success:function(){t.qrcode({width:111,height:111,text:a})}}):t.find("canvas").slideToggle(),!1):void window.open(r[e],"_blank","top=100,left=200,width=648,height=618")}))},loadRandomArticles:function(){$.ajax({url:Label.servePath+"/articles/random",type:"POST",success:function(e,t){var a=e.randomArticles;if(a&&0!==a.length){for(var n="",i=0;i<a.length&&i<5;i++){var l=a[i],r=l.articleTitle;n+="<li><a rel='nofollow' title='"+r+"' href='"+Label.servePath+l.articlePermalink+"'>"+r+"</a></li>"}var o="<ul>"+n+"</ul>";$("#randomArticles .text").append(o)}else $("#randomArticles").remove()}})},loadRelevantArticles:function(e){$.ajax({url:Label.servePath+"/article/id/"+e+"/relevant/articles",type:"GET",success:function(e,t){var a=e.relevantArticles;if(a&&0!==a.length){for(var n="",i=0;i<a.length&&i<5;i++){var l=a[i],r=l.articleTitle;n+="<li><a rel='nofollow' title='"+r+"' href='"+Label.servePath+l.articlePermalink+"'>"+r+"</a></li>"}var o="<ul>"+n+"</ul>";$("#relevantArticles .text").append(o)}else $("#relevantArticles").remove()},error:function(){$("#relevantArticles").remove()}})},loadExternalRelevantArticles:function(e){var t=this.tips;try{$.ajax({url:"http://rhythm.b3log.org:80/get-articles-by-tags.do?tags="+e+"&blogHost="+t.blogHost+"&paginationPageSize="+t.externalRelevantArticlesDisplayCount,type:"GET",cache:!0,dataType:"jsonp",error:function(){$("#externalRelevantArticles").remove()},success:function(e,t){var a=e.articles;if(a&&0!==a.length){for(var n="",i=0;i<a.length&&i<5;i++){var l=a[i],r=l.articleTitle;n+="<li><a rel='nofollow' title='"+r+"' target='_blank' href='"+l.articlePermalink+"'>"+r+"</a></li>"}var o="<ul>"+n+"</ul>";$("#externalRelevantArticles .text").append(o)}else $("#externalRelevantArticles").remove()}})}catch(e){$("#externalRelevantArticles").remove()}},goCmt:function(){$("html, body").animate({scrollTop:$(".comment-disabled").get(0).offsetTop})}};MetroHot.init(),$(".article-header").length>0&&MetroHot.share();
|
@ -39,7 +39,7 @@
|
||||
<#list archiveDates as archiveDate>
|
||||
<article>
|
||||
<header class="post-header">
|
||||
<h1>
|
||||
<h2>
|
||||
<#if "en" == localeString?substring(0, 2)>
|
||||
<a class="post-title" href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}">
|
||||
${archiveDate.monthName} ${archiveDate.archiveDateYear}(${archiveDate.archiveDatePublishedArticleCount})
|
||||
@ -49,7 +49,7 @@
|
||||
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}(${archiveDate.archiveDatePublishedArticleCount})
|
||||
</a>
|
||||
</#if>
|
||||
</h1>
|
||||
</h2>
|
||||
</header>
|
||||
</article>
|
||||
</#list>
|
||||
|
@ -19,69 +19,73 @@
|
||||
-->
|
||||
<section class="posts-expand">
|
||||
<#list articles as article>
|
||||
<article class="post-item">
|
||||
<header>
|
||||
<h1>
|
||||
<a class="post-title-link" rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
<#if article.articlePutTop>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
<#if article.hasUpdated>
|
||||
<sup>
|
||||
<a class="post__sup" href="${servePath}${article.articlePermalink}">
|
||||
${updatedLabel}
|
||||
</a>
|
||||
</sup>
|
||||
</#if>
|
||||
</h1>
|
||||
<article class="post-item">
|
||||
<header>
|
||||
<h2>
|
||||
<a class="post-title-link" rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
<#if article.articlePutTop>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
<#if article.hasUpdated>
|
||||
<sup>
|
||||
<a class="post__sup" href="${servePath}${article.articlePermalink}">
|
||||
${updatedLabel}
|
||||
</a>
|
||||
</sup>
|
||||
</#if>
|
||||
</h2>
|
||||
|
||||
<div class="post-meta">
|
||||
<div class="post-meta">
|
||||
<span>
|
||||
${postTimeLabel}
|
||||
<#if article.articleCreateDate?datetime != article.articleUpdateDate?datetime>
|
||||
${updateTimeLabel}
|
||||
<#else>
|
||||
${postTimeLabel}
|
||||
</#if>
|
||||
<time>
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")}
|
||||
</time>
|
||||
</span>
|
||||
<span>
|
||||
<span>
|
||||
|
|
||||
<a href="${servePath}${article.articlePermalink}#comments">
|
||||
${article.articleCommentCount} ${cmtLabel}</a>
|
||||
</span>
|
||||
| ${viewsLabel} ${article.articleViewCount}°C
|
||||
| ${viewsLabel} ${article.articleViewCount}°C
|
||||
</div>
|
||||
</header>
|
||||
<div class="vditor-reset">
|
||||
${article.articleAbstract}
|
||||
</div>
|
||||
</header>
|
||||
<div class="vditor-reset">
|
||||
${article.articleAbstract}
|
||||
</div>
|
||||
<div class="post-more-link">
|
||||
<a href="${servePath}${article.articlePermalink}#more" rel="contents">
|
||||
${readLabel} »
|
||||
</a>
|
||||
</div>
|
||||
</article>
|
||||
<div class="post-more-link">
|
||||
<a href="${servePath}${article.articlePermalink}#more" rel="contents">
|
||||
${readLabel} »
|
||||
</a>
|
||||
</div>
|
||||
</article>
|
||||
</#list>
|
||||
</section>
|
||||
|
||||
<#if 0 != paginationPageCount>
|
||||
<nav class="pagination">
|
||||
<#if 1 != paginationPageNums?first>
|
||||
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" class="extend next"><<</a>
|
||||
<a class="page-number" href="${servePath}${path}">1</a> ...
|
||||
</#if>
|
||||
<#list paginationPageNums as paginationPageNum>
|
||||
<#if paginationPageNum == paginationCurrentPageNum>
|
||||
<span class="page-number current">${paginationPageNum}</span>
|
||||
<#else>
|
||||
<a class="page-number" href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
|
||||
</#if>
|
||||
</#list>
|
||||
<#if paginationPageNums?last != paginationPageCount> ...
|
||||
<a href="${servePath}${path}?p=${paginationPageCount}" class="page-number">${paginationPageCount}</a>
|
||||
<a href="${servePath}${path}?p=${paginationNextPageNum}" class="extend next">>></a>
|
||||
</#if>
|
||||
</nav>
|
||||
</#if>
|
||||
<nav class="pagination">
|
||||
<#if 1 != paginationPageNums?first>
|
||||
<a href="${servePath}${path}?p=${paginationPreviousPageNum}" class="extend next"><<</a>
|
||||
<a class="page-number" href="${servePath}${path}">1</a> ...
|
||||
</#if>
|
||||
<#list paginationPageNums as paginationPageNum>
|
||||
<#if paginationPageNum == paginationCurrentPageNum>
|
||||
<span class="page-number current">${paginationPageNum}</span>
|
||||
<#else>
|
||||
<a class="page-number" href="${servePath}${path}?p=${paginationPageNum}">${paginationPageNum}</a>
|
||||
</#if>
|
||||
</#list>
|
||||
<#if paginationPageNums?last != paginationPageCount> ...
|
||||
<a href="${servePath}${path}?p=${paginationPageCount}" class="page-number">${paginationPageCount}</a>
|
||||
<a href="${servePath}${path}?p=${paginationNextPageNum}" class="extend next">>></a>
|
||||
</#if>
|
||||
</nav>
|
||||
</#if>
|
||||
|
145
next/article.ftl
@ -22,110 +22,115 @@
|
||||
<#include "../../common-template/macro-comment_script.ftl">
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<@head title="${article.articleTitle} - ${blogTitle}" description="${article.articleAbstract?html}">
|
||||
<link rel="stylesheet"
|
||||
href="${staticServePath}/skins/${skinDirName}/css/base.css?${staticResourceVersion}"/>
|
||||
<head>
|
||||
<@head title="${article.articleTitle} - ${blogTitle}" description="${article.articleAbstract?html}">
|
||||
<link rel="stylesheet"
|
||||
href="${staticServePath}/skins/${skinDirName}/css/base.css?${staticResourceVersion}"/>
|
||||
<#if previousArticlePermalink??>
|
||||
<link rel="prev" title="${previousArticleTitle}" href="${servePath}${previousArticlePermalink}">
|
||||
</#if>
|
||||
<#if nextArticlePermalink??>
|
||||
<link rel="next" title="${nextArticleTitle}" href="${servePath}${nextArticlePermalink}">
|
||||
</#if>
|
||||
</@head>
|
||||
</head>
|
||||
<body>
|
||||
<#include "header.ftl">
|
||||
<main class="main">
|
||||
<div class="wrapper">
|
||||
<div class="content">
|
||||
<article class="posts-expand">
|
||||
<header class="post-header">
|
||||
<h1 class="post-title">
|
||||
${article.articleTitle}
|
||||
<#if article.articlePutTop>
|
||||
</@head>
|
||||
</head>
|
||||
<body>
|
||||
<#include "header.ftl">
|
||||
<main class="main">
|
||||
<div class="wrapper">
|
||||
<div class="content">
|
||||
<article class="posts-expand">
|
||||
<header class="post-header">
|
||||
<h2 class="post-title">
|
||||
${article.articleTitle}
|
||||
<#if article.articlePutTop>
|
||||
<sup>
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
</h1>
|
||||
<div class="post-meta">
|
||||
</#if>
|
||||
</h2>
|
||||
<div class="post-meta">
|
||||
<span class="post-time">
|
||||
${postTimeLabel}
|
||||
<#if article.articleCreateDate?datetime != article.articleUpdateDate?datetime>
|
||||
${updateTimeLabel}
|
||||
<#else>
|
||||
${postTimeLabel}
|
||||
</#if>
|
||||
<time>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd")}
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")}
|
||||
</time>
|
||||
</span>
|
||||
<span class="post-comments-count">
|
||||
<span class="post-comments-count">
|
||||
|
|
||||
<a href="${servePath}${article.articlePermalink}#comments">
|
||||
${article.articleCommentCount} ${cmtLabel}</a>
|
||||
</span>
|
||||
| ${viewsLabel}
|
||||
${article.articleViewCount}°C
|
||||
</div>
|
||||
</header>
|
||||
| ${viewsLabel}
|
||||
${article.articleViewCount}°C
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="post-body post-body--article vditor-reset">
|
||||
${article.articleContent}
|
||||
<#if "" != article.articleSign.signHTML?trim>
|
||||
<div class="post-body post-body--article vditor-reset">
|
||||
${article.articleContent}
|
||||
<#if "" != article.articleSign.signHTML?trim>
|
||||
<div>
|
||||
${article.articleSign.signHTML}
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="post-tags">
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
</#if>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="post-tags">
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<a rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
${articleTag}</a>
|
||||
</#list>
|
||||
</div>
|
||||
<div class="post-nav fn-clear">
|
||||
<#if previousArticlePermalink??>
|
||||
</#list>
|
||||
</div>
|
||||
<div class="post-nav fn-clear">
|
||||
<#if previousArticlePermalink??>
|
||||
<div class="post-nav-prev post-nav-item fn-right">
|
||||
<a href="${servePath}${previousArticlePermalink}" rel="prev" title="${previousArticleTitle}">
|
||||
<a href="${servePath}${previousArticlePermalink}" rel="prev"
|
||||
title="${previousArticleTitle}">
|
||||
${previousArticleTitle} >
|
||||
</a>
|
||||
</div>
|
||||
</#if>
|
||||
<#if nextArticlePermalink??>
|
||||
</#if>
|
||||
<#if nextArticlePermalink??>
|
||||
<div class="post-nav-next post-nav-item fn-left">
|
||||
<a href="${servePath}${nextArticlePermalink}" rel="next" title="${nextArticleTitle}">
|
||||
< ${nextArticleTitle}
|
||||
< ${nextArticleTitle}
|
||||
</a>
|
||||
</div>
|
||||
</#if>
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
</div>
|
||||
<@comments commentList=articleComments article=article></@comments>
|
||||
<#if 0 != relevantArticlesDisplayCount>
|
||||
</#if>
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
</div>
|
||||
<@comments commentList=articleComments article=article></@comments>
|
||||
<#if 0 != relevantArticlesDisplayCount>
|
||||
<div id="relevantArticles"></div>
|
||||
</#if>
|
||||
<#if 0 != randomArticlesDisplayCount>
|
||||
<div id="randomArticles"></div>
|
||||
</#if>
|
||||
<#if externalRelevantArticlesDisplayCount?? && 0 != externalRelevantArticlesDisplayCount>
|
||||
<div id="externalRelevantArticles"></div>
|
||||
</#if>
|
||||
<#include "side.ftl">
|
||||
</div>
|
||||
</main>
|
||||
<#include "footer.ftl">
|
||||
<@comment_script oId=article.oId commentable=article.commentable>
|
||||
page.tips.externalRelevantArticlesDisplayCount = "${externalRelevantArticlesDisplayCount}";
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
|
||||
</#if>
|
||||
<#if 0 != randomArticlesDisplayCount>
|
||||
<div id="randomArticles"></div>
|
||||
</#if>
|
||||
<#if externalRelevantArticlesDisplayCount?? && 0 != externalRelevantArticlesDisplayCount>
|
||||
<div id="externalRelevantArticles"></div>
|
||||
</#if>
|
||||
<#include "side.ftl">
|
||||
</div>
|
||||
</main>
|
||||
<#include "footer.ftl">
|
||||
<@comment_script oId=article.oId commentable=article.commentable>
|
||||
page.tips.externalRelevantArticlesDisplayCount = "${externalRelevantArticlesDisplayCount}";
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
|
||||
</#if>
|
||||
<#if 0 != randomArticlesDisplayCount>
|
||||
page.loadRandomArticles();
|
||||
</#if>
|
||||
<#if 0 != relevantArticlesDisplayCount>
|
||||
</#if>
|
||||
<#if 0 != relevantArticlesDisplayCount>
|
||||
page.loadRelevantArticles('${article.oId}', '<h4>${relevantArticles1Label}</h4>');
|
||||
</#if>
|
||||
NexT.initArticle()
|
||||
</@comment_script>
|
||||
</body>
|
||||
</#if>
|
||||
NexT.initArticle()
|
||||
</@comment_script>
|
||||
</body>
|
||||
</html>
|
||||
|
0
next/css/fonts/icomoon.eot
Executable file → Normal file
0
next/css/fonts/icomoon.svg
Executable file → Normal file
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
0
next/css/fonts/icomoon.ttf
Executable file → Normal file
0
next/css/fonts/icomoon.woff
Executable file → Normal file
0
next/css/fonts/selection.json
Executable file → Normal file
2
next/js/next.min.js
vendored
@ -1 +1 @@
|
||||
var NexT={init:function(){$(".sidebar-toggle").click(function(){var i=$(".sidebar");$(this).hasClass("sidebar-active")?($(this).removeClass("sidebar-active"),$("body").animate({"padding-right":0}),i.animate({right:-320}),i.find("section").css("opacity",0)):($(this).addClass("sidebar-active"),$("body").animate({"padding-right":320}),i.animate({right:0},function(){i.find("section:first").animate({opacity:1})}))}),$(".site-nav-toggle").click(function(){$(".site-nav").slideToggle()}),$(document).ready(function(){setTimeout(function(){$(".logo-wrap").css("opacity",1),$(".logo-line-before i").animate({left:"0"},function(){$(".site-title").css("opacity",1).animate({top:0},function(){$(".menu").css("opacity",1).animate({"margin-top":"15px"}),$(".main").css("opacity",1).animate({top:"0"},function(){0<$(".article__toc li").length&&1e3<$(window).width()&&$(".sidebar-toggle").click()})})}),$(".logo-line-after i").animate({right:"0"})},500)})},initArticle:function(){0<$(".article__toc li").length&&1e3<$(window).width()&&($(".sidebar-toggle").addClass("has-toc"),this.initToc())},initToc:function(){var s=$(".vditor-reset [id^=b3_solo_h]"),c=$(".article__toc");$(window).scroll(function(i){if(0===$(".article__toc li").length)return!1;var t=[];s.each(function(i){t.push({id:this.id,offsetTop:this.offsetTop})});for(var e=$(window).scrollTop(),n=0,a=t.length;n<a;n++)if(e<t[n].offsetTop+200){c.find("li").removeClass("current");var o=0<n?n-1:0;c.find('a[href="#'+t[o].id+'"]').parent().addClass("current");break}e>=t[t.length-1].offsetTop+200&&(c.find("li").removeClass("current"),c.find("li:last").addClass("current"))}),$(window).scroll()}};NexT.init();
|
||||
var NexT={init:function(){$(".sidebar-toggle").click((function(){var i=$(".sidebar");$(this).hasClass("sidebar-active")?($(this).removeClass("sidebar-active"),$("body").animate({"padding-right":0}),i.animate({right:-320}),i.find("section").css("opacity",0)):($(this).addClass("sidebar-active"),$("body").animate({"padding-right":320}),i.animate({right:0},(function(){i.find("section:first").animate({opacity:1})})))})),$(".site-nav-toggle").click((function(){$(".site-nav").slideToggle()})),$(document).ready((function(){setTimeout((function(){$(".logo-wrap").css("opacity",1),$(".logo-line-before i").animate({left:"0"},(function(){$(".site-title").css("opacity",1).animate({top:0},(function(){$(".menu").css("opacity",1).animate({"margin-top":"15px"}),$(".main").css("opacity",1).animate({top:"0"},(function(){$(".article__toc li").length>0&&$(window).width()>1e3&&$(".sidebar-toggle").click()}))}))})),$(".logo-line-after i").animate({right:"0"})}),500)}))},initArticle:function(){$(".article__toc li").length>0&&$(window).width()>1e3&&($(".sidebar-toggle").addClass("has-toc"),this.initToc())},initToc:function(){var i=$(".vditor-reset [id^=b3_solo_h]"),t=$(".article__toc");$(window).scroll((function(e){if(0===$(".article__toc li").length)return!1;var n=[];i.each((function(i){n.push({id:this.id,offsetTop:this.offsetTop})}));for(var a=$(window).scrollTop(),o=0,s=n.length;o<s;o++)if(a<n[o].offsetTop+200){t.find("li").removeClass("current");var c=o>0?o-1:0;t.find('a[href="#'+n[c].id+'"]').parent().addClass("current");break}a>=n[n.length-1].offsetTop+200&&(t.find("li").removeClass("current"),t.find("li:last").addClass("current"))})),$(window).scroll()}};NexT.init();
|
@ -18,10 +18,11 @@
|
||||
|
||||
#
|
||||
# Description: Solo language configurations(en_US).
|
||||
# Version: 2.0.0.0, Feb 23, 2019
|
||||
# Version: 2.1.0.0, Aug 27, 2019
|
||||
# Author: Liyuan Li
|
||||
#
|
||||
|
||||
updateTimeLabel=Update At
|
||||
tocLabel=Article ToC
|
||||
siteViewLabel=Site
|
||||
viewsLabel=Heat
|
||||
|
@ -18,10 +18,11 @@
|
||||
|
||||
#
|
||||
# Description: Solo default language configurations(zh_CN).
|
||||
# Version: 2.0.0.0, Feb 23, 2019
|
||||
# Version: 2.1.0.0, Aug 27, 2019
|
||||
# Author: Liyuan Li
|
||||
#
|
||||
|
||||
updateTimeLabel=\u66F4\u65B0\u4E8E
|
||||
tocLabel=\u6587\u7AE0\u76EE\u5F55
|
||||
siteViewLabel=\u7AD9\u70B9\u6982\u89C8
|
||||
viewsLabel=\u70ED\u5EA6
|
||||
|
@ -38,11 +38,11 @@
|
||||
<#list mostUsedCategories as category>
|
||||
<article>
|
||||
<header class="post-header">
|
||||
<h1>
|
||||
<h2>
|
||||
<a class="post-title" href="${servePath}/category/${category.categoryURI}">
|
||||
${category.categoryTitle} (${category.categoryTagCnt})</a>
|
||||
<small>${category.categoryDescription}</small>
|
||||
</h1>
|
||||
</h2>
|
||||
</header>
|
||||
</article>
|
||||
</#list>
|
||||
|
@ -43,9 +43,9 @@
|
||||
<div class="article-list">
|
||||
<div class="item item--active">
|
||||
<time class="vditor-tooltipped vditor-tooltipped__n item__date"
|
||||
aria-label="${article.articleCreateDate?string("yyyy")}${yearLabel}">
|
||||
${article.articleCreateDate?string("MM")}${monthLabel}
|
||||
<span class="item__day">${article.articleCreateDate?string("dd")}</span>
|
||||
aria-label="${article.articleUpdateDate?string("yyyy")}${yearLabel}">
|
||||
${article.articleUpdateDate?string("MM")}${monthLabel}
|
||||
<span class="item__day">${article.articleUpdateDate?string("dd")}</span>
|
||||
</time>
|
||||
|
||||
<h2 class="item__title">
|
||||
@ -61,7 +61,7 @@
|
||||
|
||||
<div class="item__date--m fn__none">
|
||||
<i class="icon__date"></i>
|
||||
${article.articleCreateDate?string("yyyy-MM-dd")}
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd")}
|
||||
</div>
|
||||
|
||||
<div class="ft__center">
|
||||
|
0
nijigen/css/fonts/icomoon.eot
Executable file → Normal file
0
nijigen/css/fonts/icomoon.svg
Executable file → Normal file
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
0
nijigen/css/fonts/icomoon.ttf
Executable file → Normal file
0
nijigen/css/fonts/icomoon.woff
Executable file → Normal file
0
nijigen/css/fonts/selection.json
Executable file → Normal file
2
nijigen/js/common.min.js
vendored
@ -1 +1 @@
|
||||
var Skin={_initCommon:function(e){$(window).scroll(function(){125<$(window).scrollTop()?e.show():e.hide(),0<$(".side .article__toc").length&&768<$(window).width()&&(50<$(window).scrollTop()?$(".side").css("position","fixed"):$(".side").css("position","initial"))})},_initAnimation:function(){if(!("IntersectionObserver"in window))return $(".item").addClass("item--active"),!1;window.imageIntersectionObserver?window.imageIntersectionObserver.disconnect():window.imageIntersectionObserver=new IntersectionObserver(function(e){e.forEach(function(e){if(void 0===e.isIntersecting?0!==e.intersectionRatio:e.isIntersecting)$(e.target).addClass("item--active");else{if(1===$(e.target).closest(".side").length||1===$(e.target).closest("#articlePage").length||768<$(e.target).outerHeight())return;$(e.target).removeClass("item--active")}})}),$(".item").each(function(){window.imageIntersectionObserver.observe(this)})},init:function(){Util.initPjax(function(){Skin._initAnimation()}),Skin._initAnimation(),this._initCommon($(".icon__up")),$(".header__nav a, .header__m a").each(function(){this.href===location.href&&(this.className="current")}).click(function(){$(".header__nav a, .header__m a").removeClass("current"),this.className="current",$(".header__m .module__list").hide()}),$(".header__logo").click(function(){$(".header__nav a, .header__m a").removeClass("current")})},_initArticleCommon:function(){if(768<$(window).width()){if(0===$(".article__toc li").length)return void $(".side").css({height:"auto",position:"initial"});$("#articlePage").width($(".main").width()-310),$(".side").css({right:($(window).width()-$(".main").width())/2,position:"fixed",overflow:"auto",height:$(window).height()-30,top:30}),$(window).scroll(),$(".side").scrollTop(0)}},initArticle:function(){this._initArticleCommon(),setTimeout(function(){0===$("#externalRelevantArticlesWrap li").length&&($("#externalRelevantArticlesWrap").next().remove(),$("#externalRelevantArticlesWrap").remove()),0===$("#relevantArticlesWrap li").length&&($("#relevantArticlesWrap").prev().remove(),$("#relevantArticlesWrap").remove()),0===$("#randomArticlesWrap li").length&&($("#randomArticlesWrap").prev().remove(),$("#randomArticlesWrap").remove())},1e3)}};Skin.init();
|
||||
var Skin={_initCommon:function(e){$(window).scroll((function(){$(window).scrollTop()>125?e.show():e.hide(),$(".side .article__toc").length>0&&$(window).width()>768&&($(window).scrollTop()>50?$(".side").css("position","fixed"):$(".side").css("position","initial"))}))},_initAnimation:function(){if(!("IntersectionObserver"in window))return $(".item").addClass("item--active"),!1;window.imageIntersectionObserver?(window.imageIntersectionObserver.disconnect(),$(".item").each((function(){window.imageIntersectionObserver.observe(this)}))):(window.imageIntersectionObserver=new IntersectionObserver((function(e){e.forEach((function(e){if(void 0===e.isIntersecting?0!==e.intersectionRatio:e.isIntersecting)$(e.target).addClass("item--active");else{if(1===$(e.target).closest(".side").length||1===$(e.target).closest("#articlePage").length||$(e.target).outerHeight()>768)return;$(e.target).removeClass("item--active")}}))})),$(".item").each((function(){window.imageIntersectionObserver.observe(this)})))},init:function(){Util.initPjax((function(){Skin._initAnimation()})),Skin._initAnimation(),this._initCommon($(".icon__up")),$(".header__nav a, .header__m a").each((function(){this.href===location.href&&(this.className="current")})).click((function(){$(".header__nav a, .header__m a").removeClass("current"),this.className="current",$(".header__m .module__list").hide()})),$(".header__logo").click((function(){$(".header__nav a, .header__m a").removeClass("current")}))},_initArticleCommon:function(){if($(window).width()>768){if(0===$(".article__toc li").length)return void $(".side").css({height:"auto",position:"initial"});$("#articlePage").width($(".main").width()-310),$(".side").css({right:($(window).width()-$(".main").width())/2,position:"fixed",overflow:"auto",height:$(window).height()-30,top:30}),$(window).scroll(),$(".side").scrollTop(0)}},initArticle:function(){this._initArticleCommon(),setTimeout((function(){0===$("#externalRelevantArticlesWrap li").length&&($("#externalRelevantArticlesWrap").next().remove(),$("#externalRelevantArticlesWrap").remove()),0===$("#relevantArticlesWrap li").length&&($("#relevantArticlesWrap").prev().remove(),$("#relevantArticlesWrap").remove()),0===$("#randomArticlesWrap li").length&&($("#randomArticlesWrap").prev().remove(),$("#randomArticlesWrap").remove())}),1e3)}};Skin.init();
|
@ -18,7 +18,7 @@
|
||||
|
||||
-->
|
||||
<#list articles as article>
|
||||
<h1>
|
||||
<h2 class="h2">
|
||||
<a rel="bookmark" href="${servePath}${article.articlePermalink}">
|
||||
${article.articleTitle}
|
||||
</a>
|
||||
@ -34,28 +34,26 @@
|
||||
</a>
|
||||
</sup>
|
||||
</#if>
|
||||
</h1>
|
||||
</h2>
|
||||
<div class="vditor-reset">${article.articleAbstract}</div>
|
||||
<section class="meta">
|
||||
<p>
|
||||
${author1Label}<a rel="nofollow" href="${servePath}/authors/${article.authorId}">${article.authorName}</a> |
|
||||
<#if article.hasUpdated>
|
||||
<#if article.articleCreateDate?datetime != article.articleUpdateDate?datetime>
|
||||
${updateDateLabel}:
|
||||
${article.articleUpdateDate?string("yyyy-MM-dd HH:mm")}
|
||||
<#else>
|
||||
${createDateLabel}:
|
||||
${article.articleCreateDate?string("yyyy-MM-dd HH:mm")}
|
||||
</#if> | ${viewCount1Label} <a rel="nofollow" href="${servePath}${article.articlePermalink}">
|
||||
</#if> ${article.articleUpdateDate?string("yyyy-MM-dd HH:mm")} | ${viewCount1Label} <a rel="nofollow" href="${servePath}${article.articlePermalink}">
|
||||
<span class="left article-browserIcon" title="${viewLabel}"></span>
|
||||
${article.articleViewCount}
|
||||
</a> | ${commentCount1Label}
|
||||
</a> | ${commentCount1Label}
|
||||
<a rel="nofollow" href="${servePath}${article.articlePermalink}#comments">
|
||||
<span class="left articles-commentIcon" title="${commentLabel}"></span>
|
||||
${article.articleCommentCount}
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
${tags1Label}
|
||||
${tags1Label}
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<span>
|
||||
<a rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">
|
||||
@ -85,4 +83,4 @@
|
||||
</#if>
|
||||
${sumLabel} ${paginationPageCount} ${pageLabel}
|
||||
</div>
|
||||
</#if>
|
||||
</#if>
|
||||
|
@ -40,33 +40,33 @@
|
||||
<#include "header.ftl">
|
||||
<div id="b">
|
||||
<article>
|
||||
<h1>
|
||||
<h2 class="h2">
|
||||
${article.articleTitle}
|
||||
<#if article.articlePutTop>
|
||||
<sup class="red">
|
||||
${topArticleLabel}
|
||||
</sup>
|
||||
</#if>
|
||||
</h1>
|
||||
</h2>
|
||||
<section class="meta">
|
||||
<p>
|
||||
<p>
|
||||
${author1Label}<a rel="nofollow" href="${servePath}/authors/${article.authorId}">${article.authorName}</a> |
|
||||
<#if article.hasUpdated>
|
||||
${updateDateLabel}:${article.articleUpdateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
<#if article.articleCreateDate?datetime != article.articleUpdateDate?datetime>
|
||||
${updateDateLabel}:
|
||||
<#else>
|
||||
${createDateLabel}:${article.articleCreateDate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
</#if>
|
||||
${createDateLabel}:
|
||||
</#if>${article.articleUpdateDate?string("yyyy-MM-dd HH:mm")} |
|
||||
${viewCount1Label}<a rel="nofollow" href="${servePath}${article.articlePermalink}">
|
||||
<span class="left article-browserIcon" title="${viewLabel}"></span>
|
||||
${article.articleViewCount}
|
||||
</a> | ${commentCount1Label}
|
||||
</a> | ${commentCount1Label}
|
||||
<a rel="nofollow" href="${servePath}${article.articlePermalink}#comments">
|
||||
<span class="left articles-commentIcon" title="${commentLabel}"></span>
|
||||
${article.articleCommentCount}
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
${tags1Label}
|
||||
${tags1Label}
|
||||
<#list article.articleTags?split(",") as articleTag>
|
||||
<span>
|
||||
<a rel="tag" href="${servePath}/tags/${articleTag?url('UTF-8')}">${articleTag}</a><#if articleTag_has_next>,</#if>
|
||||
@ -111,11 +111,11 @@
|
||||
page.loadRandomArticles();
|
||||
</#if>
|
||||
<#if 0 != relevantArticlesDisplayCount>
|
||||
page.loadRelevantArticles('${article.oId}', '<h4>${relevantArticles1Label}</h4>');
|
||||
page.loadRelevantArticles('${article.oId}', '<h4 class="h4">${relevantArticles1Label}</h4>');
|
||||
</#if>
|
||||
<#if 0 != externalRelevantArticlesDisplayCount>
|
||||
page.loadExternalRelevantArticles("<#list article.articleTags?split(",") as articleTag>${articleTag}<#if articleTag_has_next>,</#if></#list>");
|
||||
</#if>
|
||||
</@comment_script>
|
||||
</@comment_script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -23,7 +23,7 @@ Version: 1.0
|
||||
Date: 2010-09-13
|
||||
Editor: Jonas Jacek
|
||||
License: CC Attribution-Share Alike 3.0 Unported
|
||||
Update: Dongxu Wang 2011-02-24
|
||||
Update: Dongxu Wang 2011-02-24
|
||||
@ http://dx.b3log.org
|
||||
==================================================*/
|
||||
/*
|
||||
@ -107,7 +107,7 @@ a.selected {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
H1, H3, H4, H5, H6 {
|
||||
.h2, .h4 {
|
||||
background: url(../images/ai4.png) no-repeat 0 7px;
|
||||
border-bottom: 1px solid #CCC;
|
||||
color: #666;
|
||||
@ -116,30 +116,18 @@ H1, H3, H4, H5, H6 {
|
||||
padding: 0 0 0 25px;
|
||||
}
|
||||
|
||||
H1 {
|
||||
.h2 {
|
||||
background: url(../images/ai4.png) no-repeat 0 6px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
H1 a {
|
||||
.h2 a {
|
||||
font-weight: bold;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
H2 {
|
||||
font-size: 14px;
|
||||
margin: 0 0 20px 0;
|
||||
}
|
||||
|
||||
H3 {
|
||||
background: url(../images/ai5.png) no-repeat 0 7px;
|
||||
}
|
||||
|
||||
H3, H4, H5, H6 {
|
||||
.h4 {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
background-position: 0 5px;
|
||||
}
|
||||
|
||||
@ -156,6 +144,7 @@ a.sup {
|
||||
&:link {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: #444;
|
||||
}
|
||||
|