first commit

This commit is contained in:
CaiCai 2015-10-09 18:43:40 +08:00
commit a92f834e7d
17 changed files with 1114 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

6
404.jade Executable file
View File

@ -0,0 +1,6 @@
html
head
title Not Found
+load('/template/style/css/style.scss')
.page_404
p 404 Not Foundvar assert = require("assert")

37
about.jade Normal file
View File

@ -0,0 +1,37 @@
extends base.jade
block content
.autopagerize_page_element:.content
.about.animated.fadeInDown
h3 是我
p 生活的花匠,互联网的裁缝,理想的士兵
h3 自嘲
p
| 经常嬉笑自嘲,假装不靠谱.
| 早就已经不是少年,但却是满腔少年心气.
h3 热爱
p
| 热爱我的职业是这辈子最幸福的事情,虽挖过的坑比填的坑还多,但乐此不疲.
h3 玩儿
p
| 玩,什么都玩,拼命的玩!喜欢接触新鲜玩意
h3 直白
p
| 不会拐弯抹角,不会阿谀奉承!
h3 硬广
p
| 如果需要老博客主题,请访问:http://old.cai-cai.me
p
| 主题Cais如需要请访问farbox模版页面,预览地址:
a(href="http://cais.cai-cai.me") 点我点我~
p
| 博客目前主题取名Anatole,预览地址:
a(href="http://anatole.cai-cai.me") 点我点我~
h3 联系
p
| 任何问题欢迎给我发邮件hi#cai-cai.me #=@或者twitter上@我~~
br
p
| 也可以用
a(href="https://telegram.me/hicaicai") Telegram
| 联系我

16
archive.jade Executable file
View File

@ -0,0 +1,16 @@
from mixins import make_pager
extends base.jade
block content
.autopagerize_page_element:.content
.archive.animated.fadeInDown
ul.list-with-title
entries = get_data(type='post',limit=300, sort='desc').group('-date:year')
for year, posts in entries
div.listing-title= year
ul.listing
for post in posts
.listing-item
.listing-post
a(href=post.url, title=post.title)= post.title
div.post-time
span.date= post.date.format("%m-%d")

86
base.jade Executable file
View File

@ -0,0 +1,86 @@
html
+i18n('Home', '首页', 'zh_cn')
+i18n('Albums', '相册', 'zh_cn')
+i18n('Categories', '分类', 'zh_cn')
+i18n('Archive', '归档', 'zh_cn')
+i18n('Tags', '标签', 'zh_cn')
+i18n('About', '关于', 'zh_cn')
+i18n('Links', '友链', 'zh_cn')
head
meta(http-equiv="Content-Type", content="text/html; charset=UTF-8")
block title
title= post.title or site.title
+mobile_meta()
meta(name="author", content="CaiCai,hi@cai-cai.me")
meta(name="keywords", content=site.configs.keywords.escaped)
meta(name="description", content=site.raw_content.escaped)
link(rel="stylesheet", type="text/css", href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&subset=latin,latin-ext")
link(rel="shortcut icon", href="/template/style/images/favicon.png",type="image/x-icon")
+load('font')
+get_resource("blog_basic.css")
+load('/template/style/css/style.scss')
body
.sidebar
.logo-title
.title.animated.fadeInDown
img(src="/template/style/images/logo@2x.png",style="width:127px;")
h3(title="")
a(href="https://www.caicai.me") {{ site.title }}
if site.raw_content
.description.animated.fadeInDown
p= '%s' % site.raw_content[:100]
ul.social-links.animated.fadeInDown
if site.configs.twitter
li
a(href="https://twitter.com/{{site.configs.twitter}}")
i.fa.fa-twitter
if site.configs.instagram
li
a(href="http://instagram.com/{{site.configs.instagram}}")
i.fa.fa-instagram
if site.configs.dribbble
li
a(href="https://dribbble.com/{{site.configs.dribbble}}")
i.fa.fa-dribbble
if site.configs.weibo
li
a(href="http://weibo.com/{{site.configs.weibo}}")
i.fa.fa-weibo
.footer
a(target="_blank", href="http://{{request.domain}}")
span Designed by
a(href="https://www.caicai.me") CaiCai
.by_farbox
a(href="http://www.farbox.com", target="_blank") Proudly published with Farbox!
.main
.page-top.animated.fadeInDown
.nav
li
if request.url_without_host=='/'
a.current(href="/") Home
else
a(href="/") Home
li
if request.url_without_host=='/about'
a.current(href="/about") About
else
a(href="/about") About
li
if request.url_without_host=='/archive'
a.current(href="/archive") Archive
else
a(href="/archive") Archive
.information
.back_btn
li
if post
a.fa.fa-chevron-left(onclick="window.history.go(-1)")
else
a.fa.fa-chevron-left(onclick="window.history.go(-1)",style="display:none;")
.avatar
img(src=site.avatar)
block content
+load('jquery')
+load("/template/style/js/jquery-migrate-1.2.1.min.js")
+load("/template/style/js/jquery.appear.js")

7
index.jade Executable file
View File

@ -0,0 +1,7 @@
from mixins import make_post, make_pager
extends base.jade
block content
.autopagerize_page_element:.content
for post in posts
+make_post(post, is_detail=False)
+make_pager('Newer Posts', 'Older Posts')

54
interface.json Executable file
View File

@ -0,0 +1,54 @@
[
{},
{},
{},
{},
{
"title": "Extra",
"title_zh_cn": "更多",
"icon": "align-justify",
"groups":[
{
"title": "My Social",
"title_zh_cn": "我的社交",
"cells":[
{
"parts_per_line": 4,
"parts":[
{
"key": "weibo",
"title": "Weibo",
"title_zh_cn": "微博",
"placeholder": "WeiBo ID",
"model": "text"
},
{
"key": "twitter",
"title": "Twitter",
"placeholder": "Twitter ID",
"model": "text"
}
,
{
"key": "instagram",
"title": "Instagram",
"placeholder": "Instagram ID",
"model": "text"
}
,
{
"key": "dribbble",
"title": "Dribbble",
"placeholder": "Dribbble ID",
"model": "text"
}
]
}
]
}
]
}
]

29
mixins.jade Executable file
View File

@ -0,0 +1,29 @@
mixin make_post(post, is_detail=False)
.post.animated.fadeInDown
.post-title
h3
if is_detail
a= post.title
else
a(href="{{post.url}}")= post.title
if is_detail
.post-content= post.content
else
.post-content= post.content.limit(200).no_pic
.post-footer:.meta
.info
i.fa.fa-calendar
span.date= post.date.format("%Y-%m-%d")
if site.configs.disqus
i.fa.fa-comment-o
a(href="{{post.url}}#disqus_thread") Comments
mixin make_pager(pre_text, next_text)
.pagination
ul.clearfix
if paginator.has_next
li.next.pagbuttons
a.btn(role="navigation",href="{{ paginator.next_page_url}}")= next_text
if paginator.has_previous
li.pre.pagbuttons
a.btn(role="navigation",href="{{ paginator.previous_page_url }}")= pre_text

14
post+markdown+pages.jade Executable file
View File

@ -0,0 +1,14 @@
from mixins import make_post
extends base.jade
block content
.autopagerize_page_element:.content:.post-page
+make_post(post, is_detail=True)
.share
.evernote
a.fa.fa-bookmark(href="javascript:(function(){EN_CLIP_HOST='http://www.evernote.com';try{var%20x=document.createElement('SCRIPT');x.type='text/javascript';x.src=EN_CLIP_HOST+'/public/bookmarkClipper.js?'+(new%20Date().getTime()/100000);document.getElementsByTagName('head')[0].appendChild(x);}catch(e){location.href=EN_CLIP_HOST+'/clip.action?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title);}})();", ref="nofollow", target="_blank")
.weibo
a.fa.fa-weibo(href="javascript:void((function(s,d,e){try{}catch(e){}var f='http://service.weibo.com/share/share.php?',u=d.location.href,p=['url=',e(u),'&title=',e(d.title),'&appkey=2924220432'].join('');function a(){if(!window.open([f,p].join(''),'mb',['toolbar=0,status=0,resizable=1,width=620,height=450,left=',(s.width-620)/2,',top=',(s.height-450)/2].join('')))u.href=[f,p].join('');};if(/Firefox/.test(navigator.userAgent)){setTimeout(a,0)}else{a()}})(screen,document,encodeURIComponent));")
.twitter
a.fa.fa-twitter(href="http://twitter.com/home?status={{request.url}} ,{{site.title}},{{post.title}},;")
include include/comments

BIN
style/.DS_Store vendored Normal file

Binary file not shown.

BIN
style/css/.DS_Store vendored Normal file

Binary file not shown.

762
style/css/style.scss Executable file
View File

@ -0,0 +1,762 @@
/*basic styles starts*/
html {
background-color: #fff;
-webkit-font-smoothing: antialiased;
}
body {
color: rgba(0, 0, 0, 0.5);
font-family: "Helvetica Neue",Helvetica,"Hiragino Sans GB","STHeitiSC-Light","Microsoft YaHei","微软雅黑",Arial,sans-serif;
font-size: 15px;
width: 100%;
margin: 0 auto 30px auto;
background-color: #fff;
}
p {
line-height: 1.9em;
font-weight: 400;
font-size: 14px;
}
a {
text-decoration: none;
}
a:link, a:visited {
opacity: 1;
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
-o-transition: all .15s linear;
-ms-transition: all .15s linear;
transition: all .15s linear;
color: #424242;
}
a:hover, a:active {
color: #555;
}
/*basic styles ends*/
/*animation starts*/
.animated {
-webkit-animation-fill-mode: both;
-moz-animation-fill-mode: both;
-ms-animation-fill-mode: both;
-o-animation-fill-mode: both;
animation-fill-mode: both;
-webkit-animation-duration: 1s;
-moz-animation-duration: 1s;
-ms-animation-duration: 1s;
-o-animation-duration: 1s;
animation-duration: 1s;
}
.animated.hinge {
-webkit-animation-duration: 1s;
-moz-animation-duration: 1s;
-ms-animation-duration: 1s;
-o-animation-duration: 1s;
animation-duration: 1s;
}
@-webkit-keyframes fadeInDown {
0% {
opacity: 0;
-webkit-transform: translateY(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
}
}
@-moz-keyframes fadeInDown {
0% {
opacity: 0;
-moz-transform: translateY(-20px);
}
100% {
opacity: 1;
-moz-transform: translateY(0);
}
}
@-o-keyframes fadeInDown {
0% {
opacity: 0;
-o-transform: translateY(-20px);
}
100% {
opacity: 1;
-o-transform: translateY(0);
}
}
@keyframes fadeInDown {
0% {
opacity: 0;
transform: translateY(-20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.fadeInDown {
-webkit-animation-name: fadeInDown;
-moz-animation-name: fadeInDown;
-o-animation-name: fadeInDown;
animation-name: fadeInDown;
}
/*animation ends*/
.content {
height: auto;
float: right;
width: 60%;
margin-top:60px;
}
.page-top{
width: 59.9%;
position: fixed;
right: 0;
z-index: 9999;
background-color: #fff;
height: 60px;
border-bottom: 1px solid #f2f2f2;
.nav{
list-style:none;
padding:18px 30px;
float: left;
font-size:12px;
li{
position: relative;
display: initial;
padding-right:20px;
}
a {
color:#5A5A5A;
}
a:hover{
color:#464545;
}
a.current{
color:#5A5A5A;
padding-bottom: 22px;
border-bottom: 1px solid #5A5A5A;
}
}
.information{
float: right;
padding-top: 12px;
padding-right: 20px;
.avatar{
float: right;
img{
width: 32px;
height: 32px;
border-radius: 300px;
}
}
.back_btn{
float: left;
padding-top: 5px;
margin-right:-10px;
li{
display: initial;
padding-right:40px;
}
}
}
}
.sidebar {
width: 40%;
-webkit-background-size: cover;
background-size: cover;
background-color: #fff;
height: 100%;
transition:0.8s;
top: 0;
left:0;
position: fixed;
border-right: 1px solid #f2f2f2;
.logo-title{
text-align: center;
padding-top:240px;
.description {
font-size: 14px;
color: #565654;
}
.logo {
margin: 0 auto;
}
.title{
h3 {
text-transform: uppercase;
font-size: 2rem;
font-weight: bold;
letter-spacing: 2px;
line-height: 1;
margin:0;
}
a {
text-decoration: none;
color: #464646;
font-size: 2rem;
font-weight: bold;
}
}
}
.social-links {
list-style: none;
padding: 0;
font-size: 14px;
text-align: center;
i{
margin-right: 3px;
}
li {
display: inline;
padding: 0 4px;
line-height: 0;
}
a {
color: #565654;
}
}
}
.post {
background-color: #FFF;
margin: 30px;
.post-title{
h1 {
text-transform: uppercase;
font-size: 30px;
letter-spacing: 5px;
line-height: 1;
}
h2 {
text-transform: uppercase;
letter-spacing: 1px;
font-size: 28px;
line-height: 1;
font-weight: 600;
color: #5f5f5f;
}
h3 {
text-transform: uppercase;
letter-spacing: 1px;
line-height: 1;
font-weight: 600;
color: #464646;
font-size: 22px;
margin:0;
}
a {
text-decoration: none;
letter-spacing: 1px;
color: #5f5f5f;
font-family: Open Sans;
}
}
.post-content{
a {
text-decoration: none;
letter-spacing: 1px;
color: #4786D6;
}
h3{
color: #5F5F5F;
font-size:22px;
font-weight:600;
font-family: Open Sans;
}
h4 {
color: #5F5F5F;
font-size:16px;
font-family: Open Sans;
}
img {
min-width: 100%;
}
}
.post-footer {
padding: 0 0 30px 0;
border-bottom: 1px solid #f2f2f2;
.meta {
max-width: 100%;
height: 25px;
color: #bbbbbb;
.info {
float: left;
font-size: 12px;
.date{
margin-right: 5px;
}
}
a {
text-decoration: none;
color: #bbbbbb;
}
i{
margin-right: 3px;
}
}
.tags{
padding-bottom: 15px;
font-size: 13px;
ul {
list-style-type: none;
display: inline;
margin: 0;
padding: 0;
li {
list-style-type: none;
margin: 0;
padding-right: 5px;
display: inline;
}
}
a{
text-decoration: none;
color: rgba(0, 0, 0, 0.44);
font-weight: 400;
&:hover{
text-decoration: none;
}
}
}
}
}
.pagination {
margin: 30px;
padding: 0px 0 56px 0;
border-bottom: 1px solid #f2f2f2;
ul {
list-style: none;
margin: 0;
padding: 0;
height: 13px;
li {
margin: 0 2px 0 2px;
display: inline;
line-height: 1;
a {
text-decoration: none;
}
}
}
.pre {
float: left;
}
.next {
float: right;
}
}
.like-reblog-buttons {
float: right;
}
.like-button {
float: right;
padding: 0 0 0 10px;
}
.reblog-button {
float: right;
padding: 0;
}
#install-btn {
position: fixed;
bottom: 0px;
right: 6px
}
#disqus_thread {
margin: 30px;
border-bottom: 1px solid #f2f2f2;
}
.footer {
clear: both;
text-align: center;
font-size: 10px;
margin: 0 auto;
bottom: 0;
position: absolute;
width: 100%;
padding-bottom: 20px;
a {
color: #A6A6A6;
}
span{
}
.by_farbox{
}
}
/*for archive*/
.archive{
width: 100%;
}
.list-with-title{
font-size: 14px;
margin: 30px;
padding: 0;
li {
list-style-type: none;
padding: 0;
}
.listing-title {
font-size: 24px;
color: #666666;
font-weight: 600;
line-height: 2.2em;
}
.listing{
padding: 0;
.listing-post {
padding-bottom: 5px;
.post-time {
float: right;
color: #C5C5C5;
}
a {
color: #8F8F8F;
&:hover{
color: #464545;
}
}
}
}
}
/* share */
.share{
padding-left: 30px;
display: flex;
width: 100%;
height: 60px;
display: -webkit-box;
}
.evernote{
width: 32px;
height: 32px;
border-radius: 300px;
background-color: #3E3E3E;
margin-right:5px;
a{
color: #fff;
padding: 11px;
font-size: 12px;
}
a:hover{
color: #ED6243;
padding: 11px;
}
}
.weibo{
width: 32px;
height: 32px;
border-radius: 300px;
background-color: #ED6243;
margin-right:5px;
a{
color: #fff;
padding: 9px;
}
a:hover{
color: #BD4226;
}
}
.twitter{
width: 32px;
height: 32px;
border-radius: 300px;
background-color: #59C0FD;
margin-right:5px;
a{
color: #fff;
padding: 9px;
}
a:hover{
color:#4B9ECE;
}
}
/* about */
.about{
margin: 30px;
h3{
font-size: 22px;
}
}
/* 评论样式 */
.comment-count {
color: #666;
}
.tab-community {
color: #666;
}
.read_more {
font-size: 14px;
}
.back-button {
padding-top: 30px;
max-width: 100px;
padding-left: 40px;
float: left;
}
/* 按钮样式 */
a.btn {
color: #868686;
font-weight: 400;
}
.btn {
display: inline-block;
position: relative;
outline: 0;
color: rgba(0, 0, 0, 0.44);
background: rgba(0, 0, 0, 0);
font-size: 14px;
text-align: center;
text-decoration: none;
cursor: pointer;
border: 1px solid rgba(0, 0, 0, 0.15);
white-space: nowrap;
font-weight: 400;
font-style: normal;
border-radius: 999em;
}
.btn:hover {
display: inline-block;
position: relative;
outline: 0px;
color: #464545;
background: rgba(0, 0, 0, 0);
font-size: 14px;
text-align: center;
text-decoration: none;
cursor: pointer;
border: 1px solid #464545;
white-space: nowrap;
font-weight: 400;
font-style: normal;
border-radius: 999em;
}
[role="back"] {
padding: 0.5em 1.25em;
line-height: 1.666em;
}
[role="home"] {
padding: 0.5em 1.25em;
line-height: 1.666em;
}
[role="navigation"] {
padding: 0.5em 1.25em;
line-height: 1.666em;
}
[role="tags"] {
padding: 6px 12px;
}
/* Menu样式 */
.menu {
float: right;
padding-top: 30px;
.btn-down{
margin: 0px;
li {
list-style: none;
width: 100px;
a {
display: inline-block;
position: relative;
padding: 0.5em 1.25em;
outline: 0;
color: rgba(0, 0, 0, 0.44);
background: rgba(0, 0, 0, 0);
font-size: 14px;
text-align: center;
text-decoration: none;
cursor: pointer;
border: 1px solid rgba(0, 0, 0, 0.15);
white-space: nowrap;
font-weight: 400;
font-style: normal;
border-radius: 999em;
margin-top: 5px;
&:hover{
position: relative;
padding: 0.5em 1.25em;
outline: 0;
color: #fff;
background: #3CBD10;
font-size: 14px;
text-align: center;
text-decoration: none;
cursor: pointer;
border: 1px solid rgba(0, 0, 0, 0.15);
white-space: nowrap;
font-weight: 400;
font-style: normal;
border-radius: 999em;
margin-top: 5px;
}
}
}
}
.btn-down div {
position: absolute;
visibility: hidden;
width: 100px;
float: right;
}
}
@media screen and (max-width: 414px) {
.sidebar {
width: 100%;
position:absolute;
border-right:none;
.logo-title{
padding-top: 100px;
.title{
img{
width: 100px;
}
h3{
font-size: 20px;
}
}
}
}
.page-top{
display: none;
}
.content{
margin-top: 360px;
width: 100%;
overflow: hidden;
}
.footer{
display: none;
}
.share{
display: flex;
display: -webkit-box;
}
}

BIN
style/images/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

BIN
style/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
style/images/logo@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

2
style/js/jquery-migrate-1.2.1.min.js vendored Executable file

File diff suppressed because one or more lines are too long

101
style/js/jquery.appear.js Executable file
View File

@ -0,0 +1,101 @@
/*
* jQuery appear plugin
*
* Copyright (c) 2012 Andrey Sidorov
* licensed under MIT license.
*
* https://github.com/morr/jquery.appear/
*
* Version: 0.3.3
*/
(function($) {
var selectors = [];
var check_binded = false;
var check_lock = false;
var defaults = {
interval: 250,
force_process: false
}
var $window = $(window);
var $prior_appeared;
function process() {
check_lock = false;
for (var index = 0; index < selectors.length; index++) {
var $appeared = $(selectors[index]).filter(function() {
return $(this).is(':appeared');
});
$appeared.trigger('appear', [$appeared]);
if ($prior_appeared) {
var $disappeared = $prior_appeared.not($appeared);
$disappeared.trigger('disappear', [$disappeared]);
}
$prior_appeared = $appeared;
}
}
// "appeared" custom filter
$.expr[':']['appeared'] = function(element) {
var $element = $(element);
if (!$element.is(':visible')) {
return false;
}
var window_left = $window.scrollLeft();
var window_top = $window.scrollTop();
var offset = $element.offset();
var left = offset.left;
var top = offset.top;
if (top + $element.height() >= window_top &&
top - ($element.data('appear-top-offset') || 0) <= window_top + $window.height() &&
left + $element.width() >= window_left &&
left - ($element.data('appear-left-offset') || 0) <= window_left + $window.width()) {
return true;
} else {
return false;
}
}
$.fn.extend({
// watching for element's appearance in browser viewport
appear: function(options) {
var opts = $.extend({}, defaults, options || {});
var selector = this.selector || this;
if (!check_binded) {
var on_check = function() {
if (check_lock) {
return;
}
check_lock = true;
setTimeout(process, opts.interval);
};
$(window).scroll(on_check).resize(on_check);
check_binded = true;
}
if (opts.force_process) {
setTimeout(process, opts.interval);
}
selectors.push(selector);
return $(selector);
}
});
$.extend({
// force elements's appearance check
force_appear: function() {
if (check_binded) {
process();
return true;
};
return false;
}
});
})(jQuery);