├── css └── sass │ ├── _1030up.scss │ ├── _grid.scss │ ├── _1240up.scss │ ├── _768up.scss │ ├── _321up.scss │ ├── _mixins.scss │ ├── _481up.scss │ ├── style.scss │ ├── _print.scss │ ├── _fonts.scss │ ├── _normalize.scss │ └── _base.scss ├── assets ├── images │ ├── bg2.jpg │ ├── cloud.jpg │ ├── main.jpg │ ├── paper.png │ ├── body-bg.png │ ├── loader.gif │ ├── pattern.png │ ├── to-top.png │ ├── chalkboard.jpg │ └── blueprint-dark.png ├── fonts │ ├── iconfont.eot │ ├── iconfont.ttf │ ├── iconfont.woff │ ├── iconfont.css │ ├── demo.css │ ├── demo.html │ └── iconfont.svg ├── js │ ├── unveil.js │ ├── jquery.fitvids.js │ ├── min.v.js │ ├── prism.js │ ├── custom.js │ ├── jquery.stellar.min.js │ └── jquery.ghostHunter.min.js └── css │ └── min.style.css ├── .gitignore ├── human.txt ├── package.json ├── page.hbs ├── LICENSE ├── index.hbs ├── default.hbs ├── post.hbs ├── README.md ├── Gruntfile.js └── js └── custome.js /css/sass/_1030up.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /css/sass/_grid.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/bg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/images/bg2.jpg -------------------------------------------------------------------------------- /assets/images/cloud.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/images/cloud.jpg -------------------------------------------------------------------------------- /assets/images/main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/images/main.jpg -------------------------------------------------------------------------------- /assets/images/paper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/images/paper.png -------------------------------------------------------------------------------- /assets/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/fonts/iconfont.eot -------------------------------------------------------------------------------- /assets/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/fonts/iconfont.ttf -------------------------------------------------------------------------------- /assets/images/body-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/images/body-bg.png -------------------------------------------------------------------------------- /assets/images/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/images/loader.gif -------------------------------------------------------------------------------- /assets/images/pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/images/pattern.png -------------------------------------------------------------------------------- /assets/images/to-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/images/to-top.png -------------------------------------------------------------------------------- /assets/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/fonts/iconfont.woff -------------------------------------------------------------------------------- /assets/images/chalkboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/images/chalkboard.jpg -------------------------------------------------------------------------------- /assets/images/blueprint-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/ghostwill/HEAD/assets/images/blueprint-dark.png -------------------------------------------------------------------------------- /css/sass/_1240up.scss: -------------------------------------------------------------------------------- 1 | .post-cover-info{ 2 | font-size: 5rem; 3 | width: 80%; 4 | .post-title{ 5 | line-height:5rem; 6 | a{ 7 | font-size: 5rem; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /css/sass/_768up.scss: -------------------------------------------------------------------------------- 1 | .post-in-list{ 2 | width: 95%; 3 | margin:2rem auto; 4 | } 5 | .search-bar{ 6 | display: none; 7 | } 8 | .post-cover-info{ 9 | 10 | .post-title{ 11 | a{ 12 | font-size: 2.2rem; 13 | line-height: 2.8rem; 14 | } 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /css/sass/_321up.scss: -------------------------------------------------------------------------------- 1 | .post-in-list{ 2 | width: 95%; 3 | } 4 | .post-cover-info{ 5 | font-size: 3rem; 6 | width: 80%; 7 | .post-title{ 8 | line-height:3rem; 9 | a{ 10 | font-size: 3rem; 11 | } 12 | } 13 | } 14 | 15 | .post-publish-time{ 16 | font-size:1.4rem; 17 | } 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Generated Stuff 2 | .sass-cache 3 | .sass-cache/* 4 | css/*.map 5 | 6 | # bundling output 7 | build/* 8 | build 9 | dist/* 10 | dist 11 | 12 | # Node Modules (use `npm install` to generate these) 13 | node_modules/* 14 | node_modules 15 | ../* 16 | 17 | # OS X Junk 18 | .DS_Store 19 | .DS_Store/* 20 | 21 | 22 | # Not-Needed System Files 23 | *.swp 24 | *.bak 25 | -------------------------------------------------------------------------------- /css/sass/_mixins.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Sass 相关变量 3 | */ 4 | 5 | $imgPath:"../../assets/images"; 6 | $fontPath:"../../assets/fonts"; 7 | //设置字体 8 | $fontBase:"Helvetica Neue",\5FAE\8F6F\96C5\9ED1,Tohoma; 9 | $fontOSX:"ff-tisa-web-pro-1","ff-tisa-web-pro-2","Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3"; 10 | $fontIOS:"HelveticaNeue-UltraLight","Helvetica Neue UltraLight"; 11 | 12 | $googleFontExo:"Exo"; 13 | -------------------------------------------------------------------------------- /human.txt: -------------------------------------------------------------------------------- 1 | /* About */ 2 | Name: Luo Lei 3 | Contact: i [at] luolei.org 4 | Twitter: @foru17 5 | From:Shenzhen, Beijing, China 6 | 7 | 8 | /* SITE */ 9 | Last update:2014/05/02 10 | Language: English / Chinese 11 | Doctype:HTML5 12 | IDE: Sublime text 3, Grunt, Sass, Git, Github 13 | 14 | /*团队*/ 15 | 设计:罗磊 16 | 邮箱:i [at] luolei.org 17 | 微博:http://weibo.com/foru17 18 | 来自:深圳, 北京 ,中国 19 | 20 | 21 | /*站点*/ 22 | 最近更新:2014/05/2 23 | 语言:英文 /中文简体 24 | Doctype: HTML5 25 | 环境:Nodejs, Ghost 26 | 开发环境:Sublime text 3, Grunt, Sass, Git, Github 27 | -------------------------------------------------------------------------------- /css/sass/_481up.scss: -------------------------------------------------------------------------------- 1 | .single-post{ 2 | width: 80%; 3 | } 4 | .home-blog-title{ 5 | font-size:2.4rem; 6 | } 7 | 8 | .post-cover-info{ 9 | font-size: 3rem; 10 | width: 80%; 11 | .post-title{ 12 | line-height:3rem; 13 | a{ 14 | font-size: 3rem; 15 | } 16 | } 17 | } 18 | 19 | 20 | .nav-url{ 21 | width: 100%; 22 | li{ 23 | margin-right: .5rem; 24 | } 25 | } 26 | 27 | .post-in-list{ 28 | width: 95%; 29 | } 30 | 31 | .search-bar{ 32 | display: none; 33 | } 34 | .pagination{ 35 | width: 90%; 36 | } 37 | 38 | .cover-slide-more{ 39 | left: 45%; 40 | } 41 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ghostwill", 3 | "version": "0.0.1", 4 | "author": "luolei", 5 | "devDependencies": { 6 | "grunt": "~0.4.1", 7 | "grunt-contrib-clean": "~0.5.0", 8 | "grunt-contrib-compress": "~0.5.1", 9 | "grunt-contrib-jshint": "~0.6.0", 10 | "grunt-contrib-copy": "~0.4.1", 11 | "grunt-contrib-concat": "~0.3.0", 12 | "grunt-contrib-cssmin": "~0.6.1", 13 | "grunt-contrib-sass": "~0.5.0", 14 | "grunt-contrib-watch": "~0.5.0", 15 | "grunt-contrib-uglify": "~0.2.2", 16 | "time-grunt": "^0.2.9", 17 | "grunt-ftp-deploy": "^0.1.2", 18 | "grunt-contrib-htmlmin": "^0.2.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /page.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{! This is a page template. A page outputs content just like any other post, and has all the same 4 | attributes by default, but you can also customise it to behave differently if you prefer. }} 5 | 6 |
7 | 8 |
9 | 10 |
11 | 18 |
19 | 20 | {{#post}} 21 | 22 |

{{{title}}}

23 | 24 |
25 | {{content}} 26 |
27 | 28 | {{/post}} 29 | 30 |
31 | 32 |
33 | -------------------------------------------------------------------------------- /assets/js/unveil.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery Unveil 3 | * A very lightweight jQuery plugin to lazy load images 4 | * http://luis-almeida.github.com/unveil 5 | * 6 | * Licensed under the MIT license. 7 | * Copyright 2013 Luís Almeida 8 | * https://github.com/luis-almeida 9 | */ 10 | 11 | ;(function($){$.fn.unveil=function(threshold,callback){var $w=$(window),th=threshold||0,retina=window.devicePixelRatio>1,attrib=retina?"data-src-retina":"data-src",images=this,loaded;this.one("unveil",function(){var source=this.getAttribute(attrib);source=source||this.getAttribute("data-src");if(source){this.setAttribute("src",source);if(typeof callback==="function")callback.call(this);}});function unveil(){var inview=images.filter(function(){var $e=$(this),wt=$w.scrollTop(),wb=wt+$w.height(),et=$e.offset().top,eb=et+$e.height();return eb>=wt-th&&et<=wb+th;});loaded=inview.trigger("unveil");images=images.not(loaded);}$w.scroll(unveil);$w.resize(unveil);unveil();return this;};})(window.jQuery||window.Zepto); 12 | -------------------------------------------------------------------------------- /css/sass/style.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 这里是ghostwill主题的基础样式 3 | * author:@罗罗磊磊 4 | * url: http://this.is26.com 5 | * blog: http://luolei.org 6 | * 本主题使用 Sass,这里是基本文件 7 | */ 8 | 9 | //reset 样式 10 | @import "normalize"; 11 | @import "mixins"; 12 | @import "fonts"; 13 | @import "base"; 14 | @import "animate"; 15 | 16 | @media only screen and (max-width: 321px) { 17 | 18 | // styles in 481up.scss 19 | @import "321up"; 20 | 21 | } // end of media query 22 | 23 | @media only screen and (max-width: 481px) { 24 | 25 | // styles in 481up.scss 26 | @import "481up"; 27 | 28 | } // end of media query 29 | 30 | 31 | @media only screen and (max-width: 768px) { 32 | 33 | // import grids 34 | @import "grid"; 35 | 36 | // styles in 768up.scss 37 | @import "768up"; 38 | 39 | } // end of media query 40 | 41 | 42 | @media only screen and (min-width: 1240px) { 43 | 44 | // styles in 1030up.scss 45 | @import "1240up"; 46 | 47 | } // end of media query 48 | 49 | 50 | 51 | @media print { 52 | @import "print"; 53 | } // end of media query 54 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 Ghost Foundation - Released under The MIT License. 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /css/sass/_print.scss: -------------------------------------------------------------------------------- 1 | /****************************************************************** 2 | Stylesheet: Print Stylesheet 3 | ******************************************************************/ 4 | 5 | 6 | 7 | * { 8 | background: transparent !important; 9 | color: black !important; 10 | text-shadow: none !important; 11 | filter:none !important; 12 | -ms-filter: none !important; 13 | } 14 | 15 | a, a:visited { 16 | color: #444 !important; 17 | text-decoration: underline; 18 | 19 | // show links on printed pages 20 | &:after { 21 | content: " (" attr(href) ")"; 22 | } 23 | 24 | // show title too 25 | abbr[title]:after { 26 | content: " (" attr(title) ")"; 27 | } 28 | } 29 | 30 | .ir a:after, 31 | a[href^="javascript:"]:after, 32 | a[href^="#"]:after { 33 | content: ""; 34 | } 35 | 36 | pre, blockquote { 37 | border: 1px solid #999; 38 | page-break-inside: avoid; 39 | } 40 | 41 | thead { 42 | display: table-header-group; 43 | } 44 | 45 | tr, img { 46 | page-break-inside: avoid; 47 | } 48 | 49 | img { 50 | max-width: 100% !important; 51 | } 52 | 53 | @page { 54 | margin: 0.5cm; 55 | } 56 | 57 | p, h2, h3 { 58 | orphans: 3; 59 | widows: 3; 60 | } 61 | 62 | h2, 63 | h3 { 64 | page-break-after: avoid; 65 | } 66 | 67 | // hide content people who print don't need to see 68 | .sidebar, 69 | .page-navigation, 70 | .wp-prev-next, 71 | .respond-form, 72 | nav { 73 | display: none; 74 | } 75 | -------------------------------------------------------------------------------- /assets/fonts/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: 'iconfont'; 2 | src: url('iconfont.eot'); /* IE9*/ 3 | src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('iconfont.woff') format('woff'), /* chrome、firefox */ 5 | url('iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ 6 | url('iconfont.svg#iconfont') format('svg'); /* iOS 4.1- */ 7 | } 8 | 9 | .iconfont { 10 | font-family:"iconfont" !important; 11 | font-size:16px; 12 | font-style:normal; 13 | -webkit-font-smoothing: antialiased; 14 | -webkit-text-stroke-width: 0.2px; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | 19 | .icon-xinlangweibo:before { content: "\3432"; } 20 | 21 | .icon-socialtwittercircle:before { content: "\e763"; } 22 | 23 | .icon-facebook:before { content: "\3433"; } 24 | 25 | .icon-github:before { content: "\f01ca"; } 26 | 27 | .icon-doubanfangxing:before { content: "\3440"; } 28 | 29 | .icon-douban:before { content: "\f01c8"; } 30 | 31 | .icon-renrenwang:before { content: "\3435"; } 32 | 33 | .icon-QQ:before { content: "\3466"; } 34 | 35 | .icon-qq:before { content: "\e60c"; } 36 | 37 | .icon-qqkongjian:before { content: "\f0005"; } 38 | 39 | .icon-tengxunweibo:before { content: "\3465"; } 40 | 41 | .icon-tengxunweixin:before { content: "\f0003"; } 42 | 43 | .icon-5:before { content: "\3436"; } 44 | 45 | .icon-qzone:before { content: "\e60d"; } 46 | 47 | .icon-baiduzhuanhuan:before { content: "\f001d"; } 48 | 49 | .icon-socialrsscircle:before { content: "\e751"; } 50 | 51 | .icon-google:before { content: "\3434"; } 52 | 53 | .icon-taobao:before { content: "\f0171"; } 54 | 55 | .icon-evernote:before { content: "\e602"; } 56 | 57 | .icon-luolei:before { content: "\e60e"; } 58 | 59 | .icon-xinlang:before { content: "\e61c"; } 60 | 61 | .icon-Twitter:before { content: "\f000e"; } 62 | 63 | .icon-github1:before { content: "\e611"; } 64 | 65 | .icon-dribblepure:before { content: "\e612"; } 66 | 67 | .icon-weixin:before { content: "\343b"; } 68 | 69 | .icon-xinhao:before { content: "\f01bd"; } 70 | 71 | .icon-instagrampure:before { content: "\e613"; } 72 | 73 | -------------------------------------------------------------------------------- /css/sass/_fonts.scss: -------------------------------------------------------------------------------- 1 | /* 载入iconfont字体 */ 2 | @font-face {font-family: 'iconfont'; 3 | src: url(#{$fontPath}/iconfont.eot); /* IE9*/ 4 | src: url(#{$fontPath}/iconfont.eot?#iefix) format('embedded-opentype'), /* IE6-IE8 */ 5 | url(#{$fontPath}/iconfont.woff) format('woff'), /* chrome、firefox */ 6 | url(#{$fontPath}/iconfont.ttf) format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ 7 | url(#{$fontPath}/iconfont.svg#uxiconfont) format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont{ 11 | font-family:"iconfont" !important; 12 | font-size:16px;font-style:normal; 13 | -webkit-font-smoothing: antialiased; 14 | -webkit-text-stroke-width: 0.2px; 15 | -moz-osx-font-smoothing: grayscale; 16 | display: inline-block; 17 | speak: none; 18 | } 19 | 20 | 21 | .iconfont{ 22 | vertical-align: middle; 23 | &:hover{ 24 | opacity: 0.6; 25 | color:#363636; 26 | } 27 | } 28 | 29 | .icon-self{color:red} 30 | .icon-weibo{ color:#E6162D} 31 | .icon-twitter{color:#2aa9e0} 32 | .icon-facebook{color:#204385} 33 | .icon-google{color:#176DEE} 34 | .icon-weixin{color:#75D140} 35 | .icon-qzone{color:#186CC6} 36 | .icon-github{color:#333333} 37 | .icon-douban{color:#279337} 38 | .icon-luolei{color:#6596C1} 39 | .icon-dribble{color:#F72D84} 40 | 41 | 42 | 43 | .icon-weibo-pure{ color:#E6162D} 44 | .icon-twitter-pure{color:#2aa9e0} 45 | .icon-github-pure{color:#333333} 46 | .icon-dribble-pure{color:#F72D84} 47 | .icon-weixin-pure{color:#75D140} 48 | .icon-instagram-pure{color:#B66F43} 49 | /* 自定义IconFont CSS 才用:before的形式 */ 50 | .single-post-inner{ 51 | .icon-local:before{ 52 | content: "\0f00ac"; 53 | } 54 | .icon-twitter:before{ 55 | content: "\00e763"; 56 | } 57 | .icon-qzone:before{ 58 | content: "\00e60d"; 59 | } 60 | .icon-weibo:before{ 61 | content: "\003432"; 62 | } 63 | .icon-facebook:before{ 64 | content: "\003433"; 65 | } 66 | .icon-google:before{ 67 | content: "\003434"; 68 | } 69 | .icon-github:before{ 70 | content: "\0f01ca"; 71 | } 72 | .icon-douban:before{ 73 | content: "\0f01c8"; 74 | } 75 | .icon-luolei:before{ 76 | content: "\00e60e" 77 | } 78 | 79 | } 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /assets/fonts/demo.css: -------------------------------------------------------------------------------- 1 | *{margin: 0;padding: 0;list-style: none;} 2 | /* 3 | KISSY CSS Reset 4 | 理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。 5 | 2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。 6 | 3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。 7 | 特色:1. 适应中文;2. 基于最新主流浏览器。 8 | 维护:玉伯, 正淳 9 | */ 10 | 11 | /** 清除内外边距 **/ 12 | body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */ 13 | dl, dt, dd, ul, ol, li, /* list elements 列表元素 */ 14 | pre, /* text formatting elements 文本格式元素 */ 15 | form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */ 16 | th, td /* table elements 表格元素 */ { 17 | margin: 0; 18 | padding: 0; 19 | } 20 | 21 | /** 设置默认字体 **/ 22 | body, 23 | button, input, select, textarea /* for ie */ { 24 | font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif; 25 | } 26 | h1, h2, h3, h4, h5, h6 { font-size: 100%; } 27 | address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */ 28 | code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */ 29 | small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */ 30 | 31 | /** 重置列表元素 **/ 32 | ul, ol { list-style: none; } 33 | 34 | /** 重置文本格式元素 **/ 35 | a { text-decoration: none; } 36 | a:hover { text-decoration: underline; } 37 | 38 | 39 | /** 重置表单元素 **/ 40 | legend { color: #000; } /* for ie6 */ 41 | fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */ 42 | button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */ 43 | /* 注:optgroup 无法扶正 */ 44 | 45 | /** 重置表格元素 **/ 46 | table { border-collapse: collapse; border-spacing: 0; } 47 | 48 | /* 清除浮动 */ 49 | .ks-clear:after, .clear:after { 50 | content: '\20'; 51 | display: block; 52 | height: 0; 53 | clear: both; 54 | } 55 | .ks-clear, .clear { 56 | *zoom: 1; 57 | } 58 | 59 | .main {padding: 30px 100px;} 60 | .main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;} 61 | 62 | .helps{margin-top:40px;} 63 | .helps pre{ 64 | padding:20px; 65 | margin:10px 0; 66 | border:solid 1px #e7e1cd; 67 | background-color: #fffdef; 68 | overflow: auto; 69 | } 70 | 71 | .icon_lists li{ 72 | float:left; 73 | width: 100px; 74 | height:150px; 75 | text-align: center; 76 | } 77 | .icon_lists .iconfont{ 78 | font-size: 42px; 79 | line-height: 100px; 80 | margin: 10px 0; 81 | color:#333; 82 | -webkit-transition: font-size 0.25s ease-out 0s; 83 | -moz-transition: font-size 0.25s ease-out 0s; 84 | transition: font-size 0.25s ease-out 0s; 85 | 86 | } 87 | .icon_lists .iconfont:hover{ 88 | font-size: 100px; 89 | } 90 | -------------------------------------------------------------------------------- /index.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 |
3 | 21 | 43 | 44 | {{! The main content area on the homepage }} 45 |
46 | {{! Each post will be output using this markup }} 47 | {{#foreach posts}} 48 | 49 |
50 |
51 |
52 | 53 | {{content words="0"}} 54 | 55 |
56 |

{{{title}}}

57 | 60 |
61 | 67 | {{!--
68 | 69 |
--}} 70 |
71 | 72 | {{/foreach}} 73 | 74 | {{!! After all the posts, we have the previous/next pagination links }} 75 | 76 | {{pagination}} 77 |
78 | 79 | 80 | -------------------------------------------------------------------------------- /assets/js/jquery.fitvids.js: -------------------------------------------------------------------------------- 1 | /*global jQuery */ 2 | /*jshint multistr:true browser:true */ 3 | /*! 4 | * FitVids 1.0.3 5 | * 6 | * Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com 7 | * Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ 8 | * Released under the WTFPL license - http://sam.zoy.org/wtfpl/ 9 | * 10 | * Date: Thu Sept 01 18:00:00 2011 -0500 11 | */ 12 | 13 | (function( $ ){ 14 | 15 | "use strict"; 16 | 17 | $.fn.fitVids = function( options ) { 18 | var settings = { 19 | customSelector: null 20 | }; 21 | 22 | if(!document.getElementById('fit-vids-style')) { 23 | 24 | var div = document.createElement('div'), 25 | ref = document.getElementsByTagName('base')[0] || document.getElementsByTagName('script')[0], 26 | cssStyles = '­'; 27 | 28 | div.className = 'fit-vids-style'; 29 | div.id = 'fit-vids-style'; 30 | div.style.display = 'none'; 31 | div.innerHTML = cssStyles; 32 | 33 | ref.parentNode.insertBefore(div,ref); 34 | 35 | } 36 | 37 | if ( options ) { 38 | $.extend( settings, options ); 39 | } 40 | 41 | return this.each(function(){ 42 | var selectors = [ 43 | "iframe[src*='player.vimeo.com']", 44 | "iframe[src*='youtube.com']", 45 | "iframe[src*='youtube-nocookie.com']", 46 | "iframe[src*='kickstarter.com'][src*='video.html']", 47 | "object", 48 | "embed" 49 | ]; 50 | 51 | if (settings.customSelector) { 52 | selectors.push(settings.customSelector); 53 | } 54 | 55 | var $allVideos = $(this).find(selectors.join(',')); 56 | $allVideos = $allVideos.not("object object"); // SwfObj conflict patch 57 | 58 | $allVideos.each(function(){ 59 | var $this = $(this); 60 | if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } 61 | var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(), 62 | width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), 63 | aspectRatio = height / width; 64 | if(!$this.attr('id')){ 65 | var videoID = 'fitvid' + Math.floor(Math.random()*999999); 66 | $this.attr('id', videoID); 67 | } 68 | $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%"); 69 | $this.removeAttr('height').removeAttr('width'); 70 | }); 71 | }); 72 | }; 73 | // Works with either jQuery or Zepto 74 | })( window.jQuery || window.Zepto ); 75 | -------------------------------------------------------------------------------- /default.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{! Document Settings }} 5 | 6 | 7 | 8 | {{! Page Meta }} 9 | {{meta_title}} 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | {{! 添加 gogole puls 信息 请修改成自己的地址}} 18 | 19 | {{! Styles'n'Scripts }} 20 | 21 | 22 | 25 | 26 | {{ghost_head}} 27 | 28 | 29 | {{{body}}} 30 | 31 | 45 | 46 | {{! Ghost outputs important scripts and data with this tag }} 47 | {{ghost_foot}} 48 | {{!-- 转场动画 --}} 49 | {{! The main JavaScript file for Casper }} 50 | 51 | 52 | 53 | 54 | 55 | 56 | {{!-- 增加谷歌统计 --}} 57 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /post.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | {{!-- 顶部图片x --}} 3 |
4 |
5 |
6 | {{#post}} 7 |

{{{title}}}

8 |

{{date format="MMMM DD, YYYY"}}

9 | 10 | {{/post}} 11 |
12 |
13 |

继续阅读

14 |
15 |
16 |
17 |
18 | 19 | 81 | 82 |
83 | 84 | 85 | 99 | 100 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #Ghostwill 2 | 3 | ![ghostwill](http://file.is26.com/wp-image/2014/04/ghostwill.png) 4 | 5 | The theme is designed by [Luolei.org](http://luolei.org). 6 | 7 | for more info.Please contact [@foru17](http://twitter.com/foru17) 8 | 9 | 本 Ghost 主题为26号设计工作室作品 10 | 11 | 12 | 13 | ####注意 14 | 15 | 若使用本主题,请修改`default.hbs`文件中的谷歌统计 Google Analytics 代码。 16 | 17 | 若使用多说评论且有从wordpress迁移的需求,请修改js文件中的原博客`data-url`地址。 18 | 19 | 同时请修改`default.hbs`头部的`meta`相关信息。 20 | 21 | 22 | ####关于Ghostwill 23 | 24 | 这个主题叫 [Ghostwill](https://github.com/foru17/ghostwill) ,中文名还没想好,暂时就叫「鬼才晓得」吧,已经放在 Github 开源了,请尽情撸,俗话说大家撸才是真的撸嘛,现在版本还是1.0.0。 25 | 26 | ##几个特性 27 | 28 | ###1.响应式 29 | 30 | 现在一个网站不是响应式都不好意思拿出手了。Ghostwill 针对移动设备做了优化,暂时是比较简单的处理,下一步将对菜单导航和交互做进一步优化和处理,详情请看 Github Commit log和该文章的更新日志 Update log 。 31 | 32 | ![](http://file.is26.com/wp-image/2014/04/ghost-mobile.png) 33 | 34 | 35 | ###自定义Cover image 36 | 37 | 你要说我抄袭 [Medium](https://medium.com/),嗯哼,你要说也没办法,自己过去看了不少国外网站,发现这种大 Banner 、大图片、大字体算是一大趋势。尤其是博客和资讯,大量留白,专注于中部核心内容。Ghostwill 支持用户自定义封面照片。 38 | 39 | 在 Markdown 编辑时,给img图片标签加上`cover-image`的alt值即可。如果没有自定义图片,会默认抓取文章中的第一张图片,如果文章没有图片,则使用默认图片。 40 | 41 | 42 | 下面这个视频是我的一个演示(下面的宽屏图片设置一样操作),蛋疼七牛哦,视频传了上去,老是播不了。放一张GIF图先。 43 | 44 | ![wrap](http://file.is26.com/wp-image/2014/04/cover-animation.gif) 45 | 46 | 49 | 50 | PS:封面照片有视觉滚差效果。 51 | 52 | 53 | ###自选宽屏图片、视频 54 | 55 | ![](http://qiniu.is26.com/demo-show-wide.png) 56 | 57 | 通过给图片 `img` 标签设置 alt 值 `wrap`,给视频和其他 `iframe` 或者 `frame` 添加`class="wrap"`,可以让该[图片、视频、frame]自适应屏幕宽屏显示。对于有些需要重点突出的大图,可以根据需求自定义设置。 58 | 59 | ###文章内 url 体验优化 60 | 61 | ![iconfont](http://qiniu.is26.com/iconfont-opt.jpg) 62 | 63 | 把文章中一些常用的 url地址自动加上 iconfont,并且对应不同的提示颜色,支持国内外常用社交网站,让读者能快速知道 url 跳转目的地。 64 | 65 | 这是我自己写的一个插件,过段时间单独提取出来给其他平台的用户也用用。 66 | 67 | 68 | ###代码优化 69 | 70 | ```language-css 71 | .hello{ 72 | postion:absolute; 73 | color:red; 74 | } 75 | 76 | ``` 77 | 78 | 采用 [Prismjs](http://prismjs.com/),对不同的代码高亮和添加颜色主题。 79 | 80 | ###社交icon 81 | 82 | ![](http://luolei.u.qiniudn.com/social-icons.jpg) 83 | 84 | 博客顶部可以设置自己的社交网站链接,均使用 iconfont ,果断时间分享一下如何自己配置 iconfont 的教程。 85 | 86 | ###其他 87 | 88 | 这是一个 HTML5 的主题,从一开始我就就没想支持IE8以下的用户,IE的用户就洗洗睡吧。(主要是根据自己博客的统计数据来的,现在我博客每天大概700-800的UV,超过一半的访客用的是 Chrome 和移动端 webkit 浏览器我会随便说么,好歹也是高端访客嘛)。 89 | 90 | ####Sass 91 | 92 | 开发的时候使用 CSS预处理[Sass](http://sass-lang.com/)。 93 | 94 | ####Grunt 95 | 96 | 必须 Grunt 自动化啊,另外放上自己的另外一篇文章[《让前端工作更快、更智能:利用StaticPage自动化工作流》](http://luolei.org/front-end-dev-with-grunt-staticpage-workflow/)。 97 | 98 | ####前端优化 99 | 100 | css 压缩,js 压缩,采用[又拍云](http://www.upyun.com/?md=luolei)CDN全站加速。 101 | 102 | ####键盘控制 103 | 104 | 这个是我随便加的功能,按键盘`J`屏幕下滚,`K`上翻,嗯哼,是 VIM 的操作习惯。 105 | 106 | ###TO-DO-Task 待解决 107 | 108 | 2014.4月30日更新: 109 | 110 | * 图片延迟加载(这个要改 Ghost core 代码,略危险) 111 | * Menu 响应式处理 112 | * 中文搜索功能 113 | * iconfont 需添加更多的常用网站 114 | * 交互优化:加载动画、页面切换转场动画 115 | * 代码高亮优化:4月30日现在有点问题 116 | * 低版本浏览器和微信内置浏览器的兼容性问题(坑啊!!!) 117 | * 社交分享url分享方法 118 | * 后台编辑直接把图片上传到又拍云or七牛等第三方(需要等 Ghost 官方API开发迭代)。 119 | * 前端优化:进一步语义化 HTML 和 CSS,优化js逻辑,减少重绘,目前优化还粗放,线上版本还比较粗放。 120 | 121 | 122 | ## Copyright & License 123 | 124 | Copyright (C) 2014 Ghost Foundation - Released under the MIT License. 125 | 126 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 127 | 128 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 129 | 130 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 131 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 132 | -------------------------------------------------------------------------------- /assets/js/min.v.js: -------------------------------------------------------------------------------- 1 | /*! ghostwill 2014-05-03 */ 2 | function checkKey(a){a=a||window.event,"74"==a.keyCode?($("html,body").stop(),$("html,body").animate({scrollTop:$(window).stop().scrollTop()+200},"fast")):"75"==a.keyCode&&($("html,body").stop(),$("html,body").animate({scrollTop:$(window).stop().scrollTop()-200},"fast"))}function cleanMask(){$(".post-header-mask").css("opacity","0")}function checkImg(a){var b,c,d=!1;return 1!=$(a).hasClass("wrap")?void console.log("不满足wrap"):(d=!0,console.log("wrap标记"),void $("").attr("src",$(a).attr("src")).load(function(){b=this.width,c=this.height,1==d&&visualContainerWidh>800&&b>900&&b>contentWidth&&($(a).css({width:visualContainerWidh,"margin-left":-(visualContainerWidh-contentWidth)/2,"max-width":visualContainerWidh}),$(a).addClass("imgWrapOut"))}))}function urlIconlize(a){var b,c,d={twitter:"icon-twitter",qzone:"icon-qzone",weibo:"icon-weibo",facebook:"icon-facebook",github:"icon-github",douban:"icon-douban",google:"icon-google",luolei:"icon-luolei",dribble:"icon-dribble"};for(var e in d)if("function"!=typeof d[e]){var f=e;a.indexOf(f)>=0&&(b=f,c=d[f])}return c}function isSiteDomain(){}var _siteDomain="luolei.org",duoshuoTrans=window.location.pathname;$(".ds-thread").attr("data-url","http://blog.luolei.org"+duoshuoTrans),document.onkeydown=checkKey,$(".post-cover-info").hover(function(){console.log("清楚遮罩"),cleanMask()});var visualContainerWidh=$(window).width(),contentWidth=$(".post-content").width();if($(".post-image p").each(function(){var a=$(this);""==a.html()&&a.closest(".post-excerpt").children(".excerpt-word").show()}),$(".single-post-inner img").each(function(){var a=$(this);"wrap"==a.attr("alt")==1&&a.addClass("wrap"),checkImg(a)}),$(".single-post-inner iframe, .single-post-inner frame, .single-post-inner video ").each(function(){var a=$(this),b=a.attr("width"),c=a.attr("height");scaleRatio=b/c,a.hasClass("wrap")&&visualContainerWidh>800&&a.css({width:visualContainerWidh,"margin-left":-(visualContainerWidh-contentWidth)/2,"max-width":visualContainerWidh,height:visualContainerWidh/scaleRatio})}),$(".single-post-inner img").length>0)if($('.single-post-inner img[alt="cover-image"]').length>0)mainImage=$('img[alt="cover-image"]:first'),mainImageSource=mainImage.attr("src"),$(".site-head").css("background-image","url("+mainImageSource+")"),mainImage.remove();else{$(".single-post-inner img:first").attr("alt","cover-image");var firstImgWidth=$(".single-post-inner img:first").width();console.log(firstImgWidth),$(".single-post-inner img:first").attr("alt","cover-image"),mainImage=$('img[alt="cover-image"]'),mainImageSource=mainImage.attr("src"),$(".site-head").css("background-image","url("+mainImageSource+")"),mainImage.remove()}$("body").is(".home-template")&&$(".post-in-list").each(function(){$(this).find("img:gt(0)").css("display","none"),$(this).find("pre").css("display","none")}),$(".post-excerpt .post-title").each(function(){$(this).hover(function(){console.log("出现");$(this)},function(){console.log("消失");$(this)})}),$(window).resize(function(){visualContainerWidh=$(window).width(),$(".single-post-inner img").each(function(){var a=$(this);checkImg(a)})}),$(".post-meta .post-tags").each(function(){var a=$(this);0==a.children().length&&a.addClass("hidden")});var searchField=$(".search-form-input").ghostHunter({results:".quick-search",onKeyUp:!0,result_template:"{{title}}",info_template:"

找到{{amount}}篇相关的文章

",rss:"/rss",zeroResultsInfo:!1});$(".search-form-input").focus(function(){$(".search-bar-result").css({visibility:"visible",opacity:"1"})}),$(".search-form-input").blur(function(){$(".search-bar-result").css({visibility:"hidden",opacity:"0"})}),$(document).ready(function(){$(".single-post-inner p a:not(:has(img))").each(function(){var a=$(this).attr("href"),b=document.createElement("a");b.href=a,_selfDomain=b.hostname,urlIconlize(_selfDomain),console.log(_selfDomain),$(this).prepend('');var c=$(this).find("i").css("color"),d=$(this).css("color");$(this).hover(function(){$(this).css("color",c),$(this).addClass("animated pulse")},function(){$(this).css("color",d),$(this).removeClass("animated pulse")})}),$(".post-cover-info").addClass("animated fadeInDownBig"),$(".post-template").ready(function(){console.log("文章页面加载完毕")}),$(window).stellar();var a="我要飞到最高",b=$(window).height();$(".cover-slide-more").click(function(){return $("html,body").animate({scrollTop:b},500),!1}),$(".cover-slide-more").hover(function(){cleanMask(),$(this).addClass("hoverLight"),$(".post-cover-info").addClass("animated fadeOutUp"),$(".cover-slide-more h4").show().addClass("animated fadeInDown")},function(){console.log("重现"),$(this).removeClass("hoverLight"),$(".post-cover-info").removeClass("fadeOutUp"),$(".post-cover-info").addClass("fadeInDown"),$(".cover-slide-more h4").hide()}),$(function(){var c=$('').appendTo("body");$(window).scroll(function(){$(window).scrollTop()>$(window).height()?c.fadeIn(500):c.fadeOut(500)}),c.click(function(a){a.preventDefault(),$("html,body").animate({scrollTop:b-100},1e3,function(){window.location.hash="#"}),console.log("我跳")})})}); -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports=function(grunt){ 2 | require('time-grunt')(grunt);//Grunt处理任务进度条提示 3 | 4 | grunt.initConfig({ 5 | //默认文件目录在这里 6 | paths:{ 7 | assets:'./assets',//输出的最终文件assets里面 8 | scss:'./css/sass',//推荐使用Sass 9 | css:'./css', //若简单项目,可直接使用原生CSS,同样可以grunt watch:base进行监控 10 | js:'./js', //js文件相关目录 11 | img:'./img' //图片相关 12 | }, 13 | buildType:'Build', 14 | pkg: grunt.file.readJSON('package.json'), 15 | archive_name: grunt.option('name') || 'StaticPage项目名称',//此处可根据自己的需求修改 16 | 17 | //清理掉开发时才需要的文件 18 | clean: { 19 | pre: ['dist/', 'build/'],//删除掉先前的开发文件 20 | post: ['<%= archive_name %>*.zip'] //先删除先前生成的压缩包 21 | }, 22 | 23 | uglify:{ 24 | options:{ 25 | banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' //js文件打上时间戳 26 | }, 27 | dist: { 28 | files: { 29 | '<%= paths.assets %>/js/min.v.js': '<%= paths.js %>/custome.js' 30 | } 31 | } 32 | }, 33 | 34 | //压缩最终Build文件夹 35 | compress:{ 36 | main:{ 37 | options:{ 38 | archive:'<%= archive_name %>-<%= grunt.template.today("yyyy") %>年<%= grunt.template.today("mm") %>月<%= grunt.template.today("dd") %>日<%= grunt.template.today("h") %>时<%= grunt.template.today("TT") %>.zip' 39 | }, 40 | expand:true, 41 | cwd:'build/', 42 | src:['**/*'], 43 | dest:'' 44 | } 45 | }, 46 | 47 | copy:{ 48 | main:{ 49 | files:[ 50 | {expand: true, src: ['assets/css/**'], dest: 'build/'}, 51 | {expand: true, src: ['assets/images/**'], dest: 'build/'}, 52 | {expand: true, src: ['assets/js/**'], dest: 'build/'}, 53 | {expand: true, src: ['*', '!.gitignore', '!.DS_Store','!Gruntfile.js','!package.json','!node_modules/**','!go.sh','!.ftppass','!<%= archive_name %>*.zip'], dest: 'build/'}, 54 | ] 55 | }, 56 | 57 | images:{ 58 | expand: true, 59 | cwd:'img/', 60 | src: ['**','!github.png'], 61 | dest: 'assets/images/', 62 | flatten:true, 63 | filter:'isFile', 64 | }, 65 | 66 | 67 | archive:{ 68 | files:[ 69 | {expand: true, src: ['<%= archive_name %>.zip'], dest: 'dist/'} 70 | ] 71 | } 72 | }, 73 | 74 | //Sass 预处理 75 | sass:{ 76 | admin:{ 77 | options:{ 78 | sourcemap:true, 79 | banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' 80 | }, 81 | files:{ 82 | '<%= paths.css %>/style.css':'<%= paths.scss %>/style.scss', 83 | } 84 | } 85 | }, 86 | 87 | //压缩 css 88 | cssmin:{ 89 | options:{ 90 | keepSpecialComments: 0 91 | }, 92 | compress:{ 93 | files:{ 94 | '<%= paths.assets %>/css/min.style.css': [ 95 | '<%= paths.css %>/style.css' 96 | ] 97 | } 98 | } 99 | }, 100 | 101 | // 格式化和清理html文件 102 | htmlmin: { 103 | dist: { 104 | options: { 105 | removeComments: true, 106 | //collapseWhitespace: true //压缩html:根据情况开启与否 107 | }, 108 | 109 | files: { 110 | 'build/index.html': 'build/index.html',//清除html中的注释 111 | } 112 | } 113 | }, 114 | 115 | 116 | //监听变化 默认grunt watch 监测所有开发文件变化 117 | watch:{ 118 | options:{ 119 | //开启 livereload 120 | livereload:true, 121 | //显示日志 122 | dateFormate:function(time){ 123 | grunt.log.writeln('编译完成,用时'+time+'ms ' + (new Date()).toString()); 124 | grunt.log.writeln('Wating for more changes...'); 125 | } 126 | }, 127 | //css 128 | sass:{ 129 | files:'<%= paths.scss %>/**/*.scss', 130 | tasks:['sass:admin','cssmin'] 131 | }, 132 | css:{ 133 | files:'<%= paths.css %>/**/*.css', 134 | tasks:['cssmin'] 135 | }, 136 | js:{ 137 | files:'<%= paths.js %>/**/*.js', 138 | tasks:['uglify'] 139 | }, 140 | //若不使用Sass,可通过grunt watch:base 只监测style.css和js文件 141 | base:{ 142 | files:['<%= paths.css %>/**/*.css','<%= paths.js %>/**/*.js','img/**'], 143 | tasks:['cssmin','uglify'] 144 | } 145 | 146 | }, 147 | 148 | //发布到FTP服务器 : 请注意密码安全,ftp的帐号密码保存在主目录 .ftppass 文件 149 | 'ftp-deploy': { 150 | build: { 151 | auth: { 152 | host: 'yourftp.domain.com', 153 | port: 21, 154 | authKey: 'key1' 155 | }, 156 | src: 'build', 157 | dest: '/home/ftp/demo', 158 | exclusions: ['path/to/source/folder/**/.DS_Store', 'path/to/source/folder/**/Thumbs.db', 'path/to/dist/tmp'] 159 | } 160 | } 161 | 162 | }); 163 | 164 | //输出进度日志 165 | grunt.event.on('watch', function(action, filepath, target) { 166 | grunt.log.writeln(target + ': ' + '文件: '+filepath + ' 变动状态: ' + action); 167 | }); 168 | 169 | grunt.loadNpmTasks('grunt-contrib-clean'); 170 | grunt.loadNpmTasks('grunt-contrib-compress'); 171 | grunt.loadNpmTasks('grunt-contrib-copy'); 172 | grunt.loadNpmTasks('grunt-contrib-cssmin'); 173 | grunt.loadNpmTasks('grunt-contrib-sass'); 174 | grunt.loadNpmTasks('grunt-contrib-watch'); 175 | grunt.loadNpmTasks('grunt-contrib-uglify'); 176 | grunt.loadNpmTasks('grunt-contrib-htmlmin'); 177 | 178 | grunt.registerTask('default', ['cssmin','uglify','htmlmin','copy:images']); 179 | grunt.registerTask('sass', ['sass:admin','cssmin']); 180 | //执行 grunt bundle --最终输出的文件 < name-生成日期.zip > 文件 181 | grunt.registerTask('bundle', ['clean:pre','copy:images', 'copy:main','cssmin','copy:archive', 'clean:post','htmlmin','compress',]); 182 | //执行 grunt publish 可以直接上传项目文件到指定服务器FTP目录 183 | grunt.registerTask('publish', ['ftp-deploy']); 184 | 185 | }; 186 | -------------------------------------------------------------------------------- /assets/fonts/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | uxiconfont 5 | 6 | 7 | 8 | 9 |
10 |

一淘UX图标

11 |
    12 | 13 |
  • 14 | 15 |
    新浪微博
    16 |
    &#x3432;
    17 |
  • 18 | 19 |
  • 20 | 21 |
    social_twitter_circle
    22 |
    &#xe763;
    23 |
  • 24 | 25 |
  • 26 | 27 |
    facebook
    28 |
    &#x3433;
    29 |
  • 30 | 31 |
  • 32 | 33 |
    github
    34 |
    &#xf01ca;
    35 |
  • 36 | 37 |
  • 38 | 39 |
    豆瓣 方形
    40 |
    &#x3440;
    41 |
  • 42 | 43 |
  • 44 | 45 |
    豆瓣
    46 |
    &#xf01c8;
    47 |
  • 48 | 49 |
  • 50 | 51 |
    人人网
    52 |
    &#x3435;
    53 |
  • 54 | 55 |
  • 56 | 57 |
    QQ
    58 |
    &#x3466;
    59 |
  • 60 | 61 |
  • 62 | 63 |
    qq
    64 |
    &#xe60c;
    65 |
  • 66 | 67 |
  • 68 | 69 |
    qq空间
    70 |
    &#xf0005;
    71 |
  • 72 | 73 |
  • 74 | 75 |
    腾讯微博
    76 |
    &#x3465;
    77 |
  • 78 | 79 |
  • 80 | 81 |
    腾讯微信
    82 |
    &#xf0003;
    83 |
  • 84 | 85 |
  • 86 | 87 |
    5
    88 |
    &#x3436;
    89 |
  • 90 | 91 |
  • 92 | 93 |
    qzone
    94 |
    &#xe60d;
    95 |
  • 96 | 97 |
  • 98 | 99 |
    百度 [转换]
    100 |
    &#xf001d;
    101 |
  • 102 | 103 |
  • 104 | 105 |
    social_rss_circle
    106 |
    &#xe751;
    107 |
  • 108 | 109 |
  • 110 | 111 |
    google
    112 |
    &#x3434;
    113 |
  • 114 | 115 |
  • 116 | 117 |
    淘宝
    118 |
    &#xf0171;
    119 |
  • 120 | 121 |
  • 122 | 123 |
    evernote
    124 |
    &#xe602;
    125 |
  • 126 | 127 |
  • 128 | 129 |
    luolei
    130 |
    &#xe60e;
    131 |
  • 132 | 133 |
  • 134 | 135 |
    新浪
    136 |
    &#xe61c;
    137 |
  • 138 | 139 |
  • 140 | 141 |
    Twitter
    142 |
    &#xf000e;
    143 |
  • 144 | 145 |
  • 146 | 147 |
    github-pure
    148 |
    &#xe611;
    149 |
  • 150 | 151 |
  • 152 | 153 |
    dribble-pure
    154 |
    &#xe612;
    155 |
  • 156 | 157 |
  • 158 | 159 |
    微信
    160 |
    &#x343b;
    161 |
  • 162 | 163 |
  • 164 | 165 |
    信号
    166 |
    &#xf01bd;
    167 |
  • 168 | 169 |
  • 170 | 171 |
    instagram-pure
    172 |
    &#xe613;
    173 |
  • 174 | 175 |
176 | 177 | 178 |
179 | 第一步:使用font-face声明字体 180 |
181 | @font-face {font-family: 'iconfont';
182 |     src: url('iconfont.eot'); /* IE9*/
183 |     src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
184 |     url('iconfont.woff') format('woff'), /* chrome、firefox */
185 |     url('iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
186 |     url('iconfont.svg#uxiconfont') format('svg'); /* iOS 4.1- */
187 | }
188 | 
189 | 第二步:定义使用iconfont的样式 190 |
191 | .iconfont{
192 |     font-family:"iconfont" !important;
193 |     font-size:16px;font-style:normal;
194 |     -webkit-font-smoothing: antialiased;
195 |     -webkit-text-stroke-width: 0.2px;
196 |     -moz-osx-font-smoothing: grayscale;}
197 | 
198 | 第三步:挑选相应图标并获取字体编码,应用于页面 199 |
200 | <i class="iconfont">&#x33</i>
201 | 
202 |
203 | 204 |
205 | 206 | 207 | -------------------------------------------------------------------------------- /css/sass/_normalize.scss: -------------------------------------------------------------------------------- 1 | /*! normalize.css v2.1.3 | MIT License | git.io/normalize */ 2 | 3 | /* ========================================================================== 4 | HTML5 display definitions 5 | ========================================================================== */ 6 | 7 | /** 8 | * Correct `block` display not defined in IE 8/9. 9 | */ 10 | 11 | article, 12 | aside, 13 | details, 14 | figcaption, 15 | figure, 16 | footer, 17 | header, 18 | hgroup, 19 | main, 20 | nav, 21 | section, 22 | summary { 23 | display: block; 24 | } 25 | 26 | /** 27 | * Correct `inline-block` display not defined in IE 8/9. 28 | */ 29 | 30 | audio, 31 | canvas, 32 | video { 33 | display: inline-block; 34 | } 35 | 36 | /** 37 | * Prevent modern browsers from displaying `audio` without controls. 38 | * Remove excess height in iOS 5 devices. 39 | */ 40 | 41 | audio:not([controls]) { 42 | display: none; 43 | height: 0; 44 | } 45 | 46 | /** 47 | * Address `[hidden]` styling not present in IE 8/9. 48 | * Hide the `template` element in IE, Safari, and Firefox < 22. 49 | */ 50 | 51 | [hidden], 52 | template { 53 | display: none; 54 | } 55 | 56 | /* ========================================================================== 57 | Base 58 | ========================================================================== */ 59 | 60 | /** 61 | * 1. Set default font family to sans-serif. 62 | * 2. Prevent iOS text size adjust after orientation change, without disabling 63 | * user zoom. 64 | */ 65 | 66 | html { 67 | font-family: sans-serif; /* 1 */ 68 | -ms-text-size-adjust: 100%; /* 2 */ 69 | -webkit-text-size-adjust: 100%; /* 2 */ 70 | } 71 | 72 | /** 73 | * Remove default margin. 74 | */ 75 | 76 | body { 77 | margin: 0; 78 | } 79 | 80 | /* ========================================================================== 81 | Links 82 | ========================================================================== */ 83 | 84 | /** 85 | * Remove the gray background color from active links in IE 10. 86 | */ 87 | 88 | a { 89 | background: transparent; 90 | } 91 | 92 | /** 93 | * Address `outline` inconsistency between Chrome and other browsers. 94 | */ 95 | 96 | a:focus { 97 | outline: thin dotted; 98 | } 99 | 100 | /** 101 | * Improve readability when focused and also mouse hovered in all browsers. 102 | */ 103 | 104 | a:active, 105 | a:hover { 106 | outline: 0; 107 | } 108 | 109 | /* ========================================================================== 110 | Typography 111 | ========================================================================== */ 112 | 113 | /** 114 | * Address variable `h1` font-size and margin within `section` and `article` 115 | * contexts in Firefox 4+, Safari 5, and Chrome. 116 | */ 117 | 118 | h1 { 119 | font-size: 2em; 120 | margin: 0.67em 0; 121 | } 122 | 123 | /** 124 | * Address styling not present in IE 8/9, Safari 5, and Chrome. 125 | */ 126 | 127 | abbr[title] { 128 | border-bottom: 1px dotted; 129 | } 130 | 131 | /** 132 | * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. 133 | */ 134 | 135 | b, 136 | strong { 137 | font-weight: bold; 138 | } 139 | 140 | /** 141 | * Address styling not present in Safari 5 and Chrome. 142 | */ 143 | 144 | dfn { 145 | font-style: italic; 146 | } 147 | 148 | /** 149 | * Address differences between Firefox and other browsers. 150 | */ 151 | 152 | hr { 153 | -moz-box-sizing: content-box; 154 | box-sizing: content-box; 155 | height: 0; 156 | } 157 | 158 | /** 159 | * Address styling not present in IE 8/9. 160 | */ 161 | 162 | mark { 163 | background: #ff0; 164 | color: #000; 165 | } 166 | 167 | /** 168 | * Correct font family set oddly in Safari 5 and Chrome. 169 | */ 170 | 171 | code, 172 | kbd, 173 | pre, 174 | samp { 175 | font-family: monospace, serif; 176 | font-size: 1em; 177 | } 178 | 179 | /** 180 | * Improve readability of pre-formatted text in all browsers. 181 | */ 182 | 183 | pre { 184 | white-space: pre-wrap; 185 | } 186 | 187 | /** 188 | * Set consistent quote types. 189 | */ 190 | 191 | q { 192 | quotes: "\201C" "\201D" "\2018" "\2019"; 193 | } 194 | 195 | /** 196 | * Address inconsistent and variable font size in all browsers. 197 | */ 198 | 199 | small { 200 | font-size: 80%; 201 | } 202 | 203 | /** 204 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 205 | */ 206 | 207 | sub, 208 | sup { 209 | font-size: 75%; 210 | line-height: 0; 211 | position: relative; 212 | vertical-align: baseline; 213 | } 214 | 215 | sup { 216 | top: -0.5em; 217 | } 218 | 219 | sub { 220 | bottom: -0.25em; 221 | } 222 | 223 | /* ========================================================================== 224 | Embedded content 225 | ========================================================================== */ 226 | 227 | /** 228 | * Remove border when inside `a` element in IE 8/9. 229 | */ 230 | 231 | img { 232 | border: 0; 233 | } 234 | 235 | /** 236 | * Correct overflow displayed oddly in IE 9. 237 | */ 238 | 239 | svg:not(:root) { 240 | overflow: hidden; 241 | } 242 | 243 | /* ========================================================================== 244 | Figures 245 | ========================================================================== */ 246 | 247 | /** 248 | * Address margin not present in IE 8/9 and Safari 5. 249 | */ 250 | 251 | figure { 252 | margin: 0; 253 | } 254 | 255 | /* ========================================================================== 256 | Forms 257 | ========================================================================== */ 258 | 259 | /** 260 | * Define consistent border, margin, and padding. 261 | */ 262 | 263 | fieldset { 264 | border: 1px solid #c0c0c0; 265 | margin: 0 2px; 266 | padding: 0.35em 0.625em 0.75em; 267 | } 268 | 269 | /** 270 | * 1. Correct `color` not being inherited in IE 8/9. 271 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 272 | */ 273 | 274 | legend { 275 | border: 0; /* 1 */ 276 | padding: 0; /* 2 */ 277 | } 278 | 279 | /** 280 | * 1. Correct font family not being inherited in all browsers. 281 | * 2. Correct font size not being inherited in all browsers. 282 | * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. 283 | */ 284 | 285 | button, 286 | input, 287 | select, 288 | textarea { 289 | font-family: inherit; /* 1 */ 290 | font-size: 100%; /* 2 */ 291 | margin: 0; /* 3 */ 292 | } 293 | 294 | /** 295 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 296 | * the UA stylesheet. 297 | */ 298 | 299 | button, 300 | input { 301 | line-height: normal; 302 | } 303 | 304 | /** 305 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 306 | * All other form control elements do not inherit `text-transform` values. 307 | * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. 308 | * Correct `select` style inheritance in Firefox 4+ and Opera. 309 | */ 310 | 311 | button, 312 | select { 313 | text-transform: none; 314 | } 315 | 316 | /** 317 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 318 | * and `video` controls. 319 | * 2. Correct inability to style clickable `input` types in iOS. 320 | * 3. Improve usability and consistency of cursor style between image-type 321 | * `input` and others. 322 | */ 323 | 324 | button, 325 | html input[type="button"], /* 1 */ 326 | input[type="reset"], 327 | input[type="submit"] { 328 | -webkit-appearance: button; /* 2 */ 329 | cursor: pointer; /* 3 */ 330 | } 331 | 332 | /** 333 | * Re-set default cursor for disabled elements. 334 | */ 335 | 336 | button[disabled], 337 | html input[disabled] { 338 | cursor: default; 339 | } 340 | 341 | /** 342 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 343 | * 2. Remove excess padding in IE 8/9/10. 344 | */ 345 | 346 | input[type="checkbox"], 347 | input[type="radio"] { 348 | box-sizing: border-box; /* 1 */ 349 | padding: 0; /* 2 */ 350 | } 351 | 352 | /** 353 | * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 354 | * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome 355 | * (include `-moz` to future-proof). 356 | */ 357 | 358 | input[type="search"] { 359 | -webkit-appearance: textfield; /* 1 */ 360 | -moz-box-sizing: content-box; 361 | -webkit-box-sizing: content-box; /* 2 */ 362 | box-sizing: content-box; 363 | } 364 | 365 | /** 366 | * Remove inner padding and search cancel button in Safari 5 and Chrome 367 | * on OS X. 368 | */ 369 | 370 | input[type="search"]::-webkit-search-cancel-button, 371 | input[type="search"]::-webkit-search-decoration { 372 | -webkit-appearance: none; 373 | } 374 | 375 | /** 376 | * Remove inner padding and border in Firefox 4+. 377 | */ 378 | 379 | button::-moz-focus-inner, 380 | input::-moz-focus-inner { 381 | border: 0; 382 | padding: 0; 383 | } 384 | 385 | /** 386 | * 1. Remove default vertical scrollbar in IE 8/9. 387 | * 2. Improve readability and alignment in all browsers. 388 | */ 389 | 390 | textarea { 391 | overflow: auto; /* 1 */ 392 | vertical-align: top; /* 2 */ 393 | } 394 | 395 | /* ========================================================================== 396 | Tables 397 | ========================================================================== */ 398 | 399 | /** 400 | * Remove most spacing between table cells. 401 | */ 402 | 403 | table { 404 | border-collapse: collapse; 405 | border-spacing: 0; 406 | } 407 | 408 | 409 | img::selection { 410 | background: transparent 411 | } 412 | 413 | img::-moz-selection { 414 | background: transparent 415 | } 416 | -------------------------------------------------------------------------------- /assets/js/prism.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Prism: Lightweight, robust, elegant syntax highlighting 3 | * MIT license http://www.opensource.org/licenses/mit-license.php/ 4 | * @author Lea Verou http://lea.verou.me 5 | */(function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var n=t.util.type(e);switch(n){case"Object":var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=t.util.clone(e[i]));return r;case"Array":return e.slice()}return e}},languages:{extend:function(e,n){var r=t.util.clone(t.languages[e]);for(var i in n)r[i]=n[i];return r},insertBefore:function(e,n,r,i){i=i||t.languages;var s=i[e],o={};for(var u in s)if(s.hasOwnProperty(u)){if(u==n)for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);o[u]=s[u]}return i[e]=o},DFS:function(e,n){for(var r in e){n.call(e,r,e[r]);t.util.type(e)==="Object"&&t.languages.DFS(e[r],n)}}},highlightAll:function(e,n){var r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');for(var i=0,s;s=r[i++];)t.highlightElement(s,e===!0,n)},highlightElement:function(r,i,s){var o,u,a=r;while(a&&!e.test(a.className))a=a.parentNode;if(a){o=(a.className.match(e)||[,""])[1];u=t.languages[o]}if(!u)return;r.className=r.className.replace(e,"").replace(/\s+/g," ")+" language-"+o;a=r.parentNode;/pre/i.test(a.nodeName)&&(a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+o);var f=r.textContent;if(!f)return;f=f.replace(/&/g,"&").replace(/e.length)break e;if(p instanceof i)continue;a.lastIndex=0;var d=a.exec(p);if(d){l&&(c=d[1].length);var v=d.index-1+c,d=d[0].slice(c),m=d.length,g=v+m,y=p.slice(0,v+1),b=p.slice(g+1),w=[h,1];y&&w.push(y);var E=new i(u,f?t.tokenize(d,f):d);w.push(E);b&&w.push(b);Array.prototype.splice.apply(s,w)}}}return s},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[];r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(!r||!r.length)return;for(var i=0,s;s=r[i++];)s(n)}}},n=t.Token=function(e,t){this.type=e;this.content=t};n.stringify=function(e,r,i){if(typeof e=="string")return e;if(Object.prototype.toString.call(e)=="[object Array]")return e.map(function(t){return n.stringify(t,r,e)}).join("");var s={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};s.type=="comment"&&(s.attributes.spellcheck="true");t.hooks.run("wrap",s);var o="";for(var u in s.attributes)o+=u+'="'+(s.attributes[u]||"")+'"';return"<"+s.tag+' class="'+s.classes.join(" ")+'" '+o+">"+s.content+""};if(!self.document){self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.tokenize(i,t.languages[r])));self.close()},!1);return}var r=document.getElementsByTagName("script");r=r[r.length-1];if(r){t.filename=r.src;document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)}})();; 6 | Prism.languages.markup={comment:/<!--[\w\W]*?-->/g,prolog:/<\?.+?\?>/,doctype:/<!DOCTYPE.+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/&#?[\da-z]{1,8};/gi};Prism.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&/,"&"))});; 7 | Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/ig,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,ignore:/&(lt|gt|amp);/gi,punctuation:/[\{\};:]/g};Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<|<)style[\w\W]*?(>|>)[\w\W]*?(<|<)\/style(>|>)/ig,inside:{tag:{pattern:/(<|<)style[\w\W]*?(>|>)|(<|<)\/style(>|>)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}});; 8 | Prism.languages.clike={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|(^|[^:])\/\/.*?(\r?\n|$))/g,lookbehind:!0},string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/ig,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/ig,inside:{punctuation:/\(/}}, number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|(&){1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g}; 9 | ; 10 | Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(var|let|if|else|while|do|for|return|in|instanceof|function|new|with|typeof|try|throw|catch|finally|null|break|continue)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g});Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}});Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<|<)script[\w\W]*?(>|>)[\w\W]*?(<|<)\/script(>|>)/ig,inside:{tag:{pattern:/(<|<)script[\w\W]*?(>|>)|(<|<)\/script(>|>)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}}); 11 | ; 12 | Prism.languages.php=Prism.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|extends|private|protected|parent|static|throw|null|echo|print|trait|namespace|use|final|yield|goto|instanceof|finally|try|catch)\b/ig, constant:/\b[A-Z0-9_]{2,}\b/g});Prism.languages.insertBefore("php","keyword",{delimiter:/(\?>|<\?php|<\?)/ig,variable:/(\$\w+)\b/ig,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/g,lookbehind:!0,inside:{punctuation:/\\/}}});Prism.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/g,lookbehind:!0}}); Prism.languages.markup&&(Prism.hooks.add("before-highlight",function(a){"php"===a.language&&(a.tokenStack=[],a.code=a.code.replace(/(?:<\?php|<\?|<\?php|<\?)[\w\W]*?(?:\?>|\?>)/ig,function(b){a.tokenStack.push(b);return"{{{PHP"+a.tokenStack.length+"}}}"}))}),Prism.hooks.add("after-highlight",function(a){if("php"===a.language){for(var b=0,c;c=a.tokenStack[b];b++)a.highlightedCode=a.highlightedCode.replace("{{{PHP"+(b+1)+"}}}",Prism.highlight(c,a.grammar,"php"));a.element.innerHTML=a.highlightedCode}}), Prism.hooks.add("wrap",function(a){"php"===a.language&&"markup"===a.type&&(a.content=a.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'$1'))}),Prism.languages.insertBefore("php","comment",{markup:{pattern:/(<|<)[^?]\/?(.*?)(>|>)/g,inside:Prism.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/g}));; 13 | Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g,lookbehind:!0},atrule:/@[\w-]+(?=\s+(\(|\{|;))/gi,url:/([-a-z]+-)*url(?=\()/gi,selector:/([^@;\{\}\(\)]?([^@;\{\}\(\)]|&|\#\{\$[-_\w]+\})+)(?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/gm});Prism.languages.insertBefore("scss","atrule",{keyword:/@(if|else if|else|for|each|while|import|extend|debug|warn|mixin|include|function|return)|(?=@for\s+\$[-_\w]+\s)+from/i});Prism.languages.insertBefore("scss","property",{variable:/((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i});Prism.languages.insertBefore("scss","ignore",{placeholder:/%[-_\w]+/i,statement:/\B!(default|optional)\b/gi,"boolean":/\b(true|false)\b/g,"null":/\b(null)\b/g,operator:/\s+([-+]{1,2}|={1,2}|!=|\|?\||\?|\*|\/|\%)\s+/g}); 14 | ; 15 | Prism.languages.bash=Prism.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])(#.*?(\r?\n|$))/g,lookbehind:!0},string:{pattern:/("|')(\\?[\s\S])*?\1/g,inside:{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^\}]+\})/g}},keyword:/\b(if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)\b/g});Prism.languages.insertBefore("bash","keyword",{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^}]+\})/g});Prism.languages.insertBefore("bash","comment",{important:/(^#!\s*\/bin\/bash)|(^#!\s*\/bin\/sh)/g}); 16 | ; 17 | Prism.hooks.add("after-highlight",function(e){var t=e.element.parentNode;if(!t||!/pre/i.test(t.nodeName)||t.className.indexOf("line-numbers")===-1){return}var n=1+e.code.split("\n").length;var r;lines=new Array(n);lines=lines.join("");r=document.createElement("span");r.className="line-numbers-rows";r.innerHTML=lines;if(t.hasAttribute("data-start")){t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)}e.element.appendChild(r)}) 18 | ; 19 | -------------------------------------------------------------------------------- /js/custome.js: -------------------------------------------------------------------------------- 1 | /*这里是will-light 主题的定制 js 2 | * author: [@foru17]( http://twitter.com/foru17) 3 | * 4 | */ 5 | 6 | /*设定一些常用的参数*/ 7 | var _siteDomain= 'luolei.org' || window.location.host; 8 | 9 | /*迁移多说Wordpress评论到Ghost 10 | * 尼玛这遇到坑啊,还要自己写插件处理这个评论的迁移 11 | */ 12 | var duoshuoTrans= window.location.pathname; 13 | $('.ds-thread').attr('data-url','http://blog.luolei.org'+duoshuoTrans); 14 | //document.getElementsByClassName('ds-thread').setAttribute('data-url','http://luolei.org'+duoshuoTrans); 15 | 16 | 17 | /*图片延迟加载*/ 18 | 19 | 20 | /*模拟键盘上下滚动*/ 21 | document.onkeydown = checkKey; 22 | 23 | function checkKey(e) { 24 | e = e || window.event; 25 | if (e.keyCode == '74') { 26 | $('html,body').stop(); 27 | $('html,body').animate({ 28 | scrollTop: $(window).stop().scrollTop() + 200 29 | },'fast') 30 | } 31 | else if (e.keyCode == '75') { 32 | $('html,body').stop(); 33 | $('html,body').animate({ 34 | scrollTop: $(window).stop().scrollTop() - 200 35 | },'fast') 36 | } 37 | 38 | } 39 | 40 | function cleanMask(){ 41 | $('.post-header-mask').css('opacity','0'); 42 | } 43 | 44 | $('.post-cover-info').hover(function(){ 45 | console.log('清楚遮罩'); 46 | cleanMask(); 47 | }) 48 | 49 | /*顶部遮罩效果*/ 50 | 51 | 52 | 53 | var visualContainerWidh=$(window).width(); 54 | var contentWidth=$('.post-content').width(); 55 | 56 | /*检查图片原始高度*/ 57 | function checkImg(img){ 58 | var img_real_width, 59 | img_real_height, 60 | isMarkWrap=false;//只有作者标记wrap class才会全宽显示 61 | if($(img).hasClass('wrap') == true){ 62 | isMarkWrap = true; 63 | console.log('wrap标记'); 64 | }else{ 65 | console.log('不满足wrap'); 66 | return; 67 | } 68 | 69 | $('').attr('src',$(img).attr('src')).load(function(){ 70 | img_real_width=this.width; 71 | img_real_height=this.height; 72 | /*处理inner中的图片*/ 73 | 74 | if(isMarkWrap == true && visualContainerWidh>800 && img_real_width>900 && img_real_width > contentWidth){ 75 | $(img).css({ 76 | 'width':visualContainerWidh, 77 | 'margin-left':-(visualContainerWidh-contentWidth)/2, 78 | 'max-width':visualContainerWidh 79 | }); 80 | $(img).addClass('imgWrapOut'); 81 | } 82 | }) 83 | 84 | } 85 | 86 | 87 | 88 | /*若文章没有图片,则在首页显示文字摘要*/ 89 | $('.post-image p').each(function(){ 90 | var _this=$(this); 91 | if(_this.html() == ''){ 92 | _this.closest('.post-excerpt').children('.excerpt-word').show(); 93 | } 94 | }) 95 | 96 | 97 | $('.single-post-inner img').each(function(){ 98 | var _img=$(this); 99 | if((_img.attr('alt')=='wrap') == true ){ 100 | _img.addClass('wrap'); 101 | } 102 | checkImg(_img); 103 | }); 104 | 105 | 106 | 107 | /*处理iframe宽度*/ 108 | $('.single-post-inner iframe, .single-post-inner frame, .single-post-inner video ').each(function(){ 109 | /*获得原始的width,调整适应比例*/ 110 | var _this=$(this); 111 | var originalWidth=_this.attr('width'), 112 | originalHeight=_this.attr('height'), 113 | isMarkWrap=false; 114 | 115 | scaleRatio=originalWidth / originalHeight;//获得长宽比 116 | 117 | if(_this.hasClass('wrap') && visualContainerWidh>800){ 118 | _this.css({ 119 | 'width':visualContainerWidh, 120 | 'margin-left':-(visualContainerWidh-contentWidth)/2, 121 | 'max-width':visualContainerWidh, 122 | 'height':visualContainerWidh / scaleRatio 123 | }); 124 | } 125 | }); 126 | 127 | 128 | /*判断cover-image插件*/ 129 | 130 | if($('.single-post-inner img').length>0){ 131 | /*如果文章存在图片,首先判断是否有自定义 cover-image*/ 132 | if($('.single-post-inner img[alt="cover-image"]').length>0){ 133 | /*如果有自定义cover,则使用这张*/ 134 | mainImage=$('img[alt="cover-image"]:first');//默认选择第一张 cover-image 135 | mainImageSource = mainImage.attr('src'); 136 | $('.site-head').css('background-image','url('+mainImageSource+')'); 137 | mainImage.remove(); 138 | }else{ 139 | $('.single-post-inner img:first').attr('alt','cover-image'); 140 | var firstImgWidth=$('.single-post-inner img:first').width(); 141 | console.log(firstImgWidth); 142 | /*如果没有自定义 cover-image,使用第一章图片*/ 143 | $('.single-post-inner img:first').attr('alt','cover-image'); 144 | mainImage=$('img[alt="cover-image"]'); 145 | mainImageSource = mainImage.attr('src'); 146 | $('.site-head').css('background-image','url('+mainImageSource+')'); 147 | mainImage.remove(); 148 | 149 | } 150 | 151 | }else{ 152 | /*如果没有图片,则使用默认的*/ 153 | 154 | } 155 | 156 | /*首页最多只显示一张图片 157 | * Display only one image in each post's excerpt 158 | */ 159 | if($('body').is('.home-template'||'.archive-template')){ 160 | $('.post-in-list').each(function(){ 161 | $(this).find('img:gt(0)').css('display','none'); 162 | $(this).find('pre').css('display','none'); 163 | }) 164 | } 165 | 166 | 167 | 168 | /*首页显示简介*/ 169 | 170 | $('.post-excerpt .post-title').each(function(){ 171 | 172 | $(this).hover(function(){ 173 | console.log('出现'); 174 | var _this=$(this); 175 | // _this.removeClass('hidden'); 176 | // targetExcerpet=_this.closest('.post-excerpt').children('.excerpt-word'); 177 | //targetExcerpet.show();//.addClass('animated fadeIn'); 178 | },function(){ 179 | console.log('消失'); 180 | var _this=$(this); 181 | // targetExcerpet=_this.closest('.post-excerpt').children('.excerpt-word'); 182 | // targetExcerpet.removeClass('fadeInDown').addClass('fadeOutUp').hide(); 183 | }) 184 | 185 | }) 186 | 187 | 188 | 189 | $(window).resize(function() { 190 | /*重新修改文章图片大小*/ 191 | visualContainerWidh=$(window).width(); 192 | // contentWidth=$('.post-content').width(); 193 | $('.single-post-inner img').each(function(){ 194 | var _img=$(this); 195 | checkImg(_img); 196 | }) 197 | }); 198 | 199 | 200 | /*顶部向下滚动*/ 201 | 202 | 203 | /*如果没有tag,则默认隐藏*/ 204 | $('.post-meta .post-tags').each(function(){ 205 | var _this=$(this); 206 | if(_this.children().length == 0){ 207 | _this.addClass('hidden'); 208 | } 209 | }) 210 | 211 | // $(document).bind('scroll', fader); 212 | 213 | /*给文章中的url添加iconfont方便识别*/ 214 | function urlIconlize(url){ 215 | var domain, 216 | _output; 217 | var iconMap={/*索引 可在这里添加匹配规则*/ 218 | 'twitter':'icon-twitter', 219 | 'qzone':'icon-qzone', 220 | 'weibo':'icon-weibo', 221 | 'facebook':'icon-facebook', 222 | 'github':'icon-github', 223 | 'douban':'icon-douban', 224 | 'google':'icon-google', 225 | 'luolei':'icon-luolei', 226 | 'dribble':'icon-dribble' 227 | 228 | } 229 | 230 | for(var name in iconMap){ 231 | if(typeof iconMap[name] !== 'function'){ 232 | var MapKey=name; 233 | if(url.indexOf(MapKey)>=0){ 234 | domain=MapKey; 235 | _output=iconMap[MapKey]; 236 | } 237 | } 238 | } 239 | 240 | return _output; 241 | } 242 | 243 | /*判断是否是站内连接*/ 244 | 245 | function isSiteDomain(url){ 246 | 247 | } 248 | 249 | 250 | /*增加搜索功能*/ 251 | 252 | var searchField = $(".search-form-input").ghostHunter({ 253 | results : ".quick-search", 254 | onKeyUp : true, 255 | result_template : "{{title}}", 256 | info_template : "

找到{{amount}}篇相关的文章

", 257 | rss : "/rss", 258 | //displaySearchInfo : false, 259 | zeroResultsInfo : false 260 | }); 261 | 262 | $('.search-form-input').focus(function(){ 263 | $('.search-bar-result').css({'visibility':'visible','opacity':'1'}); 264 | }); 265 | 266 | $('.search-form-input').blur(function(){ 267 | $('.search-bar-result').css({'visibility':'hidden','opacity':'0'}); 268 | }); 269 | 270 | 271 | /*窗口重新变化的时候*/ 272 | 273 | 274 | /*Document Ready*/ 275 | $(document).ready(function(){ 276 | 277 | /*给博客文章地址url添加ico识别*/ 278 | $('.single-post-inner p a:not(:has(img))').each(function(i){ 279 | var _src=$(this).attr('href'); 280 | var tmp=document.createElement('a'); 281 | tmp.href=_src; 282 | _selfDomain=tmp.hostname; 283 | urlIconlize(_selfDomain); 284 | console.log(_selfDomain); 285 | //$(this).append(urlIconlize(_selfDomain)); 286 | $(this).prepend(''); 287 | var _selfColor=$(this).find('i').css('color'), 288 | _originalColor=$(this).css('color'); 289 | 290 | 291 | /*鼠标悬浮时*/ 292 | $(this).hover(function(){ 293 | $(this).css('color',_selfColor); 294 | $(this).addClass('animated pulse'); 295 | },function(){ 296 | $(this).css('color',_originalColor); 297 | $(this).removeClass('animated pulse'); 298 | }); 299 | 300 | }) 301 | 302 | 303 | /*添加一些元素动画*/ 304 | $('.post-cover-info').addClass('animated fadeInDownBig'); 305 | 306 | $('.post-template').ready(function(){ 307 | console.log('文章页面加载完毕'); 308 | //cleanMask(); 309 | //$('.post-header-mask').delay(9000).css('opacity','0'); 310 | }) 311 | 312 | 313 | /*顶部图片视觉滚差*/ 314 | $(window).stellar(); 315 | 316 | /*返回顶部*/ 317 | var STR_TO_TOP='我要飞到最高'; 318 | var coverHeight=$(window).height();//获得图片高度 319 | $('.cover-slide-more').click(function(){ 320 | $('html,body').animate({scrollTop:coverHeight},500); 321 | return false; 322 | }) 323 | $('.cover-slide-more').hover(function(){ 324 | cleanMask(); 325 | $(this).addClass('hoverLight'); 326 | $('.post-cover-info').addClass('animated fadeOutUp'); 327 | $('.cover-slide-more h4').show().addClass('animated fadeInDown'); 328 | },function(){ 329 | console.log('重现'); 330 | $(this).removeClass('hoverLight'); 331 | $('.post-cover-info').removeClass('fadeOutUp'); 332 | $('.post-cover-info').addClass('fadeInDown'); 333 | $('.cover-slide-more h4').hide(); 334 | }); 335 | 336 | $(function(){ 337 | var button = $('').appendTo('body'); 338 | $(window).scroll(function(){ 339 | if($(window).scrollTop()>$(window).height()) button.fadeIn(500); 340 | else button.fadeOut(500); 341 | }); 342 | 343 | button.click(function(e){ 344 | e.preventDefault(); 345 | $('html,body').animate({ 346 | scrollTop:coverHeight-100 347 | },1000,function(){ 348 | window.location.hash='#'; 349 | }); 350 | console.log('我跳'); 351 | }) 352 | }) 353 | 354 | }) 355 | 356 | -------------------------------------------------------------------------------- /assets/js/custom.js: -------------------------------------------------------------------------------- 1 | /*这里是will-light 主题的定制 js 2 | * author: [@foru17]( http://twitter.com/foru17) 3 | * 4 | */ 5 | 6 | /*设定一些常用的参数*/ 7 | var _siteDomain= 'luolei.org' || window.location.host; 8 | 9 | /*迁移多说Wordpress评论到Ghost 10 | * 尼玛这遇到坑啊,还要自己写插件处理这个评论的迁移 11 | */ 12 | var duoshuoTrans= window.location.pathname; 13 | $('.ds-thread').attr('data-url','http://blog.luolei.org'+duoshuoTrans); 14 | //document.getElementsByClassName('ds-thread').setAttribute('data-url','http://luolei.org'+duoshuoTrans); 15 | 16 | 17 | /*图片延迟加载*/ 18 | 19 | 20 | /*模拟键盘上下滚动*/ 21 | document.onkeydown = checkKey; 22 | 23 | function checkKey(e) { 24 | e = e || window.event; 25 | if (e.keyCode == '74') { 26 | $('html,body').stop(); 27 | $('html,body').animate({ 28 | scrollTop: $(window).stop().scrollTop() + 200 29 | },'fast') 30 | } 31 | else if (e.keyCode == '75') { 32 | $('html,body').stop(); 33 | $('html,body').animate({ 34 | scrollTop: $(window).stop().scrollTop() - 200 35 | },'fast') 36 | } 37 | 38 | } 39 | 40 | function cleanMask(){ 41 | $('.post-header-mask').css('opacity','0'); 42 | } 43 | 44 | $('.post-cover-info').hover(function(){ 45 | console.log('清楚遮罩'); 46 | cleanMask(); 47 | }) 48 | 49 | /*顶部遮罩效果*/ 50 | 51 | 52 | 53 | var visualContainerWidh=$(window).width(); 54 | var contentWidth=$('.post-content').width(); 55 | 56 | /*检查图片原始高度*/ 57 | function checkImg(img){ 58 | var img_real_width, 59 | img_real_height, 60 | isMarkWrap=false;//只有作者标记wrap class才会全宽显示 61 | if($(img).hasClass('wrap') == true){ 62 | isMarkWrap = true; 63 | console.log('wrap标记'); 64 | }else{ 65 | console.log('不满足wrap'); 66 | return; 67 | } 68 | 69 | $('').attr('src',$(img).attr('src')).load(function(){ 70 | img_real_width=this.width; 71 | img_real_height=this.height; 72 | /*处理inner中的图片*/ 73 | 74 | if(isMarkWrap == true && visualContainerWidh>800 && img_real_width>900 && img_real_width > contentWidth){ 75 | $(img).css({ 76 | 'width':visualContainerWidh, 77 | 'margin-left':-(visualContainerWidh-contentWidth)/2, 78 | 'max-width':visualContainerWidh 79 | }); 80 | $(img).addClass('imgWrapOut'); 81 | } 82 | }) 83 | 84 | } 85 | 86 | 87 | 88 | /*若文章没有图片,则在首页显示文字摘要*/ 89 | $('.post-image p').each(function(){ 90 | var _this=$(this); 91 | if(_this.html() == ''){ 92 | _this.closest('.post-excerpt').children('.excerpt-word').show(); 93 | } 94 | }) 95 | 96 | 97 | $('.single-post-inner img').each(function(){ 98 | var _img=$(this); 99 | if((_img.attr('alt')=='wrap') == true ){ 100 | _img.addClass('wrap'); 101 | } 102 | checkImg(_img); 103 | }); 104 | 105 | 106 | 107 | /*处理iframe宽度*/ 108 | $('.single-post-inner iframe, .single-post-inner frame, .single-post-inner video ').each(function(){ 109 | /*获得原始的width,调整适应比例*/ 110 | var _this=$(this); 111 | var originalWidth=_this.attr('width'), 112 | originalHeight=_this.attr('height'), 113 | isMarkWrap=false; 114 | 115 | scaleRatio=originalWidth / originalHeight;//获得长宽比 116 | 117 | if(_this.hasClass('wrap') && visualContainerWidh>800){ 118 | _this.css({ 119 | 'width':visualContainerWidh, 120 | 'margin-left':-(visualContainerWidh-contentWidth)/2, 121 | 'max-width':visualContainerWidh, 122 | 'height':visualContainerWidh / scaleRatio 123 | }); 124 | } 125 | }); 126 | 127 | 128 | /*判断cover-image插件*/ 129 | 130 | if($('.single-post-inner img').length>0){ 131 | /*如果文章存在图片,首先判断是否有自定义 cover-image*/ 132 | if($('.single-post-inner img[alt="cover-image"]').length>0){ 133 | /*如果有自定义cover,则使用这张*/ 134 | mainImage=$('img[alt="cover-image"]:first');//默认选择第一张 cover-image 135 | mainImageSource = mainImage.attr('src'); 136 | $('.site-head').css('background-image','url('+mainImageSource+')'); 137 | mainImage.remove(); 138 | }else{ 139 | $('.single-post-inner img:first').attr('alt','cover-image'); 140 | var firstImgWidth=$('.single-post-inner img:first').width(); 141 | console.log(firstImgWidth); 142 | /*如果没有自定义 cover-image,使用第一章图片*/ 143 | $('.single-post-inner img:first').attr('alt','cover-image'); 144 | mainImage=$('img[alt="cover-image"]'); 145 | mainImageSource = mainImage.attr('src'); 146 | $('.site-head').css('background-image','url('+mainImageSource+')'); 147 | mainImage.remove(); 148 | 149 | } 150 | 151 | }else{ 152 | /*如果没有图片,则使用默认的*/ 153 | 154 | } 155 | 156 | /*首页最多只显示一张图片 157 | * Display only one image in each post's excerpt 158 | */ 159 | if($('body').is('.home-template'||'.archive-template')){ 160 | $('.post-in-list').each(function(){ 161 | $(this).find('img:gt(0)').css('display','none'); 162 | $(this).find('pre').css('display','none'); 163 | }) 164 | } 165 | 166 | 167 | 168 | /*首页显示简介*/ 169 | 170 | $('.post-excerpt .post-title').each(function(){ 171 | 172 | $(this).hover(function(){ 173 | console.log('出现'); 174 | var _this=$(this); 175 | // _this.removeClass('hidden'); 176 | // targetExcerpet=_this.closest('.post-excerpt').children('.excerpt-word'); 177 | //targetExcerpet.show();//.addClass('animated fadeIn'); 178 | },function(){ 179 | console.log('消失'); 180 | var _this=$(this); 181 | // targetExcerpet=_this.closest('.post-excerpt').children('.excerpt-word'); 182 | // targetExcerpet.removeClass('fadeInDown').addClass('fadeOutUp').hide(); 183 | }) 184 | 185 | }) 186 | 187 | 188 | 189 | $(window).resize(function() { 190 | /*重新修改文章图片大小*/ 191 | visualContainerWidh=$(window).width(); 192 | // contentWidth=$('.post-content').width(); 193 | $('.single-post-inner img').each(function(){ 194 | var _img=$(this); 195 | checkImg(_img); 196 | }) 197 | }); 198 | 199 | 200 | /*顶部向下滚动*/ 201 | 202 | 203 | /*如果没有tag,则默认隐藏*/ 204 | $('.post-meta .post-tags').each(function(){ 205 | var _this=$(this); 206 | if(_this.children().length == 0){ 207 | _this.addClass('hidden'); 208 | } 209 | }) 210 | 211 | // $(document).bind('scroll', fader); 212 | 213 | /*给文章中的url添加iconfont方便识别*/ 214 | function urlIconlize(url){ 215 | var domain, 216 | _output; 217 | var iconMap={/*索引 可在这里添加匹配规则*/ 218 | 'twitter':'icon-twitter', 219 | 'qzone':'icon-qzone', 220 | 'weibo':'icon-weibo', 221 | 'facebook':'icon-facebook', 222 | 'github':'icon-github', 223 | 'douban':'icon-douban', 224 | 'google':'icon-google', 225 | 'luolei':'icon-luolei', 226 | 'dribble':'icon-dribble' 227 | 228 | } 229 | 230 | for(var name in iconMap){ 231 | if(typeof iconMap[name] !== 'function'){ 232 | var MapKey=name; 233 | if(url.indexOf(MapKey)>=0){ 234 | domain=MapKey; 235 | _output=iconMap[MapKey]; 236 | } 237 | } 238 | } 239 | 240 | return _output; 241 | } 242 | 243 | /*判断是否是站内连接*/ 244 | 245 | function isSiteDomain(url){ 246 | 247 | } 248 | 249 | 250 | /*增加搜索功能*/ 251 | 252 | var searchField = $(".search-form-input").ghostHunter({ 253 | results : ".quick-search", 254 | onKeyUp : true, 255 | result_template : "{{title}}", 256 | info_template : "

找到{{amount}}篇相关的文章

", 257 | rss : "/rss", 258 | //displaySearchInfo : false, 259 | zeroResultsInfo : false 260 | }); 261 | 262 | $('.search-form-input').focus(function(){ 263 | $('.search-bar-result').css({'visibility':'visible','opacity':'1'}); 264 | }); 265 | 266 | $('.search-form-input').blur(function(){ 267 | $('.search-bar-result').css({'visibility':'hidden','opacity':'0'}); 268 | }); 269 | 270 | 271 | /*窗口重新变化的时候*/ 272 | 273 | 274 | /*Document Ready*/ 275 | $(document).ready(function(){ 276 | 277 | /*给博客文章地址url添加ico识别*/ 278 | $('.single-post-inner p a:not(:has(img))').each(function(i){ 279 | var _src=$(this).attr('href'); 280 | var tmp=document.createElement('a'); 281 | tmp.href=_src; 282 | _selfDomain=tmp.hostname; 283 | urlIconlize(_selfDomain); 284 | console.log(_selfDomain); 285 | //$(this).append(urlIconlize(_selfDomain)); 286 | $(this).prepend(''); 287 | var _selfColor=$(this).find('i').css('color'), 288 | _originalColor=$(this).css('color'); 289 | 290 | 291 | /*鼠标悬浮时*/ 292 | $(this).hover(function(){ 293 | $(this).css('color',_selfColor); 294 | $(this).addClass('animated pulse'); 295 | },function(){ 296 | $(this).css('color',_originalColor); 297 | $(this).removeClass('animated pulse'); 298 | }); 299 | 300 | }) 301 | 302 | 303 | /*添加一些元素动画*/ 304 | $('.post-cover-info').addClass('animated fadeInDownBig'); 305 | 306 | $('.post-template').ready(function(){ 307 | console.log('文章页面加载完毕'); 308 | //cleanMask(); 309 | //$('.post-header-mask').delay(9000).css('opacity','0'); 310 | }) 311 | 312 | 313 | /*顶部图片视觉滚差*/ 314 | $(window).stellar(); 315 | 316 | /*返回顶部*/ 317 | var STR_TO_TOP='我要飞到最高'; 318 | var coverHeight=$(window).height();//获得图片高度 319 | $('.cover-slide-more').click(function(){ 320 | $('html,body').animate({scrollTop:coverHeight},500); 321 | return false; 322 | }) 323 | $('.cover-slide-more').hover(function(){ 324 | cleanMask(); 325 | $(this).addClass('hoverLight'); 326 | $('.post-cover-info').addClass('animated fadeOutUp'); 327 | $('.cover-slide-more h4').show().addClass('animated fadeInDown'); 328 | },function(){ 329 | console.log('重现'); 330 | $(this).removeClass('hoverLight'); 331 | $('.post-cover-info').removeClass('fadeOutUp'); 332 | $('.post-cover-info').addClass('fadeInDown'); 333 | $('.cover-slide-more h4').hide(); 334 | }); 335 | 336 | $(function(){ 337 | var button = $('').appendTo('body'); 338 | $(window).scroll(function(){ 339 | if($(window).scrollTop()>$(window).height()) button.fadeIn(500); 340 | else button.fadeOut(500); 341 | }); 342 | 343 | button.click(function(e){ 344 | e.preventDefault(); 345 | $('html,body').animate({ 346 | scrollTop:coverHeight-100 347 | },1000,function(){ 348 | window.location.hash='#'; 349 | }); 350 | console.log('我跳'); 351 | }) 352 | }) 353 | 354 | }) 355 | 356 | -------------------------------------------------------------------------------- /assets/js/jquery.stellar.min.js: -------------------------------------------------------------------------------- 1 | /*! Stellar.js v0.6.2 | Copyright 2013, Mark Dalgleish | http://markdalgleish.com/projects/stellar.js | http://markdalgleish.mit-license.org */ 2 | (function(e,t,n,r){function d(t,n){this.element=t,this.options=e.extend({},s,n),this._defaults=s,this._name=i,this.init()}var i="stellar",s={scrollProperty:"scroll",positionProperty:"position",horizontalScrolling:!0,verticalScrolling:!0,horizontalOffset:0,verticalOffset:0,responsive:!1,parallaxBackgrounds:!0,parallaxElements:!0,hideDistantElements:!0,hideElement:function(e){e.hide()},showElement:function(e){e.show()}},o={scroll:{getLeft:function(e){return e.scrollLeft()},setLeft:function(e,t){e.scrollLeft(t)},getTop:function(e){return e.scrollTop()},setTop:function(e,t){e.scrollTop(t)}},position:{getLeft:function(e){return parseInt(e.css("left"),10)*-1},getTop:function(e){return parseInt(e.css("top"),10)*-1}},margin:{getLeft:function(e){return parseInt(e.css("margin-left"),10)*-1},getTop:function(e){return parseInt(e.css("margin-top"),10)*-1}},transform:{getLeft:function(e){var t=getComputedStyle(e[0])[f];return t!=="none"?parseInt(t.match(/(-?[0-9]+)/g)[4],10)*-1:0},getTop:function(e){var t=getComputedStyle(e[0])[f];return t!=="none"?parseInt(t.match(/(-?[0-9]+)/g)[5],10)*-1:0}}},u={position:{setLeft:function(e,t){e.css("left",t)},setTop:function(e,t){e.css("top",t)}},transform:{setPosition:function(e,t,n,r,i){e[0].style[f]="translate3d("+(t-n)+"px, "+(r-i)+"px, 0)"}}},a=function(){var t=/^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/,n=e("script")[0].style,r="",i;for(i in n)if(t.test(i)){r=i.match(t)[0];break}return"WebkitOpacity"in n&&(r="Webkit"),"KhtmlOpacity"in n&&(r="Khtml"),function(e){return r+(r.length>0?e.charAt(0).toUpperCase()+e.slice(1):e)}}(),f=a("transform"),l=e("
",{style:"background:#fff"}).css("background-position-x")!==r,c=l?function(e,t,n){e.css({"background-position-x":t,"background-position-y":n})}:function(e,t,n){e.css("background-position",t+" "+n)},h=l?function(e){return[e.css("background-position-x"),e.css("background-position-y")]}:function(e){return e.css("background-position").split(" ")},p=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)};d.prototype={init:function(){this.options.name=i+"_"+Math.floor(Math.random()*1e9),this._defineElements(),this._defineGetters(),this._defineSetters(),this._handleWindowLoadAndResize(),this._detectViewport(),this.refresh({firstLoad:!0}),this.options.scrollProperty==="scroll"?this._handleScrollEvent():this._startAnimationLoop()},_defineElements:function(){this.element===n.body&&(this.element=t),this.$scrollElement=e(this.element),this.$element=this.element===t?e("body"):this.$scrollElement,this.$viewportElement=this.options.viewportElement!==r?e(this.options.viewportElement):this.$scrollElement[0]===t||this.options.scrollProperty==="scroll"?this.$scrollElement:this.$scrollElement.parent()},_defineGetters:function(){var e=this,t=o[e.options.scrollProperty];this._getScrollLeft=function(){return t.getLeft(e.$scrollElement)},this._getScrollTop=function(){return t.getTop(e.$scrollElement)}},_defineSetters:function(){var t=this,n=o[t.options.scrollProperty],r=u[t.options.positionProperty],i=n.setLeft,s=n.setTop;this._setScrollLeft=typeof i=="function"?function(e){i(t.$scrollElement,e)}:e.noop,this._setScrollTop=typeof s=="function"?function(e){s(t.$scrollElement,e)}:e.noop,this._setPosition=r.setPosition||function(e,n,i,s,o){t.options.horizontalScrolling&&r.setLeft(e,n,i),t.options.verticalScrolling&&r.setTop(e,s,o)}},_handleWindowLoadAndResize:function(){var n=this,r=e(t);n.options.responsive&&r.bind("load."+this.name,function(){n.refresh()}),r.bind("resize."+this.name,function(){n._detectViewport(),n.options.responsive&&n.refresh()})},refresh:function(n){var r=this,i=r._getScrollLeft(),s=r._getScrollTop();(!n||!n.firstLoad)&&this._reset(),this._setScrollLeft(0),this._setScrollTop(0),this._setOffsets(),this._findParticles(),this._findBackgrounds(),n&&n.firstLoad&&/WebKit/.test(navigator.userAgent)&&e(t).load(function(){var e=r._getScrollLeft(),t=r._getScrollTop();r._setScrollLeft(e+1),r._setScrollTop(t+1),r._setScrollLeft(e),r._setScrollTop(t)}),this._setScrollLeft(i),this._setScrollTop(s)},_detectViewport:function(){var e=this.$viewportElement.offset(),t=e!==null&&e!==r;this.viewportWidth=this.$viewportElement.width(),this.viewportHeight=this.$viewportElement.height(),this.viewportOffsetTop=t?e.top:0,this.viewportOffsetLeft=t?e.left:0},_findParticles:function(){var t=this,n=this._getScrollLeft(),i=this._getScrollTop();if(this.particles!==r)for(var s=this.particles.length-1;s>=0;s--)this.particles[s].$element.data("stellar-elementIsActive",r);this.particles=[];if(!this.options.parallaxElements)return;this.$element.find("[data-stellar-ratio]").each(function(n){var i=e(this),s,o,u,a,f,l,c,h,p,d=0,v=0,m=0,g=0;if(!i.data("stellar-elementIsActive"))i.data("stellar-elementIsActive",this);else if(i.data("stellar-elementIsActive")!==this)return;t.options.showElement(i),i.data("stellar-startingLeft")?(i.css("left",i.data("stellar-startingLeft")),i.css("top",i.data("stellar-startingTop"))):(i.data("stellar-startingLeft",i.css("left")),i.data("stellar-startingTop",i.css("top"))),u=i.position().left,a=i.position().top,f=i.css("margin-left")==="auto"?0:parseInt(i.css("margin-left"),10),l=i.css("margin-top")==="auto"?0:parseInt(i.css("margin-top"),10),h=i.offset().left-f,p=i.offset().top-l,i.parents().each(function(){var t=e(this);if(t.data("stellar-offset-parent")===!0)return d=m,v=g,c=t,!1;m+=t.position().left,g+=t.position().top}),s=i.data("stellar-horizontal-offset")!==r?i.data("stellar-horizontal-offset"):c!==r&&c.data("stellar-horizontal-offset")!==r?c.data("stellar-horizontal-offset"):t.horizontalOffset,o=i.data("stellar-vertical-offset")!==r?i.data("stellar-vertical-offset"):c!==r&&c.data("stellar-vertical-offset")!==r?c.data("stellar-vertical-offset"):t.verticalOffset,t.particles.push({$element:i,$offsetParent:c,isFixed:i.css("position")==="fixed",horizontalOffset:s,verticalOffset:o,startingPositionLeft:u,startingPositionTop:a,startingOffsetLeft:h,startingOffsetTop:p,parentOffsetLeft:d,parentOffsetTop:v,stellarRatio:i.data("stellar-ratio")!==r?i.data("stellar-ratio"):1,width:i.outerWidth(!0),height:i.outerHeight(!0),isHidden:!1})})},_findBackgrounds:function(){var t=this,n=this._getScrollLeft(),i=this._getScrollTop(),s;this.backgrounds=[];if(!this.options.parallaxBackgrounds)return;s=this.$element.find("[data-stellar-background-ratio]"),this.$element.data("stellar-background-ratio")&&(s=s.add(this.$element)),s.each(function(){var s=e(this),o=h(s),u,a,f,l,p,d,v,m,g,y=0,b=0,w=0,E=0;if(!s.data("stellar-backgroundIsActive"))s.data("stellar-backgroundIsActive",this);else if(s.data("stellar-backgroundIsActive")!==this)return;s.data("stellar-backgroundStartingLeft")?c(s,s.data("stellar-backgroundStartingLeft"),s.data("stellar-backgroundStartingTop")):(s.data("stellar-backgroundStartingLeft",o[0]),s.data("stellar-backgroundStartingTop",o[1])),p=s.css("margin-left")==="auto"?0:parseInt(s.css("margin-left"),10),d=s.css("margin-top")==="auto"?0:parseInt(s.css("margin-top"),10),v=s.offset().left-p-n,m=s.offset().top-d-i,s.parents().each(function(){var t=e(this);if(t.data("stellar-offset-parent")===!0)return y=w,b=E,g=t,!1;w+=t.position().left,E+=t.position().top}),u=s.data("stellar-horizontal-offset")!==r?s.data("stellar-horizontal-offset"):g!==r&&g.data("stellar-horizontal-offset")!==r?g.data("stellar-horizontal-offset"):t.horizontalOffset,a=s.data("stellar-vertical-offset")!==r?s.data("stellar-vertical-offset"):g!==r&&g.data("stellar-vertical-offset")!==r?g.data("stellar-vertical-offset"):t.verticalOffset,t.backgrounds.push({$element:s,$offsetParent:g,isFixed:s.css("background-attachment")==="fixed",horizontalOffset:u,verticalOffset:a,startingValueLeft:o[0],startingValueTop:o[1],startingBackgroundPositionLeft:isNaN(parseInt(o[0],10))?0:parseInt(o[0],10),startingBackgroundPositionTop:isNaN(parseInt(o[1],10))?0:parseInt(o[1],10),startingPositionLeft:s.position().left,startingPositionTop:s.position().top,startingOffsetLeft:v,startingOffsetTop:m,parentOffsetLeft:y,parentOffsetTop:b,stellarRatio:s.data("stellar-background-ratio")===r?1:s.data("stellar-background-ratio")})})},_reset:function(){var e,t,n,r,i;for(i=this.particles.length-1;i>=0;i--)e=this.particles[i],t=e.$element.data("stellar-startingLeft"),n=e.$element.data("stellar-startingTop"),this._setPosition(e.$element,t,t,n,n),this.options.showElement(e.$element),e.$element.data("stellar-startingLeft",null).data("stellar-elementIsActive",null).data("stellar-backgroundIsActive",null);for(i=this.backgrounds.length-1;i>=0;i--)r=this.backgrounds[i],r.$element.data("stellar-backgroundStartingLeft",null).data("stellar-backgroundStartingTop",null),c(r.$element,r.startingValueLeft,r.startingValueTop)},destroy:function(){this._reset(),this.$scrollElement.unbind("resize."+this.name).unbind("scroll."+this.name),this._animationLoop=e.noop,e(t).unbind("load."+this.name).unbind("resize."+this.name)},_setOffsets:function(){var n=this,r=e(t);r.unbind("resize.horizontal-"+this.name).unbind("resize.vertical-"+this.name),typeof this.options.horizontalOffset=="function"?(this.horizontalOffset=this.options.horizontalOffset(),r.bind("resize.horizontal-"+this.name,function(){n.horizontalOffset=n.options.horizontalOffset()})):this.horizontalOffset=this.options.horizontalOffset,typeof this.options.verticalOffset=="function"?(this.verticalOffset=this.options.verticalOffset(),r.bind("resize.vertical-"+this.name,function(){n.verticalOffset=n.options.verticalOffset()})):this.verticalOffset=this.options.verticalOffset},_repositionElements:function(){var e=this._getScrollLeft(),t=this._getScrollTop(),n,r,i,s,o,u,a,f=!0,l=!0,h,p,d,v,m;if(this.currentScrollLeft===e&&this.currentScrollTop===t&&this.currentWidth===this.viewportWidth&&this.currentHeight===this.viewportHeight)return;this.currentScrollLeft=e,this.currentScrollTop=t,this.currentWidth=this.viewportWidth,this.currentHeight=this.viewportHeight;for(m=this.particles.length-1;m>=0;m--)i=this.particles[m],s=i.isFixed?1:0,this.options.horizontalScrolling?(h=(e+i.horizontalOffset+this.viewportOffsetLeft+i.startingPositionLeft-i.startingOffsetLeft+i.parentOffsetLeft)*-(i.stellarRatio+s-1)+i.startingPositionLeft,d=h-i.startingPositionLeft+i.startingOffsetLeft):(h=i.startingPositionLeft,d=i.startingOffsetLeft),this.options.verticalScrolling?(p=(t+i.verticalOffset+this.viewportOffsetTop+i.startingPositionTop-i.startingOffsetTop+i.parentOffsetTop)*-(i.stellarRatio+s-1)+i.startingPositionTop,v=p-i.startingPositionTop+i.startingOffsetTop):(p=i.startingPositionTop,v=i.startingOffsetTop),this.options.hideDistantElements&&(l=!this.options.horizontalScrolling||d+i.width>(i.isFixed?0:e)&&d<(i.isFixed?0:e)+this.viewportWidth+this.viewportOffsetLeft,f=!this.options.verticalScrolling||v+i.height>(i.isFixed?0:t)&&v<(i.isFixed?0:t)+this.viewportHeight+this.viewportOffsetTop),l&&f?(i.isHidden&&(this.options.showElement(i.$element),i.isHidden=!1),this._setPosition(i.$element,h,i.startingPositionLeft,p,i.startingPositionTop)):i.isHidden||(this.options.hideElement(i.$element),i.isHidden=!0);for(m=this.backgrounds.length-1;m>=0;m--)o=this.backgrounds[m],s=o.isFixed?0:1,u=this.options.horizontalScrolling?(e+o.horizontalOffset-this.viewportOffsetLeft-o.startingOffsetLeft+o.parentOffsetLeft-o.startingBackgroundPositionLeft)*(s-o.stellarRatio)+"px":o.startingValueLeft,a=this.options.verticalScrolling?(t+o.verticalOffset-this.viewportOffsetTop-o.startingOffsetTop+o.parentOffsetTop-o.startingBackgroundPositionTop)*(s-o.stellarRatio)+"px":o.startingValueTop,c(o.$element,u,a)},_handleScrollEvent:function(){var e=this,t=!1,n=function(){e._repositionElements(),t=!1},r=function(){t||(p(n),t=!0)};this.$scrollElement.bind("scroll."+this.name,r),r()},_startAnimationLoop:function(){var e=this;this._animationLoop=function(){p(e._animationLoop),e._repositionElements()},this._animationLoop()}},e.fn[i]=function(t){var n=arguments;if(t===r||typeof t=="object")return this.each(function(){e.data(this,"plugin_"+i)||e.data(this,"plugin_"+i,new d(this,t))});if(typeof t=="string"&&t[0]!=="_"&&t!=="init")return this.each(function(){var r=e.data(this,"plugin_"+i);r instanceof d&&typeof r[t]=="function"&&r[t].apply(r,Array.prototype.slice.call(n,1)),t==="destroy"&&e.data(this,"plugin_"+i,null)})},e[i]=function(n){var r=e(t);return r.stellar.apply(r,Array.prototype.slice.call(arguments,0))},e[i].scrollProperty=o,e[i].positionProperty=u,t.Stellar=d})(jQuery,this,document); 3 | -------------------------------------------------------------------------------- /assets/js/jquery.ghostHunter.min.js: -------------------------------------------------------------------------------- 1 | (function($){var lunr=function(t){var e=new lunr.Index;return e.pipeline.add(lunr.stopWordFilter,lunr.stemmer),t&&t.call(e,e),e};lunr.version="0.4.3","undefined"!=typeof module&&(module.exports=lunr),lunr.utils={},lunr.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),lunr.utils.zeroFillArray=function(){var t=[0];return function(e){for(;e>t.length;)t=t.concat(t);return t.slice(0,e)}}(),lunr.EventEmitter=function(){this.events={}},lunr.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},lunr.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},lunr.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},lunr.EventEmitter.prototype.hasHandler=function(t){return t in this.events},lunr.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(t){return t.toLowerCase()});for(var e=(""+t).replace(/^\s+/,""),n=e.length-1;n>=0;n--)if(/\S/.test(e.charAt(n))){e=e.substring(0,n+1);break}return e.split(/\s+/).map(function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"").toLowerCase()})},lunr.Pipeline=function(){this._stack=[]},lunr.Pipeline.registeredFunctions={},lunr.Pipeline.registerFunction=function(t,e){e in this.registeredFunctions&&lunr.utils.warn("Overwriting existing registered function: "+e),t.label=e,lunr.Pipeline.registeredFunctions[t.label]=t},lunr.Pipeline.warnIfFunctionNotRegistered=function(t){var e=t.label&&t.label in this.registeredFunctions;e||lunr.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},lunr.Pipeline.load=function(t){var e=new lunr.Pipeline;return t.forEach(function(t){var n=lunr.Pipeline.registeredFunctions[t];if(!n)throw Error("Cannot load un-registered function: "+t);e.add(n)}),e},lunr.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){lunr.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},lunr.Pipeline.prototype.after=function(t,e){lunr.Pipeline.warnIfFunctionNotRegistered(e);var n=this._stack.indexOf(t)+1;this._stack.splice(n,0,e)},lunr.Pipeline.prototype.before=function(t,e){lunr.Pipeline.warnIfFunctionNotRegistered(e);var n=this._stack.indexOf(t);this._stack.splice(n,0,e)},lunr.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);this._stack.splice(e,1)},lunr.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,r=this._stack.length,o=0;n>o;o++){for(var i=t[o],s=0;r>s&&(i=this._stack[s](i,o,t),void 0!==i);s++);void 0!==i&&e.push(i)}return e},lunr.Pipeline.prototype.toJSON=function(){return this._stack.map(function(t){return lunr.Pipeline.warnIfFunctionNotRegistered(t),t.label})},lunr.Vector=function(t){this.elements=t},lunr.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var t,e=0,n=this.elements,r=n.length,o=0;r>o;o++)t=n[o],e+=t*t;return this._magnitude=Math.sqrt(e)},lunr.Vector.prototype.dot=function(t){for(var e=this.elements,n=t.elements,r=e.length,o=0,i=0;r>i;i++)o+=e[i]*n[i];return o},lunr.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},lunr.Vector.prototype.toArray=function(){return this.elements},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},lunr.SortedSet.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(t){~this.indexOf(t)||this.elements.splice(this.locationFor(t),0,t)},this),this.length=this.elements.length},lunr.SortedSet.prototype.toArray=function(){return this.elements.slice()},lunr.SortedSet.prototype.map=function(t,e){return this.elements.map(t,e)},lunr.SortedSet.prototype.forEach=function(t,e){return this.elements.forEach(t,e)},lunr.SortedSet.prototype.indexOf=function(t,e,n){var e=e||0,n=n||this.elements.length,r=n-e,o=e+Math.floor(r/2),i=this.elements[o];return 1>=r?i===t?o:-1:t>i?this.indexOf(t,o,n):i>t?this.indexOf(t,e,o):i===t?o:void 0},lunr.SortedSet.prototype.locationFor=function(t,e,n){var e=e||0,n=n||this.elements.length,r=n-e,o=e+Math.floor(r/2),i=this.elements[o];if(1>=r){if(i>t)return o;if(t>i)return o+1}return t>i?this.locationFor(t,o,n):i>t?this.locationFor(t,e,o):void 0},lunr.SortedSet.prototype.intersect=function(t){for(var e=new lunr.SortedSet,n=0,r=0,o=this.length,i=t.length,s=this.elements,l=t.elements;;){if(n>o-1||r>i-1)break;s[n]!==l[r]?s[n]l[r]&&r++:(e.add(s[n]),n++,r++)}return e},lunr.SortedSet.prototype.clone=function(){var t=new lunr.SortedSet;return t.elements=this.toArray(),t.length=t.elements.length,t},lunr.SortedSet.prototype.union=function(t){var e,n,r;return this.length>=t.length?(e=this,n=t):(e=t,n=this),r=e.clone(),r.add.apply(r,n.toArray()),r},lunr.SortedSet.prototype.toJSON=function(){return this.toArray()},lunr.Index=function(){this._fields=[],this._ref="id",this.pipeline=new lunr.Pipeline,this.documentStore=new lunr.Store,this.tokenStore=new lunr.TokenStore,this.corpusTokens=new lunr.SortedSet,this.eventEmitter=new lunr.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},lunr.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},lunr.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},lunr.Index.load=function(t){t.version!==lunr.version&&lunr.utils.warn("version mismatch: current "+lunr.version+" importing "+t.version);var e=new this;return e._fields=t.fields,e._ref=t.ref,e.documentStore=lunr.Store.load(t.documentStore),e.tokenStore=lunr.TokenStore.load(t.tokenStore),e.corpusTokens=lunr.SortedSet.load(t.corpusTokens),e.pipeline=lunr.Pipeline.load(t.pipeline),e},lunr.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},lunr.Index.prototype.ref=function(t){return this._ref=t,this},lunr.Index.prototype.add=function(t,e){var n={},r=new lunr.SortedSet,o=t[this._ref],e=void 0===e?!0:e;this._fields.forEach(function(e){var o=this.pipeline.run(lunr.tokenizer(t[e.name]));n[e.name]=o,lunr.SortedSet.prototype.add.apply(r,o)},this),this.documentStore.set(o,r),lunr.SortedSet.prototype.add.apply(this.corpusTokens,r.toArray());for(var i=0;r.length>i;i++){var s=r.elements[i],l=this._fields.reduce(function(t,e){var r=n[e.name].length;if(!r)return t;var o=n[e.name].filter(function(t){return t===s}).length;return t+o/r*e.boost},0);this.tokenStore.add(s,{ref:o,tf:l})}e&&this.eventEmitter.emit("add",t,this)},lunr.Index.prototype.remove=function(t,e){var n=t[this._ref],e=void 0===e?!0:e;if(this.documentStore.has(n)){var r=this.documentStore.get(n);this.documentStore.remove(n),r.forEach(function(t){this.tokenStore.remove(t,n)},this),e&&this.eventEmitter.emit("remove",t,this)}},lunr.Index.prototype.update=function(t,e){var e=void 0===e?!0:e;this.remove(t,!1),this.add(t,!1),e&&this.eventEmitter.emit("update",t,this)},lunr.Index.prototype.idf=function(t){if(this._idfCache[t])return this._idfCache[t];var e=this.tokenStore.count(t),n=1;return e>0&&(n=1+Math.log(this.tokenStore.length/e)),this._idfCache[t]=n},lunr.Index.prototype.search=function(t){var e=this.pipeline.run(lunr.tokenizer(t)),n=lunr.utils.zeroFillArray(this.corpusTokens.length),r=[],o=this._fields.reduce(function(t,e){return t+e.boost},0),i=e.some(function(t){return this.tokenStore.has(t)},this);if(!i)return[];e.forEach(function(t,e,i){var s=1/i.length*this._fields.length*o,l=this,u=this.tokenStore.expand(t).reduce(function(e,r){var o=l.corpusTokens.indexOf(r),i=l.idf(r),u=1,a=new lunr.SortedSet;if(r!==t){var h=Math.max(3,r.length-t.length);u=1/Math.log(h)}return o>-1&&(n[o]=s*i*u),Object.keys(l.tokenStore.get(r)).forEach(function(t){a.add(t)}),e.union(a)},new lunr.SortedSet);r.push(u)},this);var s=r.reduce(function(t,e){return t.intersect(e)}),l=new lunr.Vector(n);return s.map(function(t){return{ref:t,score:l.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},lunr.Index.prototype.documentVector=function(t){for(var e=this.documentStore.get(t),n=e.length,r=lunr.utils.zeroFillArray(this.corpusTokens.length),o=0;n>o;o++){var i=e.elements[o],s=this.tokenStore.get(i)[t].tf,l=this.idf(i);r[this.corpusTokens.indexOf(i)]=s*l}return new lunr.Vector(r)},lunr.Index.prototype.toJSON=function(){return{version:lunr.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},lunr.Store=function(){this.store={},this.length=0},lunr.Store.load=function(t){var e=new this;return e.length=t.length,e.store=Object.keys(t.store).reduce(function(e,n){return e[n]=lunr.SortedSet.load(t.store[n]),e},{}),e},lunr.Store.prototype.set=function(t,e){this.store[t]=e,this.length=Object.keys(this.store).length},lunr.Store.prototype.get=function(t){return this.store[t]},lunr.Store.prototype.has=function(t){return t in this.store},lunr.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},lunr.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},lunr.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",r="[aeiouy]",o=n+"[^aeiouy]*",i=r+"[aeiou]*",s="^("+o+")?"+i+o,l="^("+o+")?"+i+o+"("+i+")?$",u="^("+o+")?"+i+o+i+o,a="^("+o+")?"+r;return function(n){var i,h,c,p,f,d,v;if(3>n.length)return n;if(c=n.substr(0,1),"y"==c&&(n=c.toUpperCase()+n.substr(1)),p=/^(.+?)(ss|i)es$/,f=/^(.+?)([^s])s$/,p.test(n)?n=n.replace(p,"$1$2"):f.test(n)&&(n=n.replace(f,"$1$2")),p=/^(.+?)eed$/,f=/^(.+?)(ed|ing)$/,p.test(n)){var m=p.exec(n);p=RegExp(s),p.test(m[1])&&(p=/.$/,n=n.replace(p,""))}else if(f.test(n)){var m=f.exec(n);i=m[1],f=RegExp(a),f.test(i)&&(n=i,f=/(at|bl|iz)$/,d=RegExp("([^aeiouylsz])\\1$"),v=RegExp("^"+o+r+"[^aeiouwxy]$"),f.test(n)?n+="e":d.test(n)?(p=/.$/,n=n.replace(p,"")):v.test(n)&&(n+="e"))}if(p=/^(.+?)y$/,p.test(n)){var m=p.exec(n);i=m[1],p=RegExp(a),p.test(i)&&(n=i+"i")}if(p=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,p.test(n)){var m=p.exec(n);i=m[1],h=m[2],p=RegExp(s),p.test(i)&&(n=i+t[h])}if(p=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,p.test(n)){var m=p.exec(n);i=m[1],h=m[2],p=RegExp(s),p.test(i)&&(n=i+e[h])}if(p=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,f=/^(.+?)(s|t)(ion)$/,p.test(n)){var m=p.exec(n);i=m[1],p=RegExp(u),p.test(i)&&(n=i)}else if(f.test(n)){var m=f.exec(n);i=m[1]+m[2],f=RegExp(u),f.test(i)&&(n=i)}if(p=/^(.+?)e$/,p.test(n)){var m=p.exec(n);i=m[1],p=RegExp(u),f=RegExp(l),d=RegExp("^"+o+r+"[^aeiouwxy]$"),(p.test(i)||f.test(i)&&!d.test(i))&&(n=i)}return p=/ll$/,f=RegExp(u),p.test(n)&&f.test(n)&&(p=/.$/,n=n.replace(p,"")),"y"==c&&(n=c.toLowerCase()+n.substr(1)),n}}(),lunr.Pipeline.registerFunction(lunr.stemmer,"stemmer"),lunr.stopWordFilter=function(t){return-1===lunr.stopWordFilter.stopWords.indexOf(t)?t:void 0},lunr.stopWordFilter.stopWords=new lunr.SortedSet,lunr.stopWordFilter.stopWords.length=119,lunr.stopWordFilter.stopWords.elements=["","a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"],lunr.Pipeline.registerFunction(lunr.stopWordFilter,"stopWordFilter"),lunr.TokenStore=function(){this.root={docs:{}},this.length=0},lunr.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},lunr.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,r=t[0],o=t.slice(1);return r in n||(n[r]={docs:{}}),0===o.length?(n[r].docs[e.ref]=e,this.length+=1,void 0):this.add(o,e,n[r])},lunr.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;t.length>n;n++){if(!e[t[n]])return!1;e=e[t[n]]}return!0},lunr.TokenStore.prototype.getNode=function(t){if(!t)return{};for(var e=this.root,n=0;t.length>n;n++){if(!e[t[n]])return{};e=e[t[n]]}return e},lunr.TokenStore.prototype.get=function(t,e){return this.getNode(t,e).docs||{}},lunr.TokenStore.prototype.count=function(t,e){return Object.keys(this.get(t,e)).length},lunr.TokenStore.prototype.remove=function(t,e){if(t){for(var n=this.root,r=0;t.length>r;r++){if(!(t[r]in n))return;n=n[t[r]]}delete n.docs[e]}},lunr.TokenStore.prototype.expand=function(t,e){var n=this.getNode(t),r=n.docs||{},e=e||[];return Object.keys(r).length&&e.push(t),Object.keys(n).forEach(function(n){"docs"!==n&&e.concat(this.expand(t+n,e))},this),e},lunr.TokenStore.prototype.toJSON=function(){return{root:this.root,length:this.length}};$.fn.ghostHunter=function(options){var opts=$.extend({},$.fn.ghostHunter.defaults,options);if(opts.results){pluginMethods.init(this,opts);return pluginMethods}};$.fn.ghostHunter.defaults={results:false,rss:"/rss",onKeyUp:false,result_template:"

{{title}}

{{pubDate}}

",info_template:"

Number of posts found: {{amount}}

",displaySearchInfo:true,zeroResultsInfo:true};var pluginMethods={isInit:false,init:function(target,opts){var that=this;this.target=target;this.rss=opts.rss;this.results=opts.results;this.blogData=[];this.result_template=opts.result_template;this.info_template=opts.info_template;this.zeroResultsInfo=opts.zeroResultsInfo;this.displaySearchInfo=opts.displaySearchInfo;this.index=lunr(function(){this.field("title",{boost:10});this.field("description");this.field("link");this.field("pubDate");this.ref("id")});target.focus(function(){that.loadRSS()});target.closest("form").submit(function(e){e.preventDefault();that.find(target.val())});if(opts.onKeyUp){that.loadRSS();target.keyup(function(){that.find(target.val())})}},loadRSS:function(){if(this.isInit)return false;var index=this.index,rssURL=this.rss,blogData=this.blogData;$.get(rssURL,function(data){var posts=$(data).find("item");for(var i=0;posts&&i0){if(this.displaySearchInfo)results.append(this.format(this.info_template,{amount:searchResult.length}))}for(var i=0;icode[class*='language-'],code[class*='lang-'],pre[class*='language-'],pre[class*='lang-'],pre{ 424 | background: rgba(234,239,242,0.25); 425 | border-left: 6px solid rgba(0,83,159,0.65); 426 | background-image: url(#{$imgPath}/blueprint-dark.png); 427 | background-position: top center; 428 | background-repeat: repeat; 429 | } 430 | 431 | .cover-wrap{ 432 | position:relative; 433 | overflow: hidden; 434 | } 435 | 436 | .site-head{ 437 | position:relative; 438 | width: 100%; 439 | height:100%; 440 | background: url(#{$imgPath}/main.jpg) no-repeat center center; 441 | background-size: cover; 442 | box-shadow: inset 0 -5px 10px rgba(0,0,0,.2); 443 | margin-bottom: 1.5em; 444 | } 445 | 446 | .post-header-mask{ 447 | position:absolute; 448 | top: 0; 449 | left: 0; 450 | right:0; 451 | width: 100%; 452 | height:100%; 453 | background:#000; 454 | opacity:.9; 455 | } 456 | 457 | .regual,.blurred{ 458 | position:absolute; 459 | width: 100%; 460 | -webkit-transform: translate3d(0,0,0); 461 | } 462 | 463 | .regular{ 464 | opacity:1; 465 | } 466 | .blurred{ 467 | opacity:0; 468 | } 469 | 470 | 471 | .post-in-list{ 472 | width: 64%; 473 | max-width: 76rem; 474 | position:relative; 475 | margin:5rem auto; 476 | background:#fff; 477 | //box-shadow:0 1px 3px rgba(255,255,255,.5); 478 | img{ 479 | width: 100%; 480 | max-width: 100%; 481 | height: auto; 482 | } 483 | .post-title{ 484 | white-space: nowrap; 485 | overflow: hidden; 486 | text-overflow: ellipsis; 487 | } 488 | } 489 | 490 | .post-image{ 491 | p{ 492 | line-height: 0; 493 | } 494 | img{ 495 | position:relative; 496 | //-webkit-filter: brightness(100%); 497 | -webkit-transition: all 1s ease; 498 | transition: all 1s ease; 499 | &:hover{ 500 | //-webkit-filter: grayscale(50%); 501 | } 502 | } 503 | } 504 | 505 | .post-meta{ 506 | width: 100%; 507 | text-align: center; 508 | padding: 1rem 0; 509 | font-family: $googleFontExo $fontOSX; 510 | .post-tags{ 511 | margin-top: .5rem; 512 | a{ 513 | color:#fff; 514 | padding: .2rem .5rem; 515 | background: rgba(0,0,0,.4); 516 | &:hover{ 517 | color:#efefef; 518 | background: rgba(0,0,0,.2); 519 | } 520 | } 521 | } 522 | } 523 | .post-time,.post-tags{ 524 | display:block; 525 | height: 2.6rem; 526 | line-height: 2.4rem; 527 | } 528 | .post-time{ 529 | width: 100%; 530 | text-decoration: uppercase; 531 | font-size: 1.8rem; 532 | time{ 533 | width: 14rem; 534 | letter-spacing: .2rem; 535 | margin: 0 auto; 536 | border-bottom: 1px dashed #e3e3e3; 537 | } 538 | } 539 | .post-tags{width: 100%} 540 | 541 | .post-excerpt{ 542 | font-size: 1.8rem; 543 | line-height: 3.2rem; 544 | p{ 545 | margin:0; 546 | padding: 0; 547 | } 548 | } 549 | 550 | .hidden{ 551 | display:none; 552 | } 553 | .excerpt-word{ 554 | padding:3rem 2rem 1rem; 555 | text-align:justify; 556 | font-size:1.8rem; 557 | line-height:2.6rem; 558 | word-break: break-all; 559 | word-break: break-word; 560 | } 561 | 562 | .single-post{ 563 | width: 64%; 564 | max-width: 80rem; 565 | margin: 0 auto; 566 | font-size: 1.8rem; 567 | line-height: 2.8rem; 568 | //overflow: hidden; 569 | img{ 570 | display: block; 571 | margin: 0 auto; 572 | max-width: 100%; 573 | height: auto; 574 | &:hover{ 575 | box-shadow:inset 0 0 1px rgba(255,255,255,0.5) 576 | } 577 | } 578 | 579 | iframe,embed,video{ 580 | max-width: 100%; 581 | } 582 | video{ 583 | display: block; 584 | margin:0 auto; 585 | } 586 | } 587 | 588 | .single-post-inner{ 589 | font-family: $googleFontExo $fontOSX; 590 | word-break: break-all; 591 | word-break: break-word; 592 | a{ 593 | display: inline-block; 594 | line-height: 2.8rem; 595 | &:hover{ 596 | opacity: .8; 597 | } 598 | } 599 | .iconfont{ 600 | font-size: 1.6rem; 601 | vertical-align: top; 602 | margin-left: .1rem; 603 | margin-right: .1rem; 604 | } 605 | p{ 606 | code{ 607 | padding: .3rem .6rem; 608 | border-radius: .5rem; 609 | background: #f8f8f8; 610 | border:1px solid #ddd; 611 | } 612 | } 613 | } 614 | 615 | img.imgWrapOut{ 616 | max-width: 200%; 617 | } 618 | 619 | .post-content a{ 620 | color:#97A5C0; 621 | &:hover{ 622 | 623 | } 624 | } 625 | 626 | .post-content p{ 627 | color:#505255; 628 | margin-top: 2.2rem; 629 | text-align: left; 630 | } 631 | 632 | /* 首页每篇单独文章 */ 633 | 634 | 635 | .post-content blockquote{ 636 | font-size: 1.8rem; 637 | width: 110%; 638 | margin-left: -5%; 639 | text-align:center; 640 | font-style: italic; 641 | color:#9A9A9A; 642 | p{ 643 | text-align: center; 644 | } 645 | &:hover{ 646 | color:#505255; 647 | text-shadow: 0 0 1px #fff; 648 | } 649 | } 650 | 651 | .site-footer{ 652 | position:relative; 653 | background: #f9f9f9; 654 | text-align: center; 655 | color: #8e9798; 656 | margin: 0 auto; 657 | text-transform:uppercase; 658 | font-family:$googleFontExo ; 659 | height:20rem; 660 | margin-top: 5rem; 661 | box-shadow: 0px -4px 7px -7px #171717; 662 | a{ 663 | color:#666665; 664 | } 665 | .inner{ 666 | width: 100%; 667 | margin: 5rem auto; 668 | } 669 | &:before{ 670 | position: absolute; 671 | content: ""; 672 | background: #F9F9F9; 673 | top: -0.5rem; 674 | width: 2rem; 675 | height: 2rem; 676 | -webkit-transform: rotate(45deg); 677 | -moz-transform: rotate(45deg); 678 | -ms-transform: rotate(45deg); 679 | transform: rotate(45deg); 680 | box-shadow: 0px -4px 7px -7px #171717; 681 | } 682 | &:after{ 683 | position: absolute; 684 | content: ""; 685 | background: #F9F9F9; 686 | width: 2.4rem; 687 | height: 2.4rem; 688 | top: 0; 689 | } 690 | } 691 | 692 | .feed-sub{ 693 | visibility: hidden; 694 | position:relative; 695 | width: 10rem; 696 | margin:0 auto; 697 | } 698 | 699 | .icon-feed{ 700 | //font-size: 2.6rem; 701 | } 702 | 703 | .tooltip{ 704 | display:none; 705 | position:absolute; 706 | width: 3rem; 707 | height: 3rem; 708 | display: block; 709 | margin: 0 auto; 710 | 711 | } 712 | 713 | /* 导航栏 */ 714 | .pagination{ 715 | text-align:center; 716 | } 717 | 718 | /* 返回顶部样式 */ 719 | 720 | #to-top { 721 | width: 48px; 722 | height: 48px; 723 | text-align: left; 724 | text-indent: -9999px; 725 | background: transparent url(#{$imgPath}/to-top.png) no-repeat; 726 | overflow: hidden; 727 | position: fixed; 728 | right: 20px; 729 | bottom: 20px; 730 | -khtml-opacity: .5; 731 | -moz-opacity: .5; 732 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; 733 | filter: alpha(opacity=50); 734 | opacity: .5; 735 | z-index: 1000; 736 | } 737 | #to-top:hover { 738 | -khtml-opacity: .2; 739 | -moz-opacity: .2; 740 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; 741 | filter: alpha(opacity=20); 742 | opacity: .2; 743 | } 744 | 745 | 746 | 747 | 748 | .img_sina_share { 749 | display: none; 750 | position: absolute; 751 | cursor: pointer; 752 | } 753 | 754 | 755 | .author{ 756 | border-top: 1px solid #e5e5e5; 757 | border-bottom: 1px solid #e5e5e5; 758 | clear: both; 759 | font-size: 1.4rem; 760 | padding: 1rem; 761 | margin-top: 3rem; 762 | } 763 | 764 | .post-author-avatar{ 765 | float: left; 766 | margin: 24px 40px 20px 0; 767 | overflow: hidden; 768 | } 769 | 770 | .post-author-avatar img{ 771 | width: 80px; 772 | border-radius:50%; 773 | } 774 | 775 | /* 封面按钮 */ 776 | 777 | .cover-slide-more{ 778 | position: absolute; 779 | bottom: 4rem; 780 | left: 48%; 781 | h4{ 782 | display: none; 783 | font-size: 2.4rem; 784 | font-weight: 300; 785 | margin-top: .5rem; 786 | margin-left: -3.8rem; 787 | letter-spacing: .3rem; 788 | color: rgba(255,255,255,.95); 789 | &:hover{ 790 | text-shadow: 0 0 1px rgba(0,0,0,0.5); 791 | } 792 | } 793 | &.hoverLight{ 794 | } 795 | } 796 | 797 | .story-cover-arrow{ 798 | content: ''; 799 | display: block; 800 | width: 2.4rem; 801 | height: 2.4rem; 802 | border: 0.4rem solid rgba(255,255,255,0.5); 803 | background: rgba(0,0,0,0); 804 | border-left: 0; 805 | border-top: 0; 806 | outline: 0; 807 | -webkit-transform: rotate(45deg); 808 | -moz-transform: rotate(45deg); 809 | -ms-transform: rotate(45deg); 810 | transform: rotate(45deg); 811 | cursor: pointer; 812 | &:hover{ 813 | // border: 3px solid rgba(255,255,255,0.65); 814 | // border-left: 0; 815 | // border-top: 0; 816 | } 817 | 818 | 819 | } 820 | 821 | 822 | 823 | /* iconfont相关 */ 824 | .share{ 825 | text-align: center; 826 | width: 100%; 827 | margin:0 auto; 828 | border-top:1px dashed #e5e5e5; 829 | h4{ 830 | letter-spacing: .5rem; 831 | margin-top: 1.5rem; 832 | margin-bottom: 1.5rem; 833 | } 834 | } 835 | 836 | .share a{ 837 | display: block; 838 | float: left; 839 | font-size: 2rem; 840 | line-height: 2.5rem; 841 | margin:0 1rem 0 0; 842 | height: 2.5rem; 843 | i{ 844 | font-size: 3rem; 845 | } 846 | } 847 | 848 | .share-icons{ 849 | text-align: center; 850 | width: 20rem; 851 | height: 3rem; 852 | margin:0 auto; 853 | } 854 | 855 | 856 | 857 | #imgSinaShare{ 858 | display: none; 859 | } 860 | 861 | 862 | -------------------------------------------------------------------------------- /assets/fonts/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Created by FontForge 20120731 at Sun Apr 27 15:35:44 2014 6 | By Ads 7 | 8 | 9 | 10 | 24 | 26 | 28 | 30 | 32 | 36 | 43 | 46 | 49 | 52 | 58 | 62 | 65 | 70 | 79 | 84 | 88 | 92 | 97 | 102 | 107 | 110 | 117 | 120 | 123 | 127 | 129 | 133 | 137 | 144 | 148 | 151 | 158 | 159 | 160 | -------------------------------------------------------------------------------- /assets/css/min.style.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:transparent}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}img::selection{background:transparent}img::-moz-selection{background:transparent}@font-face{font-family:iconfont;src:url(../../assets/fonts/iconfont.eot);src:url(../../assets/fonts/iconfont.eot?#iefix) format("embedded-opentype"),url(../../assets/fonts/iconfont.woff) format("woff"),url(../../assets/fonts/iconfont.ttf) format("truetype"),url(../../assets/fonts/iconfont.svg#uxiconfont) format("svg")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale;display:inline-block;speak:none}.iconfont{vertical-align:middle}.iconfont:hover{opacity:.6;color:#363636}.icon-self{color:red}.icon-weibo{color:#E6162D}.icon-twitter{color:#2aa9e0}.icon-facebook{color:#204385}.icon-google{color:#176DEE}.icon-weixin{color:#75D140}.icon-qzone{color:#186CC6}.icon-github{color:#333}.icon-douban{color:#279337}.icon-luolei{color:#6596C1}.icon-dribble{color:#F72D84}.icon-weibo-pure{color:#E6162D}.icon-twitter-pure{color:#2aa9e0}.icon-github-pure{color:#333}.icon-dribble-pure{color:#F72D84}.icon-weixin-pure{color:#75D140}.icon-instagram-pure{color:#B66F43}.single-post-inner .icon-local:before{content:"\0f00ac"}.single-post-inner .icon-twitter:before{content:"\00e763"}.single-post-inner .icon-qzone:before{content:"\00e60d"}.single-post-inner .icon-weibo:before{content:"\003432"}.single-post-inner .icon-facebook:before{content:"\003433"}.single-post-inner .icon-google:before{content:"\003434"}.single-post-inner .icon-github:before{content:"\0f01ca"}.single-post-inner .icon-douban:before{content:"\0f01c8"}.single-post-inner .icon-luolei:before{content:"\00e60e"}html,body{height:100%;width:100%;min-height:100%;margin:0;padding:0}html{max-height:100%;font-size:62.5%;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body{font-family:ff-tisa-web-pro-1,ff-tisa-web-pro-2,"Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Helvetica Neue",\5FAE\8F6F\96C5\9ED1,Tohoma;font-size:1.4rem;line-height:1.6em;color:#3A4145;min-width:320px}h1,h2,h3,h4,h5,h6{margin:0;padding:0}h6{font-size:1.4rem}h5{font-size:1.6rem}h4{font-size:1.8rem}h3{font-size:2.2rem;line-height:2.6rem}h2{font-size:2.8rem;line-height:4.6rem;margin-bottom:.5rem}h1{font-size:3.2rem;line-height:3.8rem;margin-bottom:.5rem}*,:before,:after{-webkit-transition:color .25s ease,background-color .25s ease,border-color .25s ease,opacity .5s ease;-moz-transition:color .25s ease,background-color .25s ease,border-color .25s ease,opacity .5s ease;-ms-transition:color .25s ease,background-color .25s ease,border-color .25s ease,opacity .5s ease;-o-transition:color .25s ease,background-color .25s ease,border-color .25s ease,opacity .5s ease;transition:color .25s ease,background-color .25s ease,border-color .25s ease,opacity .5s ease}a{text-decoration:none}a:hover{color:#60D9EF;transition:transform .5s ease}.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;font-size:0}.clearfix{zoom:1}.fixed-body-background{background-image:url(../../assets/images/bg2.jpg);position:fixed;top:0;left:0;height:100%;width:100%;background-size:cover;background-repeat:no-repeat;z-index:-2}.top-bar{height:5rem;background:url(../../assets/images/chalkboard.jpg) repeat}.top-wrap{width:70%;max-width:76rem;margin:0 auto}.nav-url{width:40rem;float:left;height:5rem}.nav-url ul{margin:0;padding:0}.nav-url li{list-style-type:none;display:inline-block;float:left;margin-right:3rem}.nav-url li a{display:inline-block;color:#e3e3e3;height:2.4rem;padding:1.3rem 2rem}.nav-url li a:hover{background:rgba(255,255,255,.1)}.search-bar{position:relative;height:5rem;float:right}.search-form-input{margin-top:1rem;color:#fff;background:rgba(255,255,255,.2);height:2rem;line-height:2rem;padding:.5rem 2rem;border-radius:.3rem;border:0;box-shadow:none}.search-bar-result{visibility:hidden;opacity:0;position:absolute;padding:.5rem 1rem;top:5.5rem;border:1px solid #fff;box-shadow:0 0 2px #000;left:0;width:23rem;background:#fff;float:right;z-index:100}.search-bar-result h4{display:block;text-align:center;width:100%;font-size:1.8rem;height:2.6rem;line-height:2.4rem;border-bottom:1px solid #e3e3e3;margin-bottom:.5rem}.quick-search{padding:.5rem 1rem}.searchResult{display:inline-block;font-size:1.4rem;line-height:1.4rem;margin:.3rem 0;color:#171717;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.searchResult:hover{color:#000}.banner{position:relative;width:100%;height:32rem;background:transparent;background-size:cover;box-shadow:0 1px 1px #efefef;z-index:1}.banner-mask{position:absolute;width:100%;height:100%;left:0;top:0;background:#fff;background-image:linear-gradient(to bottom,#fff,#ededed);background-repeat:repeat-x;opacity:.8;z-index:-2}.site-head-content{width:70%;margin:0 auto;padding-top:5rem}.content{margin:0 auto}.home-blog-title{color:rgba(17,17,17,.8);font-size:4.4rem;font-weight:900;line-height:3.4rem;display:block;text-align:center}.home-blog-title:hover{color:rgba(17,17,17,.5);text-shadow:0 1px 3px #fff}.blog-title{text-align:center;line-height:3.2rem;padding-top:3rem;color:#000}.blog-logo{width:16rem;display:block;margin:0 auto;text-align:center}.blog-logo img{margin-top:3rem;width:8.4rem;border-radius:50%;box-shadow:0 0 3px #efefef}.blog-description{margin-top:2rem;font-weight:100;text-align:center;font-family:Exo ff-tisa-web-pro-1,ff-tisa-web-pro-2,"Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3"}.blog-description:hover{text-shadow:0 0 1px #000}.social-account{text-align:center;padding:0 2rem}.social-account ul{margin:0;padding:0}.social-account ul li{list-style:none;display:inline-block}.social-account ul li a{font-size:3.2rem;margin:0 .3rem}.social-account .iconfont{font-size:1.8rem;line-height:1.8rem;color:rgba(17,17,17,.5)}.social-account .icon-feed{font-size:1.4rem}.social-account .icon-feed:hover{color:#F60}.social-account .icon-weibo-pure:hover{color:#E6162D}.social-account .icon-twitter-pure:hover{color:#2aa9e0}.social-account .icon-github-pure:hover{color:#333}.social-account .icon-dribble-pure:hover{color:#F72D84}.social-account .icon-weixin-pure:hover{color:#75D140}.social-account .icon-instagram-pure:hover{color:#B66F43}.post-cover-info{width:75%;height:20rem;text-align:center;color:rgba(255,255,255,.5);color:#fff;position:absolute;left:0;top:0;right:0;bottom:0;margin:auto}.post-title{width:100%;line-height:3.2rem;padding-top:1rem;text-align:center;font-family:Exo ff-tisa-web-pro-1,ff-tisa-web-pro-2,"Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3"}.post-title a{color:rgba(0,0,0,.7);font-weight:600;line-height:2.4rem;font-size:2.4rem;letter-spacing:.2rem}.post-cover-info .post-title{color:#fff;font-family:ff-tisa-web-pro-1,ff-tisa-web-pro-2,"Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3"}.post-cover-info .post-title a{font-size:4rem;color:#fff;line-height:4.8rem;text-shadow:0 1px 5px #d3d3d3;-webkit-transition:all .5s ease;transition:transform .5s ease}.post-cover-info .post-title a:hover{text-shadow:0 1px 5px #efefef}.post-publish-time{text-transform:uppercase;font-family:Exo;-webkit-transition:all .5s ease;margin-top:2rem;font-size:2.4rem}.post-publish-time:hover{color:rgba(255,255,255,.5);transition:transform .5s ease}.post-tags{margin-top:2rem}.post-tags a{color:#efefef;font-size:1.4rem;line-height:1.4rem;padding:.2rem .5rem;border-radius:3px;background:rgba(0,0,0,.2)}.post-tags a:hover{background:rgba(0,0,0,.5)}.pagination{color:#fff;margin:0 auto;margin-bottom:3rem;width:70%;font-family:Exo ff-tisa-web-pro-1,ff-tisa-web-pro-2,"Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3"}.pagination a{border-radius:.3rem;display:inline-block;text-align:center;color:#fff;background:rgba(255,255,255,.5);height:2.4rem;line-height:2.4rem;padding:.3rem .8rem}.pagination a:hover{color:#fff;background:rgba(0,0,0,.5)}.page-number{display:inline-block;padding:0 1rem}code[class*=language-],pre[class*=language-],code[class*=lang-],pre[class*=lang-],code{color:inherit;text-shadow:none}:not(pre)>code[class*=language-],code[class*=lang-],pre[class*=language-],pre[class*=lang-],pre{background:rgba(234,239,242,.25);border-left:6px solid rgba(0,83,159,.65);background-image:url(../../assets/images/blueprint-dark.png);background-position:top center;background-repeat:repeat}.cover-wrap{position:relative;overflow:hidden}.site-head{position:relative;width:100%;height:100%;background:url(../../assets/images/main.jpg) no-repeat center center;background-size:cover;box-shadow:inset 0 -5px 10px rgba(0,0,0,.2);margin-bottom:1.5em}.post-header-mask{position:absolute;top:0;left:0;right:0;width:100%;height:100%;background:#000;opacity:.9}.regual,.blurred{position:absolute;width:100%;-webkit-transform:translate3d(0,0,0)}.regular{opacity:1}.blurred{opacity:0}.post-in-list{width:64%;max-width:76rem;position:relative;margin:5rem auto;background:#fff}.post-in-list img{width:100%;max-width:100%;height:auto}.post-in-list .post-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.post-image p{line-height:0}.post-image img{position:relative;-webkit-transition:all 1s ease;transition:all 1s ease}.post-meta{width:100%;text-align:center;padding:1rem 0;font-family:Exo ff-tisa-web-pro-1,ff-tisa-web-pro-2,"Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3"}.post-meta .post-tags{margin-top:.5rem}.post-meta .post-tags a{color:#fff;padding:.2rem .5rem;background:rgba(0,0,0,.4)}.post-meta .post-tags a:hover{color:#efefef;background:rgba(0,0,0,.2)}.post-time,.post-tags{display:block;height:2.6rem;line-height:2.4rem}.post-time{width:100%;text-decoration:uppercase;font-size:1.8rem}.post-time time{width:14rem;letter-spacing:.2rem;margin:0 auto;border-bottom:1px dashed #e3e3e3}.post-tags{width:100%}.post-excerpt{font-size:1.8rem;line-height:3.2rem}.post-excerpt p{margin:0;padding:0}.hidden{display:none}.excerpt-word{padding:3rem 2rem 1rem;text-align:justify;font-size:1.8rem;line-height:2.6rem;word-break:break-all;word-break:break-word}.single-post{width:64%;max-width:80rem;margin:0 auto;font-size:1.8rem;line-height:2.8rem}.single-post img{display:block;margin:0 auto;max-width:100%;height:auto}.single-post img:hover{box-shadow:inset 0 0 1px rgba(255,255,255,.5)}.single-post iframe,.single-post embed,.single-post video{max-width:100%}.single-post video{display:block;margin:0 auto}.single-post-inner{font-family:Exo ff-tisa-web-pro-1,ff-tisa-web-pro-2,"Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3";word-break:break-all;word-break:break-word}.single-post-inner a{display:inline-block;line-height:2.8rem}.single-post-inner a:hover{opacity:.8}.single-post-inner .iconfont{font-size:1.6rem;vertical-align:top;margin-left:.1rem;margin-right:.1rem}.single-post-inner p code{padding:.3rem .6rem;border-radius:.5rem;background:#f8f8f8;border:1px solid #ddd}img.imgWrapOut{max-width:200%}.post-content a{color:#97A5C0}.post-content p{color:#505255;margin-top:2.2rem;text-align:left}.post-content blockquote{font-size:1.8rem;width:110%;margin-left:-5%;text-align:center;font-style:italic;color:#9A9A9A}.post-content blockquote p{text-align:center}.post-content blockquote:hover{color:#505255;text-shadow:0 0 1px #fff}.site-footer{position:relative;background:#f9f9f9;text-align:center;color:#8e9798;margin:0 auto;text-transform:uppercase;font-family:Exo;height:20rem;margin-top:5rem;box-shadow:0 -4px 7px -7px #171717}.site-footer a{color:#666665}.site-footer .inner{width:100%;margin:5rem auto}.site-footer:before{position:absolute;content:"";background:#F9F9F9;top:-.5rem;width:2rem;height:2rem;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);box-shadow:0 -4px 7px -7px #171717}.site-footer:after{position:absolute;content:"";background:#F9F9F9;width:2.4rem;height:2.4rem;top:0}.feed-sub{visibility:hidden;position:relative;width:10rem;margin:0 auto}.tooltip{display:none;position:absolute;width:3rem;height:3rem;display:block;margin:0 auto}.pagination{text-align:center}#to-top{width:48px;height:48px;text-align:left;text-indent:-9999px;background:transparent url(../../assets/images/to-top.png) no-repeat;overflow:hidden;position:fixed;right:20px;bottom:20px;-khtml-opacity:.5;-moz-opacity:.5;-ms-filter:"alpha(Opacity=50)";filter:alpha(opacity=50);opacity:.5;z-index:1000}#to-top:hover{-khtml-opacity:.2;-moz-opacity:.2;-ms-filter:"alpha(Opacity=20)";filter:alpha(opacity=20);opacity:.2}.img_sina_share{display:none;position:absolute;cursor:pointer}.author{border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5;clear:both;font-size:1.4rem;padding:1rem;margin-top:3rem}.post-author-avatar{float:left;margin:24px 40px 20px 0;overflow:hidden}.post-author-avatar img{width:80px;border-radius:50%}.cover-slide-more{position:absolute;bottom:4rem;left:48%}.cover-slide-more h4{display:none;font-size:2.4rem;font-weight:300;margin-top:.5rem;margin-left:-3.8rem;letter-spacing:.3rem;color:rgba(255,255,255,.95)}.cover-slide-more h4:hover{text-shadow:0 0 1px rgba(0,0,0,.5)}.story-cover-arrow{content:'';display:block;width:2.4rem;height:2.4rem;border:.4rem solid rgba(255,255,255,.5);background:transparent;border-left:0;border-top:0;outline:0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);cursor:pointer}.share{text-align:center;width:100%;margin:0 auto;border-top:1px dashed #e5e5e5}.share h4{letter-spacing:.5rem;margin-top:1.5rem;margin-bottom:1.5rem}.share a{display:block;float:left;font-size:2rem;line-height:2.5rem;margin:0 1rem 0 0;height:2.5rem}.share a i{font-size:3rem}.share-icons{text-align:center;width:20rem;height:3rem;margin:0 auto}#imgSinaShare{display:none}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,20%,50%,80%,100%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);transform:translateY(-15px)}}@keyframes bounce{0%,20%,50%,80%,100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);-ms-transform:translateY(-15px);transform:translateY(-15px)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce}@-webkit-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.1);transform:scale(1.1)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale(1);transform:scale(1)}30%{-webkit-transform:scaleX(1.25) scaleY(0.75);transform:scaleX(1.25) scaleY(0.75)}40%{-webkit-transform:scaleX(0.75) scaleY(1.25);transform:scaleX(0.75) scaleY(1.25)}60%{-webkit-transform:scaleX(1.15) scaleY(0.85);transform:scaleX(1.15) scaleY(0.85)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes rubberBand{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}30%{-webkit-transform:scaleX(1.25) scaleY(0.75);-ms-transform:scaleX(1.25) scaleY(0.75);transform:scaleX(1.25) scaleY(0.75)}40%{-webkit-transform:scaleX(0.75) scaleY(1.25);-ms-transform:scaleX(0.75) scaleY(1.25);transform:scaleX(0.75) scaleY(1.25)}60%{-webkit-transform:scaleX(1.15) scaleY(0.85);-ms-transform:scaleX(1.15) scaleY(0.85);transform:scaleX(1.15) scaleY(0.85)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}100%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);-ms-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);-ms-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);-ms-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);-ms-transform:rotate(-5deg);transform:rotate(-5deg)}100%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg);transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@keyframes tada{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg);-ms-transform:scale(0.9) rotate(-3deg);transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);-ms-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);-ms-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);-ms-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateX(0%);transform:translateX(0%)}15%{-webkit-transform:translateX(-25%) rotate(-5deg);transform:translateX(-25%) rotate(-5deg)}30%{-webkit-transform:translateX(20%) rotate(3deg);transform:translateX(20%) rotate(3deg)}45%{-webkit-transform:translateX(-15%) rotate(-3deg);transform:translateX(-15%) rotate(-3deg)}60%{-webkit-transform:translateX(10%) rotate(2deg);transform:translateX(10%) rotate(2deg)}75%{-webkit-transform:translateX(-5%) rotate(-1deg);transform:translateX(-5%) rotate(-1deg)}100%{-webkit-transform:translateX(0%);transform:translateX(0%)}}@keyframes wobble{0%{-webkit-transform:translateX(0%);-ms-transform:translateX(0%);transform:translateX(0%)}15%{-webkit-transform:translateX(-25%) rotate(-5deg);-ms-transform:translateX(-25%) rotate(-5deg);transform:translateX(-25%) rotate(-5deg)}30%{-webkit-transform:translateX(20%) rotate(3deg);-ms-transform:translateX(20%) rotate(3deg);transform:translateX(20%) rotate(3deg)}45%{-webkit-transform:translateX(-15%) rotate(-3deg);-ms-transform:translateX(-15%) rotate(-3deg);transform:translateX(-15%) rotate(-3deg)}60%{-webkit-transform:translateX(10%) rotate(2deg);-ms-transform:translateX(10%) rotate(2deg);transform:translateX(10%) rotate(2deg)}75%{-webkit-transform:translateX(-5%) rotate(-1deg);-ms-transform:translateX(-5%) rotate(-1deg);transform:translateX(-5%) rotate(-1deg)}100%{-webkit-transform:translateX(0%);-ms-transform:translateX(0%);transform:translateX(0%)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(0.3);transform:scale(0.3)}50%{opacity:1;-webkit-transform:scale(1.05);transform:scale(1.05)}70%{-webkit-transform:scale(0.9);transform:scale(0.9)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(0.3);-ms-transform:scale(0.3);transform:scale(0.3)}50%{opacity:1;-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}70%{-webkit-transform:scale(0.9);-ms-transform:scale(0.9);transform:scale(0.9)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}60%{opacity:1;-webkit-transform:translateY(30px);transform:translateY(30px)}80%{-webkit-transform:translateY(-10px);transform:translateY(-10px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes bounceInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}60%{opacity:1;-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}80%{-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}60%{opacity:1;-webkit-transform:translateX(30px);transform:translateX(30px)}80%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes bounceInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}60%{opacity:1;-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}80%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}60%{opacity:1;-webkit-transform:translateX(-30px);transform:translateX(-30px)}80%{-webkit-transform:translateX(10px);transform:translateX(10px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes bounceInRight{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}60%{opacity:1;-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}60%{opacity:1;-webkit-transform:translateY(-30px);transform:translateY(-30px)}80%{-webkit-transform:translateY(10px);transform:translateY(10px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes bounceInUp{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}60%{opacity:1;-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}80%{-webkit-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{0%{-webkit-transform:scale(1);transform:scale(1)}25%{-webkit-transform:scale(0.95);transform:scale(0.95)}50%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(0.3);transform:scale(0.3)}}@keyframes bounceOut{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}25%{-webkit-transform:scale(0.95);-ms-transform:scale(0.95);transform:scale(0.95)}50%{opacity:1;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(0.3);-ms-transform:scale(0.3);transform:scale(0.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes bounceOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px);transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes bounceOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes bounceOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px);transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes bounceOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes fadeOutDownBig{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}}@keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes fadeOutLeftBig{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}}@keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes fadeOutRightBig{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}}@keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes fadeOutUpBig{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-ms-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-ms-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-ms-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);-ms-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-ms-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);-ms-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg);-ms-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);-ms-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0deg);-ms-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg);transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);-ms-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg);-ms-transform:perspective(400px) rotateY(-10deg);transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg);-ms-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0deg);-ms-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px) rotateX(0deg);-ms-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);-ms-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px) rotateY(0deg);-ms-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);-ms-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%) skewX(30deg);transform:translateX(-20%) skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0%) skewX(-15deg);transform:translateX(0%) skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translateX(100%) skewX(-30deg);-ms-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%) skewX(30deg);-ms-transform:translateX(-20%) skewX(30deg);transform:translateX(-20%) skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0%) skewX(-15deg);-ms-transform:translateX(0%) skewX(-15deg);transform:translateX(0%) skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0%) skewX(0deg);-ms-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{-webkit-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}100%{-webkit-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}}@keyframes lightSpeedOut{0%{-webkit-transform:translateX(0%) skewX(0deg);-ms-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}100%{-webkit-transform:translateX(100%) skewX(-30deg);-ms-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}100%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(-200deg);-ms-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}100%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(200deg);-ms-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes slideOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes slideOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes slideOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}@-webkit-keyframes slideInUp{0%{-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInUp{0%{-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:0;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes slideOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes hinge{0%{-webkit-transform:rotate(0);transform:rotate(0);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}80%{-webkit-transform:rotate(60deg) translateY(0);transform:rotate(60deg) translateY(0);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translateY(700px);transform:translateY(700px);opacity:0}}@keyframes hinge{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);-ms-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}80%{-webkit-transform:rotate(60deg) translateY(0);-ms-transform:rotate(60deg) translateY(0);transform:rotate(60deg) translateY(0);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translateY(700px);-ms-transform:translateY(700px);transform:translateY(700px);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}100%{opacity:0;-webkit-transform:translateX(100%) rotate(120deg);transform:translateX(100%) rotate(120deg)}}@keyframes rollOut{0%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}100%{opacity:0;-webkit-transform:translateX(100%) rotate(120deg);-ms-transform:translateX(100%) rotate(120deg);transform:translateX(100%) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@media only screen and (max-width:321px){.post-in-list{width:95%}.post-cover-info{font-size:3rem;width:80%}.post-cover-info .post-title{line-height:3rem}.post-cover-info .post-title a{font-size:3rem}.post-publish-time{font-size:1.4rem}}@media only screen and (max-width:481px){.single-post{width:80%}.home-blog-title{font-size:2.4rem}.post-cover-info{font-size:3rem;width:80%}.post-cover-info .post-title{line-height:3rem}.post-cover-info .post-title a{font-size:3rem}.nav-url{width:100%}.nav-url li{margin-right:.5rem}.post-in-list{width:95%}.search-bar{display:none}.pagination{width:90%}.cover-slide-more{left:45%}}@media only screen and (max-width:768px){.post-in-list{width:95%;margin:2rem auto}.search-bar{display:none}.post-cover-info .post-title a{font-size:2.2rem;line-height:2.8rem}}@media only screen and (min-width:1240px){.post-cover-info{font-size:5rem;width:80%}.post-cover-info .post-title{line-height:5rem}.post-cover-info .post-title a{font-size:5rem}}@media print{*{background:transparent!important;color:#000!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{color:#444!important;text-decoration:underline}a:after,a:visited:after{content:" (" attr(href) ")"}a abbr[title]:after,a:visited abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.sidebar,.page-navigation,.wp-prev-next,.respond-form,nav{display:none}} --------------------------------------------------------------------------------