├── .gitignore ├── LICENSE ├── README.md ├── assets ├── css │ ├── animate.css │ ├── dev.min.css │ ├── prism.css │ └── style.min.css ├── fonts │ ├── demo.html │ ├── iconfont.css │ ├── iconfont.eot │ ├── iconfont.svg │ ├── iconfont.ttf │ └── iconfont.woff ├── images │ ├── apple-touch-icon-iphone.png │ ├── banner2.jpg │ ├── bg-mask.png │ ├── cream_pixels.png │ ├── escheresque_ste.png │ ├── favicon.ico │ ├── favicon.png │ ├── p5.png │ ├── stardust.png │ ├── touch-icon-iphone-retina.png │ └── triangular.png └── js │ ├── all.min.js │ ├── jquery.fitvids.js │ └── prism.js ├── author.hbs ├── css ├── animate.css ├── ds.css ├── reset.css ├── sass │ ├── _1024up.scss │ ├── _1240up.scss │ ├── _321up.scss │ ├── _361up.scss │ ├── _481up.scss │ ├── _768up.scss │ ├── _base.scss │ ├── _fonts.scss │ ├── _mixins.scss │ ├── _normalize.scss │ ├── _print.scss │ ├── _sprite.scss │ └── style.scss └── style.css ├── default.hbs ├── gulpfile.js ├── human.txt ├── index.hbs ├── js └── base.js ├── package.json ├── page.hbs ├── partials └── loop.hbs ├── post.hbs └── tag.hbs /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # Compiled binary addons (http://nodejs.org/api/addons.html) 20 | build/Release 21 | 22 | # Dependency directory 23 | # Commenting this out is preferred by some people, see 24 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- 25 | node_modules 26 | 27 | # Users Environment Variables 28 | .lock-wscript 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Luo Lei 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nevecoo 2 | 3 | ![cover](https://luoleiorg.b0.upaiyun.com/blog/2015/02/https-ssl.jpg) 4 | 5 | Nevecoo 是一款Ghost主题 6 | 7 | 8 | #使用前必读!!!!! 9 | 10 | **使用这个主题的朋友,请务必修改自定义配置** 11 | 12 | 相信用Ghost的朋友都有一定的基础,请务必注意相关配置。 13 | 14 | 15 | 16 | ####需自定义的配置 17 | 18 | 1. `post.hbs`中的多说配置 19 | 2. `default.hbs`顶部百度统计代码 20 | 3. `default.hbs`底部GA统计代码 21 | 4. `default.hbs` 顶部 谷歌Plus ` `请修改成自己的GP地址(谷歌搜索的时候会显示作者信息) 22 | 5. 微信浏览器中增加适配,滑动到底部的时候,自动弹出公众号图片,若不需要,请删除`js/base.js`中相关代码。例`General.isweixin == true `。 23 | 24 | 25 | ####新主题 26 | 27 | [《「辞旧迎新」新主题,更安全的罗磊独立博客》](https://luolei.org/theme-nevecoo/) 28 | 29 | 30 | Github地址:[Nevecoo](https://github.com/foru17/nevecoo). 31 | 32 | 博客主题一直用的去年原创的[Ghostwill](https://luolei.org/theme-ghostwill/),感觉十分粗糙,代码也写得糟糕。 33 | 34 | 这次新的主题名为[Nevecoo](https://github.com/foru17/nevecoo),名字没啥特别意思,从0到1,自己设计、重构,也算是小练手一番。 35 | 36 | ![](https://luoleiorg.b0.upaiyun.com/blog/2015/02/nevecoo6.jpg) 37 | 38 | 主题采用的Sketch制作原型和设计。 39 | 40 | ![](https://luoleiorg.b0.upaiyun.com/blog/2015/02/nevecoo1.jpg) 41 | 42 | 简约和大Banner的设计。 43 | 44 | ![](https://luoleiorg.b0.upaiyun.com/blog/2015/02/nevecoo2.jpg) 45 | 46 | 优化阅读体验,更加关注于内容,删除了干扰用户阅读的多余元素。 47 | 48 | ![](https://luoleiorg.b0.upaiyun.com/blog/2015/02/nevecoo3.jpg) 49 | 50 | 优化了在手机和平板上的阅读体验,现在越来越多的朋友使用移动设备阅读,给他们提供好的体验是前端开发者的责任。 51 | 52 | ![](https://luoleiorg.b0.upaiyun.com/blog/2015/02/nevecoo4.jpg) 53 | 54 | 支持primejs,方便在文章中高亮不同的代码。 55 | 56 | 现在Nevecoo 版本号还是0.0.3,在Github上开源,年后将继续优化交互细节,优化前端性能。 57 | 58 | 59 | ####TO-DO 60 | 61 | - [ ] 代码结构重新组织 62 | - [ ] 顶部Nav 63 | - [ ] gulpfile重新配置 64 | - [ ] 视频的适配 65 | - [ ] ReactJS清凉版 66 | 67 | ####更新 68 | * 2015.9.4 : 版本0.0.3 增加Tag页面,修正交互细节,修正移动设备上的动画效果,增加多说data-title。 69 | * 2015.4.6 : 版本0.0.2 增加返回首页按钮,重新组织JS代码,jquery.s使用CDN,增加微信浏览器中的提示。 70 | -------------------------------------------------------------------------------- /assets/css/animate.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /*! 3 | Animate.css - http://daneden.me/animate 4 | Licensed under the MIT license - http://opensource.org/licenses/MIT 5 | 6 | Copyright (c) 2014 Daniel Eden 7 | */ 8 | 9 | .animated { 10 | -webkit-animation-duration: 1s; 11 | animation-duration: 1s; 12 | -webkit-animation-fill-mode: both; 13 | animation-fill-mode: both; 14 | } 15 | 16 | .animated.infinite { 17 | -webkit-animation-iteration-count: infinite; 18 | animation-iteration-count: infinite; 19 | } 20 | 21 | .animated.hinge { 22 | -webkit-animation-duration: 2s; 23 | animation-duration: 2s; 24 | } 25 | 26 | 27 | @-webkit-keyframes fadeInUpBig { 28 | 0% { 29 | opacity: 0; 30 | -webkit-transform: translate3d(0, 2000px, 0); 31 | transform: translate3d(0, 2000px, 0); 32 | } 33 | 34 | 100% { 35 | opacity: 1; 36 | -webkit-transform: none; 37 | transform: none; 38 | } 39 | } 40 | 41 | @keyframes fadeInUpBig { 42 | 0% { 43 | opacity: 0; 44 | -webkit-transform: translate3d(0, 2000px, 0); 45 | transform: translate3d(0, 2000px, 0); 46 | } 47 | 48 | 100% { 49 | opacity: 1; 50 | -webkit-transform: none; 51 | transform: none; 52 | } 53 | } 54 | 55 | .fadeInUpBig { 56 | -webkit-animation-name: fadeInUpBig; 57 | animation-name: fadeInUpBig; 58 | } 59 | 60 | 61 | 62 | 63 | @-webkit-keyframes fadeOut { 64 | 0% {opacity: 1;} 65 | 100% {opacity: 0;} 66 | } 67 | 68 | @keyframes fadeOut { 69 | 0% {opacity: 1;} 70 | 100% {opacity: 0;} 71 | } 72 | 73 | .fadeOut { 74 | -webkit-animation-name: fadeOut; 75 | animation-name: fadeOut; 76 | } 77 | -------------------------------------------------------------------------------- /assets/css/dev.min.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";/*! normalize.css v3.0.3 | MIT License | git.io/normalize */img,legend{border:0}.iconfont,html{-webkit-font-smoothing:antialiased}.arrow_down a,.banner-mask:after{-webkit-animation-timing-function:linear;-webkit-animation-iteration-count:infinite}#header,.pagination,.pagination a,.site-footer{text-align:center}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent;text-decoration:none}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}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}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}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}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{padding:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@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:1pc;font-style:normal;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale;display:inline-block;speak:none;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}.site-footer,.site-footer a{color:#666665}.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"}@font-face{font-family:Exo;font-style:normal;font-weight:100;src:local('Exo Thin'),local('Exo-Thin'),url(https://luoleiorg.b0.upaiyun.com/source/fonts/exo/ek6B72kladJz_Z6o5PEplKCWcynf_cDxXwCLxiixG1c.woff) format('woff')}@font-face{font-family:Exo;font-style:normal;font-weight:400;src:local('Exo Regular'),local('Exo-Regular'),url(https://luoleiorg.b0.upaiyun.com/source/fonts/exo/ZcGd2dvMSgl3mHN3lKAjNw.woff) format('woff')}body,html{width:100%;min-height:100%;height:100%;margin:0;padding:0}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;max-height:100%;font-size:62.5%;-webkit-tap-highlight-color:transparent;background-image:url(../../assets/images/p5.png);font-family:Exo 'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif sans-serif}.post-title,.site-footer,.site-footer a{font-family:Exo,sans-serif}h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2{margin-bottom:.5rem}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}h1{font-size:3.2rem;line-height:3.8rem}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.hide{display:none}#footer,#header{display:table;position:relative;width:100%}#header{height:60%;max-height:52rem;padding:24px 0;box-sizing:border-box;z-index:0}#footer{margin-top:12rem;height:30rem;z-index:1}.site-footer{position:relative;margin:8rem 0 0;height:10rem;padding:.5rem 15px;border-top:#EBF2F6 1px solid;font-weight:lighter;font-size:1.4rem;line-height:1.75em}.site-footer a:hover{color:#50585D}.post-template .site-footer{margin-top:13rem}.home-header{background:url(../../assets/images/banner2.jpg)}.blog-background{background-repeat:no-repeat;background-position:center;-webkit-background-size:cover;background-size:cover}.banner-mask:after{content:"";position:absolute;width:100%;height:100%;top:0;left:0;z-index:-1;background:url(../../assets/images/escheresque_ste.png);opacity:.25;background-color:rgba(0,0,0,.05);transition:background-color .5s ease-out 2s;-webkit-animation-name:animate-bg;-webkit-animation-duration:20s}.arrow_down,.arrow_down a{position:absolute;left:50%}.arrow_down{display:none;bottom:5rem;height:2rem}.arrow_down a{z-index:4;display:block;-webkit-transform:rotate(315deg);transform:rotate(315deg);margin-left:-1.3rem;width:2.8rem;height:2.8rem;border-left:.1rem solid #fff;border-bottom:.1rem solid #fff;-webkit-animation-name:shine;-webkit-animation-duration:1.5s;animation-iteration-count:infinite}.archive-template #main,.home-template #main,.tag-template #main{margin:2rem auto}.archive-template .arrow_down{display:none}#main{position:relative;z-index:1;width:74%;max-width:76.8rem;margin:-8rem auto}.post-in-list{position:relative;margin-bottom:2rem;overflow:hidden;min-height:10rem;-webkit-transform:translate3d(0,0,0)}.decor,.info-mask{position:absolute;width:100%}.post-in-list a{color:#fff}.post-in-list p{margin:0}.post-in-list .post-excerpt img{display:block;width:100%;min-height:20rem;height:auto}.info-mask{bottom:0;height:10rem;background:linear-gradient(transparent,#111)}.mask-wrapper{padding-left:1rem}.post-title{color:#fff;font-size:3.2rem;margin:1.2rem 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.post-title a{font-family:Exo 'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif,sans-serif;text-shadow:1px 1px 1px #333,0 0 0 #333,1px 1px 1px #fff}.post-meta span{display:inline-block;color:#fff;font-size:1.6rem}.page-number,.pagination a,.post-tags a{font-size:1.4rem;display:inline-block}.post-tags{margin-left:.5rem}.post-tags a{line-height:1.6rem;margin-left:.6rem;padding:0 1rem;background:rgba(255,255,255,.3);border-radius:.3rem}.post-tags a:hover{background:rgba(255,255,255,.2)}#footer .svg-wrapper{bottom:auto;top:0}.decor{left:0;height:100%;z-index:2;bottom:-1px}#footer .decor{top:-1px}.pagination{color:#999;margin:0 auto 3rem;width:70%}.pagination a{font-family:Exo 'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif;border-radius:.3rem;color:#fff;background:rgba(0,0,0,.5);height:2.4rem;line-height:2.4rem;padding:.3rem .8rem}.pagination a:hover{background:rgba(0,0,0,.2)}.page-number{padding:0 1rem}.post{background:#fff}.single-post-inner{font-size:1.8rem;padding:0 2.8% 1.6rem;overflow:hidden;border-bottom:1px dashed #e5e5e5;font-family:Exo,'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif}.single-post-inner img{display:block;margin:0 auto;max-width:100%;height:auto}.single-post-inner img.full-img{max-width:none;width:106%;margin:0 -3%;-webkit-transition:width .5s linear;transition:width .5s linear}.single-post-inner a{color:#54B5DB;padding:0 .5rem;font-family:Exo,sans-serif}.home-info-container h2,.home-info-container h4,.single-post-inner p{font-family:Exo 'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif}.single-post-inner p{color:#333;font-size:1.6rem;line-height:2.8rem;margin-top:2.2rem}.single-post-inner p.with-img{margin:0;padding:0;-webkit-transition:padding .15s linear;transition:padding .15s linear}.single-post-inner code,.single-post-inner h1,.single-post-inner h2,.single-post-inner h3,.single-post-inner h4,.single-post-inner h5,.single-post-inner h6,.single-post-inner pre{color:#595959}.single-post-inner h2,.single-post-inner h4,.single-post-inner h6{margin-top:.5rem}.single-post-inner li{font-size:1.6rem;line-height:2.4rem}.single-post-inner blockquote{font-style:italic;font-size:1.6rem;line-height:2.2rem;color:#333}.single-post-inner frame,.single-post-inner iframe,.single-post-inner video{max-width:100%;height:auto}.single-post-inner code{padding:.1em .4em;background:#e8f2fb;border:1px solid #c9e1f6;border-radius:3px}.single-post-inner pre{white-space:pre-wrap}.single-post-inner pre code{background:0 0;border:0;line-height:2rem}.nav-header{width:100%;position:relative}.nav-header-container{position:relative;height:2rem;width:74%;max-width:76.8rem;margin:0 auto}.header-wrap{width:100%}.back-home{background:none;border:1px solid #fff;border-radius:0;color:#fff;font-size:1.2rem;left:0;line-height:2.4rem;opacity:.8;padding:.5rem 2.5rem;position:absolute;text-transform:uppercase;top:2rem;z-index:99}.back-home:active{background:rgba(0,0,0,.1)}.home-info-container{margin-top:18rem}.home-info-container h2,.home-info-container h4{color:#fff;font-weight:lighter;text-shadow:0 1px 1px #595959}.home-info-container h2:hover,.home-info-container h4:hover{color:#efefef;text-shadow:0 1px 1px #000}.home-info-container h2{font-size:4.2rem}.home-info-container h4{font-size:2rem;letter-spacing:.8rem}.post-info-container{width:74%;max-width:76.8rem;margin:13rem auto}.post-page-tags{display:block;clear:both;text-align:left;margin-top:1rem}.post-page-tags a{color:#fff;font-size:1.4rem;line-height:1.6rem;display:inline-block;margin:.3rem .6rem;padding:0 1rem;background:rgba(255,255,255,.3);border-radius:.3rem}.post-page-author,.post-page-time{display:inline-block;float:left;padding-bottom:1rem;margin-top:1rem;font-size:1.6rem;color:#fff;text-align:left}.post-page-tags a:first-child{margin-left:0}.post-page-tags a:hover{background:rgba(255,255,255,.2)}.post-page-time{font-family:Exo}.post-page-author{margin-left:2rem}.share h4,.toggle-comment h4{letter-spacing:.5rem;background:rgba(255,255,255,.1);padding:.5rem 1.6rem}.post-page-title{font-size:4.2rem;line-height:4.8rem;min-height:9.4rem;color:#fff;margin:0 auto;text-align:left;font-weight:lighter;font-family:Exo 'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif;white-space:normal;overflow:hidden;text-overflow:ellipsis}.share,.share h4,.share-icons{text-align:center}.share{width:100%;margin:2rem auto}.share h4{display:block;width:10rem;border:2px solid #595959;border-radius:.3rem;margin:0 auto}.share-icons{display:none;width:30rem;height:3rem;margin:3rem auto}.share-icons a{display:inline-block;font-size:2rem;line-height:2.5rem;margin:0 1rem 0 0;height:2.5rem}.share-icons a i{font-size:4rem}.toggle-comment h4{display:block;width:10rem;text-align:center;border:2px solid #595959;border-radius:.3rem;margin:0 auto}#to-top{display:none;width:3pc;height:3pc;text-align:left;text-indent:-9999px;background:rgba(0,0,0,.6);border-radius:50%;overflow:hidden;position:fixed;right:20px;bottom:20px;-khtml-opacity:.5;filter:alpha(opacity=50);opacity:.5;z-index:1000}#to-top:active,#to-top:hover{background:rgba(0,0,0,.4)}.to-top-wrap{width:100%;height:100%;position:relative}.to-top-wrap:after,.to-top-wrap:before{position:absolute;top:50%;content:'';width:0;height:0;-webkit-animation-name:shine;left:50%;display:block;-webkit-animation-timing-function:linear;-webkit-animation-iteration-count:infinite}.to-top-wrap:after{margin-left:-10px;margin-top:-11px;transform:rotate(180deg);-webkit-transform:rotate(180deg);border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid rgba(255,255,255,.5);-webkit-animation-duration:1.5s}.to-top-wrap:before{margin-left:-15px;margin-top:-9pt;transform:rotate(180deg);-webkit-transform:rotate(180deg);border-left:15px solid transparent;border-right:15px solid transparent;border-top:20px solid rgba(255,255,255,.5);-webkit-animation-duration:3s}.author{position:relative;background:#fff;margin-top:5rem;width:100%;font-family:'Open Sans',sans-serif}.author-image{-webkit-box-sizing:border-box;box-sizing:border-box;display:block;position:absolute;top:-40px;left:50%;margin-left:-40px;width:5pc;height:5pc;border-radius:100%;overflow:hidden;padding:6px;background:#fff;z-index:2;box-shadow:#E7EEF2 0 0 0 1px}.author-image .img{position:relative;display:block;width:100%;height:100%;background-size:cover;background-position:center center;border-radius:100%}.author-detail{padding:6.6rem 1.6rem 1.6rem;text-align:center}.author-detail h4{font-size:1.8rem;margin:0}.author-detail h4 a{font-size:1.6rem;color:#999}.author-detail h4 a:hover{color:#666}.author-detail p{color:#333;margin:1rem 0;font-size:1.4rem;line-height:1.75em}.author-meta,.author-meta span a{color:#9EABB3}.author-meta{padding:0;list-style:none;font-size:1.4rem;line-height:1;font-style:italic;display:inline-block;margin:0 auto;word-wrap:break-word}.author-meta span{margin-right:1rem;color:#9EABB3}.wechat-notice{margin:1rem 0;display:none}.wechat-notice a img{display:block;width:100%;max-width:100%}.wechat-notice h6{margin-top:.5rem;font-size:1.2rem;font-weight:lighter;line-height:1.8rem;color:#333}.cover-image{display:none!important}.comment-area{display:none;background:#fff;padding:0 1.6rem}.comment-area.toggle-up{display:block;-webkit-animation-name:toggle-up;-webkit-animation-duration:.5s;-webkit-animation-timing-function:linear}@-webkit-keyframes animate-bg{from{background-position:0 0}to{background-position:283px 212px}}@-webkit-keyframes shine{0%,100%{opacity:.1}25%,75%{opacity:.2}50%{opacity:1}}@-webkit-keyframes toggle-up{0%{opacity:0;-webkit-transform:translate3d(0,100px,0);transform:translate3d(0,100px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}/*! 2 | Animate.css - http://daneden.me/animate 3 | Licensed under the MIT license - http://opensource.org/licenses/MIT 4 | 5 | Copyright (c) 2014 Daniel Eden 6 | */.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 fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.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}}@-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}@media only screen and (max-width:361px){.site-footer{margin-top:3rem;font-size:1.2rem}#main{width:100%;margin:2rem auto}.nav-header-container{width:80%}.back-home{top:.5rem;left:0}}@media only screen and (max-width:481px){#header{height:100%}.post-info-container{width:84%}.info-mask{height:6rem}.post-title{font-size:1.6rem;margin:.2rem 0;line-height:1.8rem}.home-info-container h2,.post-page-title{font-size:3.2rem}.mask-wrapper{margin-top:.5rem}#main{width:100%;margin:2rem auto}.author-detail{padding:6rem 1.6rem 1.6rem}.home-info-container{margin-top:18rem}.archive-template .home-info-container,.site-footer,.tag-template .home-info-container{margin-top:3rem}.home-info-container h2,.home-info-container h4{color:#fff;font-weight:lighter;text-shadow:0 1px 1px #595959}.home-info-container h2:hover,.home-info-container h4:hover{text-shadow:0 1px 1px #333}.home-info-container h4{font-size:1.4rem;letter-spacing:.5rem}.pagination{width:90%}.pagination a{font-size:1rem}.archive-template #header,.tag-template #header{height:30%}.archive-template .home-info-container h2,.tag-template .home-info-container h2{line-height:2.2rem;font-size:1.6rem}.archive-template .home-info-container h4,.tag-template .home-info-container h4{font-size:1.2rem}.post-meta span.post-tags{display:none}}@media only screen and (max-width:768px){#main{width:100%;margin:2rem auto}.home-template .site-footer,.post-template .site-footer{margin-top:3rem}.arrow_down{display:block}.back-home{top:.5rem;left:0}#header{max-height:100%}}@media only screen and (min-width:1240px){#main{width:100%;margin:-6rem auto}} 7 | /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9ub3JtYWxpemUuc2NzcyIsIiRzdGRpbiIsIl9mb250cy5zY3NzIiwiX2Jhc2Uuc2NzcyIsIl9taXhpbnMuc2NzcyIsIl8zNjF1cC5zY3NzIiwiXzQ4MXVwLnNjc3MiLCJfNzY4dXAuc2NzcyIsIl8xMDI0dXAuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiNkVBd0xFLElBOE1BLE9DakdBLE9BQVEsRUN6Uk4sVUNZQSxLQUdBLHVCQUFBLFlBMkpJLGNBekJKLG1CQXdDSSxrQ0FBQSxPQUNBLGtDQUFBLFNBeEdKLFFBcU9BLFlBTUksY0FuTkosYUF5TkksV0FBQSxPSGxTTixRQUFBLE1BQUEsUUFBQSxXQUFBLE9BQUEsT0FBQSxPQUFBLE9BQUEsS0FBQSxLQUFBLElBQUEsUUFBQSxRQ2ZBLFFBQVMsTUQyQlQsTUFBQSxPQUFBLFNBQUEsTUNwQkEsUUFBUyxhQUVULGVBQTJCLFNENEIzQixzQkFDQSxRQUFBLEtDcEJBLE9BQVEsRUQ4QlIsU0FBQSxTQ3ZCQSxRQUFTLEtBT1gsRUFDRSxpQkFBa0IsWUE2WmxCLGdCQUFpQixLRDFYakIsU0FBQSxRQzdCQSxRQUFTLEVEd0NULFlDaENBLGNBQWUsSUFBSSxPQUtyQixFRHNVRSxTQWxTQSxPQ25DQSxZQUFhLElEMkNiLElDckNBLFdBQVksT0R1RFosS0FDQSxXQUFBLEtDekNBLE1BQU8sS0RpRFAsTUMzQ0EsVUFBVyxJRG9EWCxJQUFBLElBQ0EsVUFBQSxJQUNBLFlBQUEsRUFDQSxTQUFBLFNDOUNBLGVBQWdCLFNEa0RoQixJQy9DQSxJQUFLLE1EbURMLElDaERBLE9BQVEsT0RtRVIsZUNyREEsU0FBVSxPRGdFVixPQ3hEQSxPQUFRLElBQUksS0RnRVosR0FDQSxnQkFBQSxZQUNBLFdBQUEsWUMxREEsT0FBUSxFRGtFUixJQWtMQSxTQzlPQSxTQUFVLEtEdUVWLEtBQUEsSUFBQSxJQUFBLEtBQ0EsWUFBQSxVQUFBLFVDakVBLFVBQVcsSUR3RlgsT0FBQSxNQUFBLFNBQUEsT0FBQSxTQ3pFQSxNQUFPLFFB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TUFDZCxNQUNFLE1BQU8sS0FHUCxPQUFRLEtBQUssS0FLaEIsZUFNRyxRQUFTLEtBQUssT0FBTyxPQUNyQixxQkFDQSxXQUFZLE1BaUNaLHVDQXVCSCxhQXZCRyxtQ0x3cUNBLFdBQVksS0t4c0NSLHdCQUFBLHdCQUNBLE1BQUEsS0FDQyxZQUFBLFFBQ0gsWUFBYSxFQUFFLElBQUksSUFBSSxRQUNyQiw4QkFBQSw4QkFHQSxZQUFhLEVBQUUsSUFBSSxJQUFJLEtBS3ZCLHdCQUNBLFVBQUEsT0FPRixlQUFnQixNQUNyQixZQUNHLE1BQU8sSUFDVCxjQUtJLFVBQVcsS0FDZiwwQkFBQSxzQkFFRSxPQUFRLElBT1AsMENBQUEsc0NBQ0csWUFBQSxPQUdGLFVBQVcsT0FDVCwwQ0FBQSxzQ0FNRixVQUFXLE9BQ2YsMEJBSUUsUUFBUyxNQzVGYix5Q0FDRSxNQUNFLE1BQU8sS0FJUCxPQUFRLEtBQUssS0FPWiw0QkFOQSw0QkFLRCxXQUFZLEtBVVosWUFHQSxRQUFTLE1BQ1QsV0FDQSxJQUFBLE1BR0EsS0FBTSxFQUNOLFFOK3RDQSxXQUFZLE1PL3ZDaEIsMENBQ0UsTUFDRSxNQUFPLEtQa3dDUCxPQUFRLE1BQU0iLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sInNvdXJjZVJvb3QiOiIvY3NzL3Nhc3MifQ== */ -------------------------------------------------------------------------------- /assets/css/prism.css: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+bash+coffeescript+css-extras+git+handlebars+markdown+php+jsx+scss&plugins=autolinker+show-language */ 2 | /** 3 | * prism.js default theme for JavaScript, CSS and HTML 4 | * Based on dabblet (http://dabblet.com) 5 | * @author Lea Verou 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | color: black; 11 | text-shadow: 0 1px white; 12 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 13 | direction: ltr; 14 | text-align: left; 15 | white-space: pre; 16 | word-spacing: normal; 17 | word-break: normal; 18 | line-height: 1.5; 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | } 29 | 30 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 31 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 32 | text-shadow: none; 33 | background: #b3d4fc; 34 | } 35 | 36 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 37 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 38 | text-shadow: none; 39 | background: #b3d4fc; 40 | } 41 | 42 | @media print { 43 | code[class*="language-"], 44 | pre[class*="language-"] { 45 | text-shadow: none; 46 | } 47 | } 48 | 49 | /* Code blocks */ 50 | pre[class*="language-"] { 51 | padding: 1em; 52 | margin: .5em 0; 53 | overflow: auto; 54 | } 55 | 56 | :not(pre) > code[class*="language-"], 57 | pre[class*="language-"] { 58 | background: #f5f2f0; 59 | } 60 | 61 | /* Inline code */ 62 | :not(pre) > code[class*="language-"] { 63 | padding: .1em; 64 | border-radius: .3em; 65 | } 66 | 67 | .token.comment, 68 | .token.prolog, 69 | .token.doctype, 70 | .token.cdata { 71 | color: slategray; 72 | } 73 | 74 | .token.punctuation { 75 | color: #999; 76 | } 77 | 78 | .namespace { 79 | opacity: .7; 80 | } 81 | 82 | .token.property, 83 | .token.tag, 84 | .token.boolean, 85 | .token.number, 86 | .token.constant, 87 | .token.symbol, 88 | .token.deleted { 89 | color: #905; 90 | } 91 | 92 | .token.selector, 93 | .token.attr-name, 94 | .token.string, 95 | .token.char, 96 | .token.builtin, 97 | .token.inserted { 98 | color: #690; 99 | } 100 | 101 | .token.operator, 102 | .token.entity, 103 | .token.url, 104 | .language-css .token.string, 105 | .style .token.string { 106 | color: #a67f59; 107 | background: hsla(0, 0%, 100%, .5); 108 | } 109 | 110 | .token.atrule, 111 | .token.attr-value, 112 | .token.keyword { 113 | color: #07a; 114 | } 115 | 116 | .token.function { 117 | color: #DD4A68; 118 | } 119 | 120 | .token.regex, 121 | .token.important, 122 | .token.variable { 123 | color: #e90; 124 | } 125 | 126 | .token.important, 127 | .token.bold { 128 | font-weight: bold; 129 | } 130 | .token.italic { 131 | font-style: italic; 132 | } 133 | 134 | .token.entity { 135 | cursor: help; 136 | } 137 | 138 | .token a { 139 | color: inherit; 140 | } 141 | pre[class*='language-'] { 142 | position: relative; 143 | } 144 | pre[class*='language-'] > code[data-language] { 145 | overflow: auto; 146 | max-height: 28em; 147 | display: block; 148 | } 149 | pre[class*='language-'] > code[data-language]::before { 150 | content: attr(data-language); 151 | color: black; 152 | background-color: #CFCFCF; 153 | display: inline-block; 154 | position: absolute; 155 | top: 0; 156 | right: 0; 157 | font-size: 0.9em; 158 | border-radius: 0 0 0 5px; 159 | padding: 0 0.5em; 160 | text-shadow: none; 161 | } 162 | -------------------------------------------------------------------------------- /assets/css/style.min.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";/*! normalize.css v3.0.3 | MIT License | git.io/normalize */img,legend{border:0}.iconfont,html{-webkit-font-smoothing:antialiased}.arrow_down a,.banner-mask:after{-webkit-animation-timing-function:linear;-webkit-animation-iteration-count:infinite}#header,.pagination,.pagination a,.site-footer{text-align:center}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent;text-decoration:none}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}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}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}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}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{padding:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@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:1pc;font-style:normal;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale;display:inline-block;speak:none;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}.site-footer,.site-footer a{color:#666665}.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"}@font-face{font-family:Exo;font-style:normal;font-weight:100;src:local('Exo Thin'),local('Exo-Thin'),url(https://luoleiorg.b0.upaiyun.com/source/fonts/exo/ek6B72kladJz_Z6o5PEplKCWcynf_cDxXwCLxiixG1c.woff) format('woff')}@font-face{font-family:Exo;font-style:normal;font-weight:400;src:local('Exo Regular'),local('Exo-Regular'),url(https://luoleiorg.b0.upaiyun.com/source/fonts/exo/ZcGd2dvMSgl3mHN3lKAjNw.woff) format('woff')}body,html{width:100%;min-height:100%;height:100%;margin:0;padding:0}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;max-height:100%;font-size:62.5%;-webkit-tap-highlight-color:transparent;background-image:url(../../assets/images/p5.png);font-family:Exo, 'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial, sans-serif}.post-title,.site-footer,.site-footer a{font-family:Exo,sans-serif}h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2{margin-bottom:.5rem}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}h1{font-size:3.2rem;line-height:3.8rem}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.hide{display:none}#footer,#header{display:table;position:relative;width:100%}#header{height:60%;max-height:52rem;padding:24px 0;box-sizing:border-box;z-index:0}#footer{margin-top:12rem;height:30rem;z-index:1}.site-footer{position:relative;margin:8rem 0 0;height:10rem;padding:.5rem 15px;border-top:#EBF2F6 1px solid;font-weight:lighter;font-size:1.4rem;line-height:1.75em}.site-footer a:hover{color:#50585D}.post-template .site-footer{margin-top:13rem}.home-header{background:url(../../assets/images/banner2.jpg)}.blog-background{background-repeat:no-repeat;background-position:center;-webkit-background-size:cover;background-size:cover}.banner-mask:after{content:"";position:absolute;width:100%;height:100%;top:0;left:0;z-index:-1;background:url(../../assets/images/escheresque_ste.png);opacity:.25;background-color:rgba(0,0,0,.05);transition:background-color .5s ease-out 2s;-webkit-animation-name:animate-bg;-webkit-animation-duration:20s}.arrow_down,.arrow_down a{position:absolute;left:50%}.arrow_down{display:none;bottom:5rem;height:2rem}.arrow_down a{z-index:4;display:block;-webkit-transform:rotate(315deg);transform:rotate(315deg);margin-left:-1.3rem;width:2.8rem;height:2.8rem;border-left:.1rem solid #fff;border-bottom:.1rem solid #fff;-webkit-animation-name:shine;-webkit-animation-duration:1.5s;animation-iteration-count:infinite}.archive-template #main,.home-template #main,.tag-template #main{margin:2rem auto}.archive-template .arrow_down{display:none}#main{position:relative;z-index:1;width:74%;max-width:76.8rem;margin:-8rem auto}.post-in-list{position:relative;margin-bottom:2rem;overflow:hidden;min-height:10rem;-webkit-transform:translate3d(0,0,0)}.decor,.info-mask{position:absolute;width:100%}.post-in-list a{color:#fff}.post-in-list p{margin:0}.post-in-list .post-excerpt img{display:block;width:100%;min-height:20rem;height:auto}.info-mask{bottom:0;height:10rem;background:linear-gradient(transparent,#111)}.mask-wrapper{padding-left:1rem}.post-title{color:#fff;font-size:3.2rem;margin:1.2rem 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.post-title a{font-family:Exo, 'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif,sans-serif;text-shadow:1px 1px 1px #333,0 0 0 #333,1px 1px 1px #fff}.post-meta span{display:inline-block;color:#fff;font-size:1.6rem}.page-number,.pagination a,.post-tags a{font-size:1.4rem;display:inline-block}.post-tags{margin-left:.5rem}.post-tags a{line-height:1.6rem;margin-left:.6rem;padding:0 1rem;background:rgba(255,255,255,.3);border-radius:.3rem}.post-tags a:hover{background:rgba(255,255,255,.2)}#footer .svg-wrapper{bottom:auto;top:0}.decor{left:0;height:100%;z-index:2;bottom:-1px}#footer .decor{top:-1px}.pagination{color:#999;margin:0 auto 3rem;width:70%}.pagination a{font-family:Exo, 'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif;border-radius:.3rem;color:#fff;background:rgba(0,0,0,.5);height:2.4rem;line-height:2.4rem;padding:.3rem .8rem}.pagination a:hover{background:rgba(0,0,0,.2)}.page-number{padding:0 1rem}.post{background:#fff}.single-post-inner{font-size:1.8rem;padding:0 2.8% 1.6rem;overflow:hidden;border-bottom:1px dashed #e5e5e5;font-family:Exo,'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif}.single-post-inner img{display:block;margin:0 auto;max-width:100%;height:auto}.single-post-inner img.full-img{max-width:none;width:106%;margin:0 -3%;-webkit-transition:width .5s linear;transition:width .5s linear}.single-post-inner a{color:#54B5DB;padding:0 .5rem;font-family:Exo,sans-serif}.home-info-container h2,.home-info-container h4,.single-post-inner p{font-family:Exo, 'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif}.single-post-inner p{color:#333;font-size:1.6rem;line-height:2.8rem;margin-top:2.2rem}.single-post-inner p.with-img{margin:0;padding:0;-webkit-transition:padding .15s linear;transition:padding .15s linear}.single-post-inner code,.single-post-inner h1,.single-post-inner h2,.single-post-inner h3,.single-post-inner h4,.single-post-inner h5,.single-post-inner h6,.single-post-inner pre{color:#595959}.single-post-inner h2,.single-post-inner h4,.single-post-inner h6{margin-top:.5rem}.single-post-inner li{font-size:1.6rem;line-height:2.4rem}.single-post-inner blockquote{font-style:italic;font-size:1.6rem;line-height:2.2rem;color:#333}.single-post-inner frame,.single-post-inner iframe,.single-post-inner video{max-width:100%;height:auto}.single-post-inner code{padding:.1em .4em;background:#e8f2fb;border:1px solid #c9e1f6;border-radius:3px}.single-post-inner pre{white-space:pre-wrap}.single-post-inner pre code{background:0 0;border:0;line-height:2rem}.nav-header{width:100%;position:relative}.nav-header-container{position:relative;height:2rem;width:74%;max-width:76.8rem;margin:0 auto}.header-wrap{width:100%}.back-home{background:none;border:1px solid #fff;border-radius:0;color:#fff;font-size:1.2rem;left:0;line-height:2.4rem;opacity:.8;padding:.5rem 2.5rem;position:absolute;text-transform:uppercase;top:2rem;z-index:99}.back-home:active{background:rgba(0,0,0,.1)}.home-info-container{margin-top:18rem}.home-info-container h2,.home-info-container h4{color:#fff;font-weight:lighter;text-shadow:0 1px 1px #595959}.home-info-container h2:hover,.home-info-container h4:hover{color:#efefef;text-shadow:0 1px 1px #000}.home-info-container h2{font-size:4.2rem}.home-info-container h4{font-size:2rem;letter-spacing:.8rem}.post-info-container{width:74%;max-width:76.8rem;margin:13rem auto}.post-page-tags{display:block;clear:both;text-align:left;margin-top:1rem}.post-page-tags a{color:#fff;font-size:1.4rem;line-height:1.6rem;display:inline-block;margin:.3rem .6rem;padding:0 1rem;background:rgba(255,255,255,.3);border-radius:.3rem}.post-page-author,.post-page-time{display:inline-block;float:left;padding-bottom:1rem;margin-top:1rem;font-size:1.6rem;color:#fff;text-align:left}.post-page-tags a:first-child{margin-left:0}.post-page-tags a:hover{background:rgba(255,255,255,.2)}.post-page-time{font-family:Exo}.post-page-author{margin-left:2rem}.share h4,.toggle-comment h4{letter-spacing:.5rem;background:rgba(255,255,255,.1);padding:.5rem 1.6rem}.post-page-title{font-size:4.2rem;line-height:4.8rem;min-height:9.4rem;color:#fff;margin:0 auto;text-align:left;font-weight:lighter;font-family:Exo, 'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif;white-space:normal;overflow:hidden;text-overflow:ellipsis}.share,.share h4,.share-icons{text-align:center}.share{width:100%;margin:2rem auto}.share h4{display:block;width:10rem;border:2px solid #595959;border-radius:.3rem;margin:0 auto}.share-icons{display:none;width:30rem;height:3rem;margin:3rem auto}.share-icons a{display:inline-block;font-size:2rem;line-height:2.5rem;margin:0 1rem 0 0;height:2.5rem}.share-icons a i{font-size:4rem}.toggle-comment h4{display:block;width:10rem;text-align:center;border:2px solid #595959;border-radius:.3rem;margin:0 auto}#to-top{display:none;width:3pc;height:3pc;text-align:left;text-indent:-9999px;background:rgba(0,0,0,.6);border-radius:50%;overflow:hidden;position:fixed;right:20px;bottom:20px;-khtml-opacity:.5;filter:alpha(opacity=50);opacity:.5;z-index:1000}#to-top:active,#to-top:hover{background:rgba(0,0,0,.4)}.to-top-wrap{width:100%;height:100%;position:relative}.to-top-wrap:after,.to-top-wrap:before{position:absolute;top:50%;content:'';width:0;height:0;-webkit-animation-name:shine;left:50%;display:block;-webkit-animation-timing-function:linear;-webkit-animation-iteration-count:infinite}.to-top-wrap:after{margin-left:-10px;margin-top:-11px;transform:rotate(180deg);-webkit-transform:rotate(180deg);border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid rgba(255,255,255,.5);-webkit-animation-duration:1.5s}.to-top-wrap:before{margin-left:-15px;margin-top:-9pt;transform:rotate(180deg);-webkit-transform:rotate(180deg);border-left:15px solid transparent;border-right:15px solid transparent;border-top:20px solid rgba(255,255,255,.5);-webkit-animation-duration:3s}.author{position:relative;background:#fff;margin-top:5rem;width:100%;font-family:'Open Sans',sans-serif}.author-image{-webkit-box-sizing:border-box;box-sizing:border-box;display:block;position:absolute;top:-40px;left:50%;margin-left:-40px;width:5pc;height:5pc;border-radius:100%;overflow:hidden;padding:6px;background:#fff;z-index:2;box-shadow:#E7EEF2 0 0 0 1px}.author-image .img{position:relative;display:block;width:100%;height:100%;background-size:cover;background-position:center center;border-radius:100%}.author-detail{padding:6.6rem 1.6rem 1.6rem;text-align:center}.author-detail h4{font-size:1.8rem;margin:0}.author-detail h4 a{font-size:1.6rem;color:#999}.author-detail h4 a:hover{color:#666}.author-detail p{color:#333;margin:1rem 0;font-size:1.4rem;line-height:1.75em}.author-meta,.author-meta span a{color:#9EABB3}.author-meta{padding:0;list-style:none;font-size:1.4rem;line-height:1;font-style:italic;display:inline-block;margin:0 auto;word-wrap:break-word}.author-meta span{margin-right:1rem;color:#9EABB3}.wechat-notice{margin:1rem 0;display:none}.wechat-notice a img{display:block;width:100%;max-width:100%}.wechat-notice h6{margin-top:.5rem;font-size:1.2rem;font-weight:lighter;line-height:1.8rem;color:#333}.cover-image{display:none!important}.comment-area{display:none;background:#fff;padding:0 1.6rem}.comment-area.toggle-up{display:block;-webkit-animation-name:toggle-up;-webkit-animation-duration:.5s;-webkit-animation-timing-function:linear}@-webkit-keyframes animate-bg{from{background-position:0 0}to{background-position:283px 212px}}@-webkit-keyframes shine{0%,100%{opacity:.1}25%,75%{opacity:.2}50%{opacity:1}}@-webkit-keyframes toggle-up{0%{opacity:0;-webkit-transform:translate3d(0,100px,0);transform:translate3d(0,100px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}/*! 2 | Animate.css - http://daneden.me/animate 3 | Licensed under the MIT license - http://opensource.org/licenses/MIT 4 | 5 | Copyright (c) 2014 Daniel Eden 6 | */.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 fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.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}}@-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}@media only screen and (max-width:361px){.site-footer{margin-top:3rem;font-size:1.2rem}#main{width:100%;margin:2rem auto}.nav-header-container{width:80%}.back-home{top:.5rem;left:0}}@media only screen and (max-width:481px){#header{height:100%}.post-info-container{width:84%}.info-mask{height:6rem}.post-title{font-size:1.6rem;margin:.2rem 0;line-height:1.8rem}.home-info-container h2,.post-page-title{font-size:3.2rem}.mask-wrapper{margin-top:.5rem}#main{width:100%;margin:2rem auto}.author-detail{padding:6rem 1.6rem 1.6rem}.home-info-container{margin-top:18rem}.archive-template .home-info-container,.site-footer,.tag-template .home-info-container{margin-top:3rem}.home-info-container h2,.home-info-container h4{color:#fff;font-weight:lighter;text-shadow:0 1px 1px #595959}.home-info-container h2:hover,.home-info-container h4:hover{text-shadow:0 1px 1px #333}.home-info-container h4{font-size:1.4rem;letter-spacing:.5rem}.pagination{width:90%}.pagination a{font-size:1rem}.archive-template #header,.tag-template #header{height:30%}.archive-template .home-info-container h2,.tag-template .home-info-container h2{line-height:2.2rem;font-size:1.6rem}.archive-template .home-info-container h4,.tag-template .home-info-container h4{font-size:1.2rem}.post-meta span.post-tags{display:none}}@media only screen and (max-width:768px){#main{width:100%;margin:2rem auto}.home-template .site-footer,.post-template .site-footer{margin-top:3rem}.arrow_down{display:block}.back-home{top:.5rem;left:0}#header{max-height:100%}}@media only screen and (min-width:1240px){#main{width:100%;margin:-6rem auto}} 7 | -------------------------------------------------------------------------------- /assets/fonts/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | uxiconfont 5 | 6 | 7 | 8 | 9 |
10 |

一淘UX图标

11 | 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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /assets/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/fonts/iconfont.eot -------------------------------------------------------------------------------- /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/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/fonts/iconfont.ttf -------------------------------------------------------------------------------- /assets/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/fonts/iconfont.woff -------------------------------------------------------------------------------- /assets/images/apple-touch-icon-iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/apple-touch-icon-iphone.png -------------------------------------------------------------------------------- /assets/images/banner2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/banner2.jpg -------------------------------------------------------------------------------- /assets/images/bg-mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/bg-mask.png -------------------------------------------------------------------------------- /assets/images/cream_pixels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/cream_pixels.png -------------------------------------------------------------------------------- /assets/images/escheresque_ste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/escheresque_ste.png -------------------------------------------------------------------------------- /assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/favicon.ico -------------------------------------------------------------------------------- /assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/favicon.png -------------------------------------------------------------------------------- /assets/images/p5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/p5.png -------------------------------------------------------------------------------- /assets/images/stardust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/stardust.png -------------------------------------------------------------------------------- /assets/images/touch-icon-iphone-retina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/touch-icon-iphone-retina.png -------------------------------------------------------------------------------- /assets/images/triangular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/assets/images/triangular.png -------------------------------------------------------------------------------- /assets/js/all.min.js: -------------------------------------------------------------------------------- 1 | $.fn.extend({isOnScreenVisible:function(){var e=$(window),t={top:e.scrollTop(),left:e.scrollLeft()};t.right=t.left+e.width(),t.bottom=t.top+e.height();var a=this.offset();return a.right=a.left+this.outerWidth(),a.bottom=a.top+this.outerHeight(),!(t.righta.right||t.bottoma.bottom)}});var scrollme=function(e){var t={},a=e(document),o=e(window);return t.body_height=0,t.viewport_height=0,t.viewport_top=0,t.viewport_bottom=0,t.viewport_top_previous=-1,t.elements=[],t.elements_in_view=[],t.property_defaults={opacity:1,translatex:0,translatey:0,translatez:0,rotatex:0,rotatey:0,rotatez:0,scale:1,scalex:1,scaley:1,scalez:1},t.scrollme_selector=".scrollme",t.animateme_selector=".animateme",t.update_interval=10,t.easing_functions={linear:function(e){return e},easeout:function(e){return e*e*e},easein:function(e){return e=1-e,1-e*e*e},easeinout:function(e){return.5>e?4*e*e*e:(e=1-e,1-4*e*e*e)}},t.init_events=["ready","page:load","page:change"],t.init_if=function(){return!0},t.init=function(){return t.init_if()?(t.init_elements(),t.on_resize(),o.on("resize orientationchange",function(){t.on_resize()}),o.load(function(){setTimeout(function(){t.on_resize()},100)}),setInterval(t.update,t.update_interval),!0):!1},t.init_elements=function(){e(t.scrollme_selector).each(function(){var a={};a.element=e(this);var o=[];e(this).find(t.animateme_selector).addBack(t.animateme_selector).each(function(){var a={};a.element=e(this),a.when=a.element.data("when"),a.from=a.element.data("from"),a.to=a.element.data("to"),a.element.is("[data-crop]")?a.crop=a.element.data("crop"):a.crop=!0,a.element.is("[data-easing]")?a.easing=t.easing_functions[a.element.data("easing")]:a.easing=t.easing_functions.easeout;var i={};a.element.is("[data-opacity]")&&(i.opacity=a.element.data("opacity")),a.element.is("[data-translatex]")&&(i.translatex=a.element.data("translatex")),a.element.is("[data-translatey]")&&(i.translatey=a.element.data("translatey")),a.element.is("[data-translatez]")&&(i.translatez=a.element.data("translatez")),a.element.is("[data-rotatex]")&&(i.rotatex=a.element.data("rotatex")),a.element.is("[data-rotatey]")&&(i.rotatey=a.element.data("rotatey")),a.element.is("[data-rotatez]")&&(i.rotatez=a.element.data("rotatez")),a.element.is("[data-scale]")&&(i.scale=a.element.data("scale")),a.element.is("[data-scalex]")&&(i.scalex=a.element.data("scalex")),a.element.is("[data-scaley]")&&(i.scaley=a.element.data("scaley")),a.element.is("[data-scalez]")&&(i.scalez=a.element.data("scalez")),a.properties=i,o.push(a)}),a.effects=o,t.elements.push(a)})},t.update=function(){window.requestAnimationFrame(function(){t.update_viewport_position(),t.viewport_top_previous!=t.viewport_top&&(t.update_elements_in_view(),t.animate()),t.viewport_top_previous=t.viewport_top})},t.animate=function(){for(var e=t.elements_in_view.length,a=0;e>a;a++)for(var o=t.elements_in_view[a],i=o.effects.length,n=0;i>n;n++){var s=o.effects[n];switch(s.when){case"view":case"span":var l=o.top-t.viewport_height,r=o.bottom;break;case"exit":var l=o.bottom-t.viewport_height,r=o.bottom;break;default:var l=o.top-t.viewport_height,r=o.top}s.crop&&(0>l&&(l=0),r>t.body_height-t.viewport_height&&(r=t.body_height-t.viewport_height));var c=(t.viewport_top-l)/(r-l),d=s.from,m=s.to,p=m-d,h=(c-d)/p,u=s.easing(h),f=t.animate_value(c,u,d,m,s,"opacity"),v=t.animate_value(c,u,d,m,s,"translatey"),g=t.animate_value(c,u,d,m,s,"translatex"),_=t.animate_value(c,u,d,m,s,"translatez"),w=t.animate_value(c,u,d,m,s,"rotatex"),$=t.animate_value(c,u,d,m,s,"rotatey"),b=t.animate_value(c,u,d,m,s,"rotatez"),y=t.animate_value(c,u,d,m,s,"scale"),x=t.animate_value(c,u,d,m,s,"scalex"),z=t.animate_value(c,u,d,m,s,"scaley"),k=t.animate_value(c,u,d,m,s,"scalez");"scale"in s.properties&&(x=y,z=y,k=y),s.element.css({opacity:f,transform:"translate3d( "+g+"px , "+v+"px , "+_+"px ) rotateX( "+w+"deg ) rotateY( "+$+"deg ) rotateZ( "+b+"deg ) scale3d( "+x+" , "+z+" , "+k+" )","-webkit-transform":"translate3d( "+g+"px , "+v+"px , "+_+"px ) rotateX( "+w+"deg ) rotateY( "+$+"deg ) rotateZ( "+b+"deg ) scale3d( "+x+" , "+z+" , "+k+" )"})}},t.animate_value=function(e,a,o,i,n,s){var l=t.property_defaults[s];if(!(s in n.properties))return l;var r=n.properties[s],c=i>o?!0:!1;if(o>e&&c)return l;if(e>i&&c)return r;if(e>o&&!c)return l;if(i>e&&!c)return r;var d=l+a*(r-l);switch(s){case"opacity":d=d.toFixed(2);break;case"translatex":d=d.toFixed(0);break;case"translatey":d=d.toFixed(0);break;case"translatez":d=d.toFixed(0);break;case"rotatex":d=d.toFixed(1);break;case"rotatey":d=d.toFixed(1);break;case"rotatez":d=d.toFixed(1);break;case"scale":d=d.toFixed(3)}return d},t.update_viewport_position=function(){t.viewport_top=o.scrollTop(),t.viewport_bottom=t.viewport_top+t.viewport_height},t.update_elements_in_view=function(){t.elements_in_view=[];for(var e=t.elements.length,a=0;e>a;a++)t.elements[a].topt.viewport_top&&t.elements_in_view.push(t.elements[a])},t.on_resize=function(){t.update_viewport(),t.update_element_heights(),t.update_viewport_position(),t.update_elements_in_view(),t.animate()},t.update_viewport=function(){t.body_height=a.height(),t.viewport_height=o.height()},t.update_element_heights=function(){for(var e=t.elements.length,a=0;e>a;a++){var o=t.elements[a].element.outerHeight(),i=t.elements[a].element.offset();t.elements[a].height=o,t.elements[a].top=i.top,t.elements[a].bottom=i.top+o}},a.on(t.init_events.join(" "),function(){t.init()}),t},Duoshuo={dataThreadKey:location.protocol+"//"+location.host+location.pathname,init:function(){Duoshuo.toggleBox()},toggleBox:function(){$(".toggle-comment").on("click",function(e){if($(".comment-area").has("div").length>0)return void $(".comment-area").empty();var t=document.createElement("div");t.setAttribute("data-thread-key",Duoshuo.dataThreadKey),t.setAttribute("data-url",location.href),t.setAttribute("data-title",$("title").html()),DUOSHUO.EmbedThread(t),$(".comment-area").append(t),$(".comment-area").has("div").length>0&&setTimeout(function(){$(".comment-area").addClass("toggle-up")},500),setTimeout(function(){1==$(".comment-area").isOnScreenVisible()&&$(".toggle-comment").addClass("animated fadeOut").fadeOut(500)},1e3)})}},General={isWeixin:!1,init:function(){General.scrollToPos(),General.checkKey(),General.updateImageWidth();var e=navigator.userAgent.toLowerCase();"micromessenger"==e.match(/MicroMessenger/i)&&(General.isWeixin=!0)},checkKey:function(e){e=e||window.event,"74"==e.keyCode?(console.log("按下键盘"),$("html,body").stop(),$("html,body").animate({scrollTop:$(window).stop().scrollTop()+200},"fast")):"75"==e.keyCode&&($("html,body").stop(),$("html,body").animate({scrollTop:$(window).stop().scrollTop()-200},"fast"))},updateImageWidth:function(){function e(){var e=$(this),t=a.outerWidth(),o=this.naturalWidth;o>=t?e.addClass("full-img"):e.removeClass("full-img")}function t(){o.each(e)}var a=$(".post-content");a.fitVids();var o=$(".single-post-inner img").on("load",e);t()},urlIconlize:function(e){var t,a,o={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 i in o)if("function"!=typeof o[i]){var n=i;e.indexOf(n)>=0&&(t=n,a=o[n])}return a},addIcons:function(){$(".single-post-inner p a:not(:has(img))").each(function(e){var t=$(this).attr("href"),a=document.createElement("a");a.href=t,_selfDomain=a.hostname,General.urlIconlize(_selfDomain),console.log(_selfDomain),$(this).prepend('');var o=$(this).find("i").css("color"),i=$(this).css("color");$(this).hover(function(){$(this).css("color",o),$(this).addClass("animated pulse")},function(){$(this).css("color",i),$(this).removeClass("animated pulse")})})},scrollToPos:function(e){var t="我要飞到最高",a=e||$(window).height(),o=$('
').appendTo("body");$(window).scroll(function(){$(window).scrollTop()>$(window).height()?o.fadeIn(500):o.fadeOut(500)}),o.click(function(e){e.preventDefault(),$(window).width()>768?$("html,body").animate({scrollTop:0},600,function(){window.location.hash="#"}):$("html,body").animate({scrollTop:a-100},600,function(){window.location.hash="#"}),console.log("我跳")})},resize:function(){visualContainerWidh=$(window).width()}};$(document).ready(function(){General.init(),0==General.isWeixin&&$(window).width()>768&&(console.log("只有大屏和微信上才出动画"),scrollme($)),$("body").hasClass("post-template")&&(General.updateImageWidth(),$('img[alt="cover"]').addClass("cover-image"),General.addIcons(),$(".share h4").on("click",function(){$(this).fadeOut(20),$(".share-icons").css("display","block").addClass("fadeIn animated")}),Duoshuo.init(),$(".single-post-inner p:has(img)").each(function(){var e=$(this);e.addClass("with-img"),1==e.isOnScreenVisible()&&e.addClass("with-img").addClass("already-visible")})),($("body").hasClass("archive-template")||$("body").hasClass("home-template"))&&($(window).width()>768,$(".post-in-list").each(function(){var e=$(this);1==e.isOnScreenVisible()&&e.addClass("already-visible")}),$(".post-excerpt").each(function(){var e=$(this);0==e.has("img").length?(console.log("没有图片"),e.append('')):console.log("With")})),$(".arrow_down").click(function(){return $("html,body").animate({scrollTop:$(window).height()-20},1e3,function(){}),!1}),$(window).scroll(function(){$(window).scrollTop()>50,$("body").hasClass("post-template")&&(0==$(".share-icons").isOnScreenVisible()&&($(".share-icons").removeClass("fadeInUpBig animated").css("display","none"),$(".share h4").css("display","block")),1==General.isWeixin&&1==$(".copyright").isOnScreenVisible()&&(console.log("显示了"),$(".wechat-notice").css("display","block").addClass("fadeInUpBig animated"))),($("body").hasClass("archive-template")||$("body").hasClass("home-template"))&&$(".post-in-list").each(function(){var e=$(this);1==e.isOnScreenVisible()&&1!=e.hasClass("already-visible")})})}); 2 | -------------------------------------------------------------------------------- /assets/js/jquery.fitvids.js: -------------------------------------------------------------------------------- 1 | /*global jQuery */ 2 | /*jshint browser:true */ 3 | /*! 4 | * FitVids 1.1 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 | */ 11 | 12 | (function( $ ){ 13 | 14 | "use strict"; 15 | 16 | $.fn.fitVids = function( options ) { 17 | var settings = { 18 | customSelector: null 19 | }; 20 | 21 | if(!document.getElementById('fit-vids-style')) { 22 | // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js 23 | var head = document.head || document.getElementsByTagName('head')[0]; 24 | var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}'; 25 | var div = document.createElement('div'); 26 | div.innerHTML = '

x

'; 27 | head.appendChild(div.childNodes[1]); 28 | } 29 | 30 | if ( options ) { 31 | $.extend( settings, options ); 32 | } 33 | 34 | return this.each(function(){ 35 | var selectors = [ 36 | "iframe[src*='player.vimeo.com']", 37 | "iframe[src*='youtube.com']", 38 | "iframe[src*='youtube-nocookie.com']", 39 | "iframe[src*='kickstarter.com'][src*='video.html']", 40 | "object", 41 | "embed" 42 | ]; 43 | 44 | if (settings.customSelector) { 45 | selectors.push(settings.customSelector); 46 | } 47 | 48 | var $allVideos = $(this).find(selectors.join(',')); 49 | $allVideos = $allVideos.not("object object"); // SwfObj conflict patch 50 | 51 | $allVideos.each(function(){ 52 | var $this = $(this); 53 | if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } 54 | var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(), 55 | width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), 56 | aspectRatio = height / width; 57 | if(!$this.attr('id')){ 58 | var videoID = 'fitvid' + Math.floor(Math.random()*999999); 59 | $this.attr('id', videoID); 60 | } 61 | $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%"); 62 | $this.removeAttr('height').removeAttr('width'); 63 | }); 64 | }); 65 | }; 66 | // Works with either jQuery or Zepto 67 | })( window.jQuery || window.Zepto ); 68 | -------------------------------------------------------------------------------- /assets/js/prism.js: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+bash+coffeescript+css-extras+git+handlebars+markdown+php+jsx+scss&plugins=autolinker+show-language */ 2 | self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{};var Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(d instanceof a)){u.lastIndex=0;var m=u.exec(d);if(m){c&&(f=m[1].length);var y=m.index-1+f,m=m[0].slice(f),v=m.length,k=y+v,b=d.slice(0,y+1),w=d.slice(k+1),N=[p,1];b&&N.push(b);var O=new a(l,g?t.tokenize(m,g):m,h);N.push(O),w&&N.push(w),Array.prototype.splice.apply(r,N)}}}}}return r},hooks:{all:{},add:function(e,n){var a=t.hooks.all;a[e]=a[e]||[],a[e].push(n)},run:function(e,n){var a=t.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(n)}}},n=t.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(n.stringify=function(e,a,r){if("string"==typeof e)return e;if("Array"===t.util.type(e))return e.map(function(t){return n.stringify(t,a,e)}).join("");var i={type:e.type,content:n.stringify(e.content,a,r),tag:"span",classes:["token",e.type],attributes:{},language:a,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}t.hooks.run("wrap",i);var s="";for(var o in i.attributes)s+=o+'="'+(i.attributes[o]||"")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'" '+s+">"+i.content+""},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),a=n.language,r=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(r,t.languages[a])))),self.close()},!1),self.Prism):self.Prism;var a=document.getElementsByTagName("script");return a=a[a.length-1],a&&(t.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism);; 3 | Prism.languages.markup={comment://,prolog:/<\?.+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/i,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/=|>|"/}},punctuation:/\/?>/,"attr-name":{pattern:/[\w:-]+/,inside:{namespace:/^[\w-]+?:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))});; 4 | Prism.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{punctuation:/[;:]/}},url:/url\((?:(["'])(\\\n|\\?.)*?\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/,string:/("|')(\\\n|\\?.)*?\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,punctuation:/[\{\};:]/,"function":/[-a-z0-9]+(?=\()/i},Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/[\w\W]*?<\/style>/i,inside:{tag:{pattern:/|<\/style>/i,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css},alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag));; 5 | Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/("|')(\\\n|\\?.)*?\1/,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":{pattern:/[a-z0-9_]+\(/i,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|~|\^|%/,ignore:/&(lt|gt|amp);/i,punctuation:/[{}[\];(),.:]/};; 6 | Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|-?Infinity)\b/,"function":/(?!\d)[a-z0-9_$]+(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/[\w\W]*?<\/script>/i,inside:{tag:{pattern:/|<\/script>/i,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript},alias:"language-javascript"}});; 7 | Prism.languages.bash=Prism.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])(#.*?(\r?\n|$))/,lookbehind:!0},string:{pattern:/("|')(\\?[\s\S])*?\1/,inside:{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^\}]+\})/}},number:{pattern:/([^\w\.])-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/,lookbehind:!0},"function":/\b(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|declare|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|echo|egrep|eject|enable|env|ethtool|eval|exec|exit|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|select|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|until|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)\b/,keyword:/\b(if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)\b/}),Prism.languages.insertBefore("bash","keyword",{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^}]+\})/}),Prism.languages.insertBefore("bash","comment",{important:/(^#!\s*\/bin\/bash)|(^#!\s*\/bin\/sh)/});; 8 | !function(e){var n=/#(?!\{).+/,t={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:n,string:[/'(?:\\?[\s\S])*?'/,{pattern:/"(?:\\?[\s\S])*?"/,inside:{interpolation:t}}],keyword:/\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:n,interpolation:t}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\?[\s\S])*?`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,alias:"string"},{pattern:/"""[\s\S]*?"""/,alias:"string",inside:{interpolation:t}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/})}(Prism);; 9 | Prism.languages.css.selector={pattern:/[^\{\}\s][^\{\}]*(?=\s*\{)/,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+(?:\(.*\))?/,"class":/\.[-:\.\w]+/,id:/#[-:\.\w]+/}},Prism.languages.insertBefore("css","function",{hexcode:/#[\da-f]{3,6}/i,entity:/\\[\da-f]{1,8}/i,number:/[\d%\.]+/});; 10 | Prism.languages.git={comment:/^#.*$/m,string:/("|')(\\?.)*?\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s(--|-)\w+/m}},coord:/^@@.*@@$/m,deleted:/^-(?!-).+$/m,inserted:/^\+(?!\+).+$/m,commit_sha1:/^commit \w{40}$/m};; 11 | !function(e){var a=/\{\{\{[\w\W]+?\}\}\}|\{\{[\w\W]+?\}\}/g;e.languages.handlebars=e.languages.extend("markup",{handlebars:{pattern:a,inside:{delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(\\?.)+?\1/,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/,"boolean":/\b(true|false)\b/,block:{pattern:/^(\s*~?\s*)[#\/]\w+/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\w\W]+/}},punctuation:/[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/}}}),e.languages.insertBefore("handlebars","tag",{"handlebars-comment":{pattern:/\{\{![\w\W]*?\}\}/,alias:["handlebars","comment"]}}),e.hooks.add("before-highlight",function(e){"handlebars"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(a,function(a){return e.tokenStack.push(a),"___HANDLEBARS"+e.tokenStack.length+"___"}))}),e.hooks.add("before-insert",function(e){"handlebars"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),e.hooks.add("after-highlight",function(a){if("handlebars"===a.language){for(var n,t=0;n=a.tokenStack[t];t++)a.highlightedCode=a.highlightedCode.replace("___HANDLEBARS"+(t+1)+"___",e.highlight(n,a.grammar,"handlebars"));a.element.innerHTML=a.highlightedCode}})}(Prism);; 12 | Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/(^|\n)>(?:[\t ]*>)*/,lookbehind:!0,alias:"punctuation"},code:[{pattern:/(^|\n)(?: {4}|\t).+/,lookbehind:!0,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*\n(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/((?:^|\n)\s*)#+.+/,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/((?:^|\n)\s*)([*-])([\t ]*\2){2,}(?=\s*(?:\n|$))/,lookbehind:!0,alias:"punctuation"},list:{pattern:/((?:^|\n)\s*)(?:[*+-]|\d+\.)(?=[\t ].)/,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:[^>]|\\>)+>)(?:[\t ]+(?:"(?:[^"]|\\")*"|'(?:[^']|\\')*'|\((?:[^)]|\\\))*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:[^"]|\\")*"|'(?:[^']|\\')*'|\((?:[^)]|\\\))*\))$/,punctuation:/[[\]\(\)<>:]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:\n(?!\n)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*\s*$|__\s*$/}},italic:{pattern:/(^|[^\\])(?:\*(?:\n(?!\n)|.)+?\*|_(?:\n(?!\n)|.)+?_)/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:[^"]|\\")*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:[^"]|\\")*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.italic.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.bold.inside.italic=Prism.util.clone(Prism.languages.markdown.italic),Prism.languages.markdown.italic.inside.bold=Prism.util.clone(Prism.languages.markdown.bold);; 13 | 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|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|(^|[^:])(\/\/).*?(\r?\n|$))/,lookbehind:!0}}),Prism.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*?(\r?\n|$)/,lookbehind:!0,alias:"comment"}}),Prism.languages.insertBefore("php","keyword",{delimiter:/(\?>|<\?php|<\?)/i,variable:/(\$\w+)\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),Prism.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),Prism.languages.markup&&(Prism.hooks.add("before-highlight",function(e){"php"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(n){return e.tokenStack.push(n),"{{{PHP"+e.tokenStack.length+"}}}"}))}),Prism.hooks.add("before-insert",function(e){"php"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),Prism.hooks.add("after-highlight",function(e){if("php"===e.language){for(var n,a=0;n=e.tokenStack[a];a++)e.highlightedCode=e.highlightedCode.replace("{{{PHP"+(a+1)+"}}}",Prism.highlight(n,e.grammar,"php"));e.element.innerHTML=e.highlightedCode}}),Prism.hooks.add("wrap",function(e){"php"===e.language&&"markup"===e.type&&(e.content=e.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'$1'))}),Prism.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:Prism.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/}));; 14 | !function(a){var s=a.util.clone(a.languages.javascript);a.languages.jsx=a.languages.extend("markup",s),a.languages.jsx.tag.pattern=/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i,a.languages.jsx.tag.inside["attr-value"].pattern=/=[^\{](?:('|")[\w\W]*?(\1)|[^\s>]+)/i,a.languages.insertBefore("inside","attr-value",{script:{pattern:/=(\{[\w\W]*?\})/i,inside:{"function":a.languages.javascript.function,punctuation:/[={}[\];(),.:]/,keyword:a.languages.javascript.keyword},alias:"language-javascript"}},a.languages.jsx.tag)}(Prism);; 15 | Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/,lookbehind:!0},atrule:/@[\w-]+(?=\s+(\(|\{|;))/i,url:/([-a-z]+-)*url(?=\()/i,selector:/([^@;\{\}\(\)]?([^@;\{\}\(\)]|&|#\{\$[-_\w]+\})+)(?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/m}),Prism.languages.insertBefore("scss","atrule",{keyword:/@(if|else if|else|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)|(?=@for\s+\$[-_\w]+\s)+from/i}),Prism.languages.insertBefore("scss","property",{variable:/((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i}),Prism.languages.insertBefore("scss","function",{placeholder:/%[-_\w]+/i,statement:/\B!(default|optional)\b/i,"boolean":/\b(true|false)\b/,"null":/\b(null)\b/,operator:/\s+([-+]{1,2}|={1,2}|!=|\|?\||\?|\*|\/|%)\s+/});; 16 | !function(){if(self.Prism){var i=/\b([a-z]{3,7}:\/\/|tel:)[\w\-+%~/.:#=?&]+/,n=/\b\S+@[\w.]+[a-z]{2}/,t=/\[([^\]]+)]\(([^)]+)\)/,e=["comment","url","attr-value","string"];for(var a in Prism.languages){var r=Prism.languages[a];Prism.languages.DFS(r,function(a,r,l){e.indexOf(l)>-1&&"Array"!==Prism.util.type(r)&&(r.pattern||(r=this[a]={pattern:r}),r.inside=r.inside||{},"comment"==l&&(r.inside["md-link"]=t),"attr-value"==l?Prism.languages.insertBefore("inside","punctuation",{"url-link":i},r):r.inside["url-link"]=i,r.inside["email-link"]=n)}),r["url-link"]=i,r["email-link"]=n}Prism.hooks.add("wrap",function(i){if(/-link$/.test(i.type)){i.tag="a";var n=i.content;if("email-link"==i.type&&0!=n.indexOf("mailto:"))n="mailto:"+n;else if("md-link"==i.type){var e=i.content.match(t);n=e[2],i.content=e[1]}i.attributes.href=n}})}}();; 17 | !function(){if(self.Prism){var a={csharp:"C#",cpp:"C++"};Prism.hooks.add("before-highlight",function(e){var t=a[e.language]||e.language;e.element.setAttribute("data-language",t)})}}();; 18 | -------------------------------------------------------------------------------- /author.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | {{! The tag above means - insert everything in this file into the {body} of the default.hbs template }} 3 | 4 | {{! The big featured header }} 5 | 6 | {{! Everything inside the #author tags pulls data from the author }} 7 | {{#author}} 8 |
9 | 13 |
14 | 15 |
16 | {{#if image}} 17 |
18 |
19 |
20 | {{/if}} 21 |

{{name}}

22 |

{{bio}}

23 |
24 | {{#if location}}{{location}}{{/if}} 25 | {{#if website}}{{website}}{{/if}} 26 | {{plural ../pagination.total empty='No posts' singular='% post' plural='% posts'}} 27 |
28 |
29 | {{/author}} 30 | 31 | {{! The main content area on the homepage }} 32 |
33 | 34 | {{! The tag below includes the post loop - partials/loop.hbs }} 35 | {{> "loop"}} 36 | 37 |
38 | -------------------------------------------------------------------------------- /css/ds.css: -------------------------------------------------------------------------------- 1 | #ds-reset .ds-avatar img { 2 | width: 54px; 3 | height: 54px; 4 | border-radius: 50px; 5 | -webkit-border-radius: 30px; 6 | box-shadow: 0; 7 | -webkit-box-shadow: inset 0 -1px 0 #3333; 8 | -webkit-transition: 0.3s; 9 | -webkit-transition: -webkit-transform 0.4s ease-out; 10 | transition: transform 0.4s ease-out; 11 | } 12 | #ds-reset .ds-avatar img:hover { 13 | box-shadow: 0 0 10px #fff; 14 | rgba(255, 255, 255, .6), inset 0 0 20px rgba(255, 255, 255, 1); 15 | -webkit-box-shadow: 0 0 10px #fff; 16 | rgba(255, 255, 255, .6), inset 0 0 20px rgba(255, 255, 255, 1); 17 | -webkit-transform: rotateZ(360deg); 18 | transform: rotateZ(360deg); 19 | } 20 | 21 | 22 | #ds-thread #ds-reset .ds-textarea-wrapper{ 23 | border:1px solid #efefef; 24 | background: #fff; 25 | border-bottom: 0; 26 | } 27 | #ds-reset .ds-rounded-top{ 28 | border-radius: 0; 29 | } 30 | #ds-reset .ds-gradient-bg{ 31 | background: #fff; 32 | } 33 | 34 | #ds-thread #ds-reset .ds-post-options{ 35 | position: relative; 36 | margin-right: 100px; 37 | height: 30px; 38 | border: 1px solid #efefef; 39 | border-right: none; 40 | } 41 | 42 | #ds-thread #ds-reset .ds-post-button{ 43 | background: #00BCD4; 44 | color:#fff; 45 | border:0 none; 46 | border-radius: 0; 47 | } 48 | 49 | #ds-thread #ds-reset .ds-post-button:hover{ 50 | background: #04AAC2; 51 | color:#fff; 52 | } 53 | 54 | #ds-thread #ds-reset .ds-post-toolbar{ 55 | box-shadow: 0; 56 | } 57 | 58 | #ds-thread #ds-reset li.ds-tab a.ds-current{ 59 | border:0; 60 | background-color: rgba(0,0,0,0.06); 61 | } -------------------------------------------------------------------------------- /css/reset.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v3.0.3 | MIT License | git.io/normalize */ 2 | 3 | /** 4 | * 1. Set default font family to sans-serif. 5 | * 2. Prevent iOS text size adjust after orientation change, without disabling 6 | * user zoom. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove default margin. 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Correct `block` display not defined for any HTML5 element in IE 8/9. 28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 29 | * and Firefox. 30 | * Correct `block` display not defined for `main` in IE 11. 31 | */ 32 | 33 | article, 34 | aside, 35 | details, 36 | figcaption, 37 | figure, 38 | footer, 39 | header, 40 | hgroup, 41 | main, 42 | menu, 43 | nav, 44 | section, 45 | summary { 46 | display: block; 47 | } 48 | 49 | /** 50 | * 1. Correct `inline-block` display not defined in IE 8/9. 51 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. 52 | */ 53 | 54 | audio, 55 | canvas, 56 | progress, 57 | video { 58 | display: inline-block; /* 1 */ 59 | vertical-align: baseline; /* 2 */ 60 | } 61 | 62 | /** 63 | * Prevent modern browsers from displaying `audio` without controls. 64 | * Remove excess height in iOS 5 devices. 65 | */ 66 | 67 | audio:not([controls]) { 68 | display: none; 69 | height: 0; 70 | } 71 | 72 | /** 73 | * Address `[hidden]` styling not present in IE 8/9/10. 74 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. 75 | */ 76 | 77 | [hidden], 78 | template { 79 | display: none; 80 | } 81 | 82 | /* Links 83 | ========================================================================== */ 84 | 85 | /** 86 | * Remove the gray background color from active links in IE 10. 87 | */ 88 | 89 | a { 90 | background-color: transparent; 91 | } 92 | 93 | /** 94 | * Improve readability when focused and also mouse hovered in all browsers. 95 | */ 96 | 97 | a:active, 98 | a:hover { 99 | outline: 0; 100 | } 101 | 102 | /* Text-level semantics 103 | ========================================================================== */ 104 | 105 | /** 106 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome. 107 | */ 108 | 109 | abbr[title] { 110 | border-bottom: 1px dotted; 111 | } 112 | 113 | /** 114 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. 115 | */ 116 | 117 | b, 118 | strong { 119 | font-weight: bold; 120 | } 121 | 122 | /** 123 | * Address styling not present in Safari and Chrome. 124 | */ 125 | 126 | dfn { 127 | font-style: italic; 128 | } 129 | 130 | /** 131 | * Address variable `h1` font-size and margin within `section` and `article` 132 | * contexts in Firefox 4+, Safari, and Chrome. 133 | */ 134 | 135 | h1 { 136 | font-size: 2em; 137 | margin: 0.67em 0; 138 | } 139 | 140 | /** 141 | * Address styling not present in IE 8/9. 142 | */ 143 | 144 | mark { 145 | background: #ff0; 146 | color: #000; 147 | } 148 | 149 | /** 150 | * Address inconsistent and variable font size in all browsers. 151 | */ 152 | 153 | small { 154 | font-size: 80%; 155 | } 156 | 157 | /** 158 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 159 | */ 160 | 161 | sub, 162 | sup { 163 | font-size: 75%; 164 | line-height: 0; 165 | position: relative; 166 | vertical-align: baseline; 167 | } 168 | 169 | sup { 170 | top: -0.5em; 171 | } 172 | 173 | sub { 174 | bottom: -0.25em; 175 | } 176 | 177 | /* Embedded content 178 | ========================================================================== */ 179 | 180 | /** 181 | * Remove border when inside `a` element in IE 8/9/10. 182 | */ 183 | 184 | img { 185 | border: 0; 186 | } 187 | 188 | /** 189 | * Correct overflow not hidden in IE 9/10/11. 190 | */ 191 | 192 | svg:not(:root) { 193 | overflow: hidden; 194 | } 195 | 196 | /* Grouping content 197 | ========================================================================== */ 198 | 199 | /** 200 | * Address margin not present in IE 8/9 and Safari. 201 | */ 202 | 203 | figure { 204 | margin: 1em 40px; 205 | } 206 | 207 | /** 208 | * Address differences between Firefox and other browsers. 209 | */ 210 | 211 | hr { 212 | -moz-box-sizing: content-box; 213 | box-sizing: content-box; 214 | height: 0; 215 | } 216 | 217 | /** 218 | * Contain overflow in all browsers. 219 | */ 220 | 221 | pre { 222 | overflow: auto; 223 | } 224 | 225 | /** 226 | * Address odd `em`-unit font size rendering in all browsers. 227 | */ 228 | 229 | code, 230 | kbd, 231 | pre, 232 | samp { 233 | font-family: monospace, monospace; 234 | font-size: 1em; 235 | } 236 | 237 | /* Forms 238 | ========================================================================== */ 239 | 240 | /** 241 | * Known limitation: by default, Chrome and Safari on OS X allow very limited 242 | * styling of `select`, unless a `border` property is set. 243 | */ 244 | 245 | /** 246 | * 1. Correct color not being inherited. 247 | * Known issue: affects color of disabled elements. 248 | * 2. Correct font properties not being inherited. 249 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. 250 | */ 251 | 252 | button, 253 | input, 254 | optgroup, 255 | select, 256 | textarea { 257 | color: inherit; /* 1 */ 258 | font: inherit; /* 2 */ 259 | margin: 0; /* 3 */ 260 | } 261 | 262 | /** 263 | * Address `overflow` set to `hidden` in IE 8/9/10/11. 264 | */ 265 | 266 | button { 267 | overflow: visible; 268 | } 269 | 270 | /** 271 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 272 | * All other form control elements do not inherit `text-transform` values. 273 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. 274 | * Correct `select` style inheritance in Firefox. 275 | */ 276 | 277 | button, 278 | select { 279 | text-transform: none; 280 | } 281 | 282 | /** 283 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 284 | * and `video` controls. 285 | * 2. Correct inability to style clickable `input` types in iOS. 286 | * 3. Improve usability and consistency of cursor style between image-type 287 | * `input` and others. 288 | */ 289 | 290 | button, 291 | html input[type="button"], /* 1 */ 292 | input[type="reset"], 293 | input[type="submit"] { 294 | -webkit-appearance: button; /* 2 */ 295 | cursor: pointer; /* 3 */ 296 | } 297 | 298 | /** 299 | * Re-set default cursor for disabled elements. 300 | */ 301 | 302 | button[disabled], 303 | html input[disabled] { 304 | cursor: default; 305 | } 306 | 307 | /** 308 | * Remove inner padding and border in Firefox 4+. 309 | */ 310 | 311 | button::-moz-focus-inner, 312 | input::-moz-focus-inner { 313 | border: 0; 314 | padding: 0; 315 | } 316 | 317 | /** 318 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 319 | * the UA stylesheet. 320 | */ 321 | 322 | input { 323 | line-height: normal; 324 | } 325 | 326 | /** 327 | * It's recommended that you don't attempt to style these elements. 328 | * Firefox's implementation doesn't respect box-sizing, padding, or width. 329 | * 330 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 331 | * 2. Remove excess padding in IE 8/9/10. 332 | */ 333 | 334 | input[type="checkbox"], 335 | input[type="radio"] { 336 | box-sizing: border-box; /* 1 */ 337 | padding: 0; /* 2 */ 338 | } 339 | 340 | /** 341 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain 342 | * `font-size` values of the `input`, it causes the cursor style of the 343 | * decrement button to change from `default` to `text`. 344 | */ 345 | 346 | input[type="number"]::-webkit-inner-spin-button, 347 | input[type="number"]::-webkit-outer-spin-button { 348 | height: auto; 349 | } 350 | 351 | /** 352 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome. 353 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome 354 | * (include `-moz` to future-proof). 355 | */ 356 | 357 | input[type="search"] { 358 | -webkit-appearance: textfield; /* 1 */ 359 | -moz-box-sizing: content-box; 360 | -webkit-box-sizing: content-box; /* 2 */ 361 | box-sizing: content-box; 362 | } 363 | 364 | /** 365 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. 366 | * Safari (but not Chrome) clips the cancel button when the search input has 367 | * padding (and `textfield` appearance). 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 | * Define consistent border, margin, and padding. 377 | */ 378 | 379 | fieldset { 380 | border: 1px solid #c0c0c0; 381 | margin: 0 2px; 382 | padding: 0.35em 0.625em 0.75em; 383 | } 384 | 385 | /** 386 | * 1. Correct `color` not being inherited in IE 8/9/10/11. 387 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 388 | */ 389 | 390 | legend { 391 | border: 0; /* 1 */ 392 | padding: 0; /* 2 */ 393 | } 394 | 395 | /** 396 | * Remove default vertical scrollbar in IE 8/9/10/11. 397 | */ 398 | 399 | textarea { 400 | overflow: auto; 401 | } 402 | 403 | /** 404 | * Don't inherit the `font-weight` (applied by a rule above). 405 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. 406 | */ 407 | 408 | optgroup { 409 | font-weight: bold; 410 | } 411 | 412 | /* Tables 413 | ========================================================================== */ 414 | 415 | /** 416 | * Remove most spacing between table cells. 417 | */ 418 | 419 | table { 420 | border-collapse: collapse; 421 | border-spacing: 0; 422 | } 423 | 424 | td, 425 | th { 426 | padding: 0; 427 | } 428 | 429 | -------------------------------------------------------------------------------- /css/sass/_1024up.scss: -------------------------------------------------------------------------------- 1 | #main{ 2 | width:100%; 3 | margin:-6rem auto; 4 | } 5 | -------------------------------------------------------------------------------- /css/sass/_1240up.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/css/sass/_1240up.scss -------------------------------------------------------------------------------- /css/sass/_321up.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/css/sass/_321up.scss -------------------------------------------------------------------------------- /css/sass/_361up.scss: -------------------------------------------------------------------------------- 1 | .site-footer{ 2 | margin-top: 3rem; 3 | font-size:1.2rem; 4 | } 5 | 6 | 7 | #main{ 8 | width:100%; 9 | margin: 2rem auto; 10 | } 11 | 12 | .nav-header-container{ 13 | width: 80%; 14 | } 15 | .back-home{ 16 | top: .5rem; 17 | left: 0; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /css/sass/_481up.scss: -------------------------------------------------------------------------------- 1 | #header{ 2 | height:100%; 3 | } 4 | .post-info-container{ 5 | width:84% 6 | } 7 | 8 | .info-mask{ 9 | height:6rem; 10 | } 11 | .post-title{ 12 | font-size:1.6rem; 13 | margin:0.2rem 0; 14 | line-height:1.8rem; 15 | } 16 | 17 | .mask-wrapper{ 18 | margin-top: .5rem; 19 | } 20 | 21 | #main{ 22 | width:100%; 23 | margin: 2rem auto; 24 | } 25 | 26 | .post-page-title{ 27 | font-size:3.2rem; 28 | } 29 | 30 | .author-detail{ 31 | padding: 6rem 1.6rem 1.6rem; 32 | // margin: 0 0 2rem 0; 33 | // padding: 0 0 1.6rem 0; 34 | // border-bottom: #EBF2F6 1px dashed; 35 | } 36 | 37 | .home-info-container{ 38 | margin-top: 18rem; 39 | h2,h4{ 40 | color: #fff; 41 | font-weight: lighter; 42 | text-shadow:0 1px 1px #595959; 43 | &:hover{ 44 | text-shadow:0 1px 1px #333; 45 | } 46 | } 47 | h2{ 48 | font-size: 3.2rem; 49 | 50 | } 51 | h4{ 52 | font-size: 1.4rem; 53 | letter-spacing: .5rem; 54 | } 55 | } 56 | 57 | 58 | 59 | 60 | .pagination{ 61 | width:90%; 62 | a{ 63 | font-size: 1rem; 64 | } 65 | } 66 | 67 | .archive-template,.tag-template{ 68 | #header{ 69 | height: 30%; 70 | } 71 | .home-info-container{ 72 | margin-top: 3rem; 73 | h2,h4{ 74 | &:hover{ 75 | } 76 | } 77 | h2{ 78 | line-height: 2.2rem; 79 | font-size:1.6rem; 80 | 81 | } 82 | h4{ 83 | font-size: 1.2rem; 84 | } 85 | } 86 | } 87 | 88 | .post-meta{ 89 | span.post-tags{ 90 | display: none; 91 | } 92 | } 93 | 94 | .site-footer{ 95 | margin-top: 3rem; 96 | } 97 | -------------------------------------------------------------------------------- /css/sass/_768up.scss: -------------------------------------------------------------------------------- 1 | 2 | #main{ 3 | width:100%; 4 | margin:2rem auto; 5 | } 6 | 7 | .post-template{ 8 | .site-footer{ 9 | margin-top: 3rem; 10 | } 11 | } 12 | 13 | .home-template{ 14 | .site-footer{ 15 | margin-top: 3rem; 16 | } 17 | } 18 | 19 | .nav-header-container{ 20 | // width: 80%; 21 | } 22 | 23 | .arrow_down{ 24 | display: block; 25 | } 26 | 27 | .back-home{ 28 | top: .5rem; 29 | left: 0; 30 | } 31 | 32 | #header{ 33 | max-height:100%; 34 | } 35 | -------------------------------------------------------------------------------- /css/sass/_base.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Exo'; 3 | font-style: normal; 4 | font-weight: 100; 5 | src: local('Exo Thin'), local('Exo-Thin'), url(https://luoleiorg.b0.upaiyun.com/source/fonts/exo/ek6B72kladJz_Z6o5PEplKCWcynf_cDxXwCLxiixG1c.woff) format('woff'); 6 | } 7 | 8 | @font-face { 9 | font-family: 'Exo'; 10 | font-style: normal; 11 | font-weight: 400; 12 | src: local('Exo Regular'), local('Exo-Regular'), url(https://luoleiorg.b0.upaiyun.com/source/fonts/exo/ZcGd2dvMSgl3mHN3lKAjNw.woff) format('woff'); 13 | } 14 | 15 | html, 16 | body { 17 | width: 100%; 18 | min-height: 100%; 19 | height: 100%; 20 | margin: 0; 21 | padding: 0; 22 | } 23 | 24 | html { 25 | max-height: 100%; 26 | font-size: 62.5%; 27 | -webkit-font-smoothing: antialiased; 28 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 29 | background-image:url(#{$imgPath}/p5.png); 30 | font-family: $googleFontExo $fontOSX sans-serif; 31 | } 32 | 33 | a { 34 | text-decoration: none; 35 | } 36 | 37 | h1, 38 | h2, 39 | h3, 40 | h4, 41 | h5, 42 | h6 { 43 | margin: 0; 44 | padding: 0; 45 | } 46 | 47 | h6 { 48 | font-size: 1.4rem; 49 | } 50 | 51 | h5 { 52 | font-size: 1.6rem; 53 | } 54 | 55 | h4 { 56 | font-size: 1.8rem; 57 | } 58 | 59 | h3 { 60 | font-size: 2.2rem; 61 | line-height: 2.6rem; 62 | } 63 | 64 | h2 { 65 | font-size: 2.8rem; 66 | line-height: 4.6rem; 67 | margin-bottom: .5rem; 68 | } 69 | 70 | h1 { 71 | font-size: 3.2rem; 72 | line-height: 3.8rem; 73 | margin-bottom: .5rem; 74 | } 75 | 76 | .clearfix:before, 77 | .clearfix:after { 78 | content: " "; 79 | display: table; 80 | } 81 | 82 | .clearfix:after { 83 | clear: both; 84 | } 85 | 86 | .clearfix { 87 | *zoom: 1; 88 | } 89 | 90 | .hide { 91 | display: none; 92 | } 93 | 94 | #header { 95 | position: relative; 96 | display: table; 97 | text-align: center; 98 | width: 100%; 99 | height: 60%; 100 | max-height: 52rem; 101 | padding: 24px 0; 102 | // margin-bottom: 72px; 103 | box-sizing: border-box; 104 | z-index: 0; 105 | } 106 | 107 | #footer { 108 | margin-top: 12rem; 109 | // padding: 124px 0 72px; 110 | height: 30rem; 111 | position: relative; 112 | width: 100%; 113 | // height: 60%; 114 | display: table; 115 | z-index: 1; 116 | } 117 | 118 | .site-footer { 119 | position: relative; 120 | margin: 8rem 0 0 0; 121 | height: 10rem; 122 | padding: .5rem 15px; 123 | border-top: #EBF2F6 1px solid; 124 | font-family: $googleFontExo, sans-serif; 125 | font-weight: lighter; 126 | font-size: 1.4rem; 127 | line-height: 1.75em; 128 | color: #666665; 129 | text-align: center; 130 | a { 131 | font-family: $googleFontExo, sans-serif; 132 | color: #666665; 133 | &:hover { 134 | color: #50585D; 135 | } 136 | } 137 | } 138 | 139 | .post-template .site-footer { 140 | margin-top: 13rem; 141 | } 142 | 143 | .home-header { 144 | background: url(#{$imgPath}/banner2.jpg); 145 | } 146 | 147 | .home-footer {} 148 | 149 | .blog-background { 150 | background-repeat: no-repeat; 151 | background-position: center; 152 | -webkit-background-size: cover; 153 | background-size: cover; 154 | // background-attachment: fixed; 155 | } 156 | 157 | .banner-mask:after { 158 | content: ""; 159 | position: absolute; 160 | width: 100%; 161 | height: 100%; 162 | top: 0; 163 | left: 0; 164 | z-index: -1; 165 | background: url(#{$imgPath}/escheresque_ste.png); 166 | opacity: .25; 167 | background-color: rgba(0, 0, 0, 0.05); 168 | transition: background-color 500ms ease-out 2s; 169 | -webkit-animation-name: animate-bg; 170 | -webkit-animation-duration: 20s; 171 | -webkit-animation-timing-function: linear; 172 | -webkit-animation-iteration-count: infinite; 173 | } 174 | 175 | .arrow_down { 176 | display: none; 177 | position: absolute; 178 | left: 50%; 179 | // margin-left: -2rem; 180 | bottom: 5rem; 181 | height: 2rem; 182 | a { 183 | z-index: 4; 184 | display: block; 185 | position: absolute; 186 | left: 50%; 187 | // top: 10%; 188 | -webkit-transform: rotate(315deg); 189 | transform: rotate(315deg); 190 | margin-left: -1.3rem; 191 | width: 2.8rem; 192 | height: 2.8rem; 193 | border-left: .1rem solid #fff; 194 | border-bottom: .1rem solid #fff; 195 | -webkit-animation-name: shine; 196 | -webkit-animation-duration: 1.5s; 197 | -webkit-animation-timing-function: linear; 198 | -webkit-animation-iteration-count: infinite; 199 | animation-iteration-count: infinite; 200 | } 201 | } 202 | 203 | .home-template #main, 204 | .archive-template #main,.tag-template #main { 205 | margin: 2rem auto; 206 | } 207 | 208 | .archive-template { 209 | .arrow_down { 210 | display: none; 211 | } 212 | } 213 | 214 | .content {} 215 | 216 | #main { 217 | position: relative; 218 | z-index: 1; 219 | width: 74%; 220 | max-width: 76.8rem; 221 | margin: -8rem auto; 222 | img { 223 | // display: block; 224 | // max-width: 100%; 225 | // width: 100%; 226 | // height: auto; 227 | // margin: 0 auto; 228 | } 229 | } 230 | 231 | .post-in-list { 232 | // visibility: hidden; 233 | position: relative; 234 | margin-bottom: 2rem; 235 | overflow: hidden; 236 | min-height: 10rem; 237 | -webkit-transform: translate3d(0, 0, 0); 238 | } 239 | 240 | .post-in-list a { 241 | color: #fff; 242 | } 243 | 244 | .post-in-list p { 245 | margin: 0 246 | } 247 | 248 | .post-in-list .post-excerpt img { 249 | display: block; 250 | width: 100%; 251 | min-height: 20rem; 252 | height: auto; 253 | } 254 | 255 | .info-mask { 256 | position: absolute; 257 | width: 100%; 258 | bottom: 0; 259 | height: 10rem; 260 | background: linear-gradient(transparent, #111); 261 | } 262 | 263 | .mask-wrapper { 264 | padding-left: 1rem; 265 | } 266 | 267 | .post-title { 268 | color: #fff; 269 | font-size: 3.2rem; 270 | font-family: $googleFontExo, sans-serif; 271 | margin: 1.2rem 0; 272 | white-space: nowrap; 273 | overflow: hidden; 274 | text-overflow: ellipsis; 275 | a { 276 | font-family: $googleFontExo $fontOSX, sans-serif; 277 | text-shadow: 1px 1px 1px #333, 0 0 0 #333, 1px 1px 1px #fff; 278 | } 279 | } 280 | 281 | .post-meta span { 282 | display: inline-block; 283 | color: #fff; 284 | font-size: 1.6rem; 285 | } 286 | 287 | .post-tags { 288 | margin-left: .5rem; 289 | } 290 | 291 | .post-tags a { 292 | font-size: 1.4rem; 293 | line-height: 1.6rem; 294 | display: inline-block; 295 | margin-left: .6rem; 296 | padding: 0rem 1rem; 297 | background: rgba(255, 255, 255, .3); 298 | border-radius: .3rem; 299 | } 300 | 301 | .post-tags a:hover { 302 | background: rgba(255, 255, 255, .2); 303 | } 304 | 305 | #footer .svg-wrapper { 306 | bottom: auto; 307 | top: 0; 308 | } 309 | 310 | .decor { 311 | position: absolute; 312 | left: 0; 313 | width: 100%; 314 | height: 100%; 315 | z-index: 2; 316 | bottom: -1px; 317 | } 318 | 319 | #footer .decor { 320 | top: -1px 321 | } 322 | 323 | .pagination { 324 | text-align: center; 325 | color: #999; 326 | margin: 0 auto; 327 | margin-bottom: 3rem; 328 | width: 70%; 329 | a { 330 | font-size: 1.4rem; 331 | // text-transform: uppercase; 332 | font-family: $googleFontExo $fontOSX; 333 | border-radius: .3rem; 334 | display: inline-block; 335 | text-align: center; 336 | color: #fff; 337 | background: rgba(0, 0, 0, 0.5); 338 | height: 2.4rem; 339 | line-height: 2.4rem; 340 | padding: .3rem .8rem; 341 | &:hover { 342 | background: rgba(0, 0, 0, 0.2); 343 | } 344 | } 345 | } 346 | 347 | .page-number { 348 | font-size: 1.4rem; 349 | display: inline-block; 350 | padding: 0 1rem; 351 | } 352 | 353 | // ÎÄÕÂÒ³Ãæ 354 | // 355 | // 356 | .post { 357 | background: #fff; 358 | } 359 | 360 | .single-post-inner { 361 | font-size: 1.8rem; 362 | padding: 0rem 2.8% 1.6rem; 363 | overflow: hidden; 364 | border-bottom: 1px dashed #e5e5e5; 365 | font-family: $googleFontExo, $fontOSX; 366 | img { 367 | display: block; 368 | margin: 0 auto; 369 | max-width: 100%; 370 | height: auto; 371 | &.full-img { 372 | max-width: none; 373 | width: 106%; 374 | margin: 0 -3%; 375 | -webkit-transition: width 0.5s linear; 376 | transition: width 0.5s linear; 377 | } 378 | } 379 | a { 380 | color: #54B5DB; 381 | padding: 0 .5rem; 382 | font-family: $googleFontExo, sans-serif; 383 | } 384 | p { 385 | color: #333; 386 | // padding: 0 1.5rem; 387 | font-size: 1.6rem; 388 | line-height: 2.8rem; 389 | margin-top: 2.2rem; 390 | font-family: $googleFontExo $fontOSX; 391 | } 392 | p.with-img { 393 | margin: 0; 394 | padding: 0; 395 | -webkit-transition: padding 0.15s linear; 396 | transition: padding 0.15s linear; 397 | } 398 | h1, 399 | h2, 400 | h3, 401 | h4, 402 | h5, 403 | h6, 404 | pre, 405 | code { 406 | color: #595959; 407 | // padding: 0 1.5rem; 408 | } 409 | h2, 410 | h4, 411 | h6 { 412 | margin-top: .5rem; 413 | } 414 | li { 415 | font-size: 1.6rem; 416 | line-height: 2.4rem; 417 | } 418 | blockquote { 419 | font-style: italic; 420 | font-size: 1.6rem; 421 | line-height: 2.2rem; 422 | color: #333; 423 | } 424 | iframe, 425 | frame, 426 | video { 427 | max-width: 100%; 428 | height: auto; 429 | } 430 | code { 431 | padding: .1em .4em; 432 | background: #e8f2fb; 433 | border: 1px solid #c9e1f6; 434 | border-radius: 3px; 435 | } 436 | // code { 437 | // padding: 1px 3px; 438 | // font-family: 'Open Sans', sans-serif; 439 | // font-size: 0.85em; 440 | // white-space: pre-wrap; 441 | // border: #E3EDF3 1px solid; 442 | // background: #F7FAFB; 443 | // border-radius: 2px; 444 | // } 445 | // 446 | pre { 447 | white-space: pre-wrap; 448 | code { 449 | background: none; 450 | border: 0 none; 451 | line-height: 2rem; 452 | } 453 | } 454 | // code { 455 | // font-family: monospace, serif; 456 | // padding: .3rem .6rem; 457 | // border-radius: .3rem; 458 | // line-height: 2.8rem; 459 | // // background: #f8f8f8; 460 | // // border: 1px solid rgba(155, 155, 155, .1); 461 | // margin: 0 .3rem; 462 | // &:hover { 463 | // background: #f3f3f3; 464 | // } 465 | // } 466 | } 467 | 468 | .nav-header { 469 | width: 100%; 470 | position: relative; 471 | // border-bottom: 1px solid rgba(255, 255, 255, .4); 472 | // height: 4rem; 473 | // background: rgba(0, 0, 0, .5); 474 | } 475 | 476 | .nav-header-container { 477 | position: relative; 478 | height: 2rem; 479 | width: 74%; 480 | max-width: 76.8rem; 481 | margin: 0 auto; 482 | } 483 | 484 | .header-wrap { 485 | // position: absolute; 486 | width: 100%; 487 | } 488 | 489 | .back-home { 490 | background: none repeat scroll 0 0 transparent; 491 | border: 1px solid #fff; 492 | border-radius: 0; 493 | color: #fff; 494 | font-size: 1.2rem; 495 | left: 0; 496 | line-height: 2.4rem; 497 | opacity: 0.8; 498 | padding: .5rem 2.5rem; 499 | position: absolute; 500 | text-transform: uppercase; 501 | top: 2rem; 502 | z-index: 99; 503 | &:active { 504 | background: rgba(0, 0, 0, .1); 505 | } 506 | } 507 | 508 | .home-info-container { 509 | margin-top: 18rem; 510 | h2, 511 | h4 { 512 | color: #fff; 513 | font-family: $googleFontExo $fontOSX; 514 | font-weight: lighter; 515 | text-shadow: 0 1px 1px #595959; 516 | &:hover { 517 | color: #efefef; 518 | text-shadow: 0 1px 1px #000; 519 | } 520 | } 521 | h2 { 522 | font-size: 4.2rem; 523 | } 524 | h4 { 525 | font-size: 2rem; 526 | letter-spacing: .8rem; 527 | } 528 | } 529 | 530 | .post-info-container { 531 | width: 74%; 532 | max-width: 76.8rem; 533 | margin: 13rem auto; 534 | } 535 | 536 | .post-page-tags { 537 | display: block; 538 | clear: both; 539 | text-align: left; 540 | margin-top: 1rem; 541 | a { 542 | color: #fff; 543 | font-size: 1.4rem; 544 | line-height: 1.6rem; 545 | display: inline-block; 546 | margin: .3rem .6rem; 547 | padding: 0rem 1rem; 548 | background: rgba(255, 255, 255, .3); 549 | border-radius: .3rem; 550 | &:first-child { 551 | margin-left: 0; 552 | } 553 | &:hover { 554 | background: rgba(255, 255, 255, .2); 555 | } 556 | } 557 | } 558 | 559 | .post-page-time { 560 | display: inline-block; 561 | float: left; 562 | font-family: $googleFontExo; 563 | padding-bottom: 1rem; 564 | text-align: left; 565 | margin-top: 1rem; 566 | font-size: 1.6rem; 567 | color: #fff; 568 | } 569 | 570 | .post-page-author { 571 | display: inline-block; 572 | float: left; 573 | padding-bottom: 1rem; 574 | text-align: left; 575 | margin-top: 1rem; 576 | font-size: 1.6rem; 577 | color: #fff; 578 | margin-left: 2rem; 579 | } 580 | 581 | .post-page-title { 582 | font-size: 4.2rem; 583 | line-height: 4.8rem; 584 | min-height: 9.4rem; 585 | color: #fff; 586 | margin: 0 auto; 587 | text-align: left; 588 | font-weight: lighter; 589 | // font-family: $fontOSX; 590 | font-family: $googleFontExo $fontOSX; 591 | @include word-wrap-multi; 592 | } 593 | 594 | // .share-fixed{ 595 | // position: absolute; 596 | // width: 100%; 597 | // height: 100%; 598 | // top: 0; 599 | // background:rgba(0,0,0,.3); 600 | // } 601 | .share { 602 | text-align: center; 603 | width: 100%; 604 | margin: 2rem auto; 605 | h4 { 606 | letter-spacing: .5rem; 607 | margin-top: 1.5rem; 608 | margin-bottom: 1.5rem; 609 | display: block; 610 | width: 10rem; 611 | text-align: center; 612 | background: rgba(255, 255, 255, .1); 613 | border: 2px solid #595959; 614 | padding: .5rem 1.6rem; 615 | border-radius: .3rem; 616 | margin: 0 auto; 617 | } 618 | } 619 | 620 | .share-icons { 621 | display: none; 622 | text-align: center; 623 | width: 30rem; 624 | height: 3rem; 625 | margin: 3rem auto; 626 | a { 627 | display: inline-block; 628 | // float: left; 629 | font-size: 2rem; 630 | line-height: 2.5rem; 631 | margin: 0 1rem 0 0; 632 | height: 2.5rem; 633 | i { 634 | font-size: 4rem; 635 | } 636 | } 637 | } 638 | 639 | .toggle-comment { 640 | h4 { 641 | letter-spacing: .5rem; 642 | margin-top: 1.5rem; 643 | margin-bottom: 1.5rem; 644 | display: block; 645 | width: 10rem; 646 | text-align: center; 647 | background: rgba(255, 255, 255, .1); 648 | border: 2px solid #595959; 649 | padding: .5rem 1.6rem; 650 | border-radius: .3rem; 651 | margin: 0 auto; 652 | } 653 | } 654 | 655 | #to-top { 656 | display: none; 657 | width: 48px; 658 | height: 48px; 659 | text-align: left; 660 | text-indent: -9999px; 661 | background: rgba(0, 0, 0, .6); 662 | border-radius: 50%; 663 | overflow: hidden; 664 | position: fixed; 665 | right: 20px; 666 | bottom: 20px; 667 | -khtml-opacity: .5; 668 | filter: alpha(opacity=50); 669 | opacity: .5; 670 | z-index: 1000; 671 | &:hover, 672 | &:active { 673 | background: rgba(0, 0, 0, .4); 674 | } 675 | } 676 | 677 | .to-top-wrap { 678 | width: 100%; 679 | height: 100%; 680 | position: relative; 681 | &:after { 682 | position: absolute; 683 | display: block; 684 | left: 50%; 685 | top: 50%; 686 | content: ''; 687 | width: 0; 688 | height: 0; 689 | margin-left: -10px; 690 | margin-top: -11px; 691 | transform: rotate(180deg); 692 | -webkit-transform: rotate(180deg); 693 | border-left: 10px solid transparent; 694 | border-right: 10px solid transparent; 695 | border-top: 10px solid rgba(255, 255, 255, .5); 696 | -webkit-animation-name: shine; 697 | -webkit-animation-duration: 1.5s; 698 | -webkit-animation-timing-function: linear; 699 | -webkit-animation-iteration-count: infinite; 700 | } 701 | &:before { 702 | position: absolute; 703 | display: block; 704 | left: 50%; 705 | top: 50%; 706 | content: ''; 707 | width: 0; 708 | height: 0; 709 | margin-left: -15px; 710 | margin-top: -12px; 711 | transform: rotate(180deg); 712 | -webkit-transform: rotate(180deg); 713 | border-left: 15px solid transparent; 714 | border-right: 15px solid transparent; 715 | border-top: 20px solid rgba(255, 255, 255, .5); 716 | -webkit-animation-name: shine; 717 | -webkit-animation-duration: 3s; 718 | -webkit-animation-timing-function: linear; 719 | -webkit-animation-iteration-count: infinite; 720 | } 721 | } 722 | 723 | .author { 724 | position: relative; 725 | background: #fff; 726 | margin-top: 5rem; 727 | width: 100%; 728 | font-family: 'Open Sans', sans-serif; 729 | } 730 | 731 | .author-image { 732 | -webkit-box-sizing: border-box; 733 | box-sizing: border-box; 734 | display: block; 735 | position: absolute; 736 | top: -40px; 737 | left: 50%; 738 | margin-left: -40px; 739 | width: 80px; 740 | height: 80px; 741 | border-radius: 100%; 742 | overflow: hidden; 743 | padding: 6px; 744 | background: #fff; 745 | z-index: 2; 746 | box-shadow: #E7EEF2 0 0 0 1px; 747 | .img { 748 | position: relative; 749 | display: block; 750 | width: 100%; 751 | height: 100%; 752 | background-size: cover; 753 | background-position: center center; 754 | border-radius: 100%; 755 | } 756 | } 757 | 758 | .author-detail { 759 | padding: 6.6rem 1.6rem 1.6rem; 760 | text-align: center; 761 | h4 { 762 | font-size: 1.8rem; 763 | margin: 0; 764 | a { 765 | font-size: 1.6rem; 766 | color: #999; 767 | &:hover { 768 | color: #666; 769 | } 770 | } 771 | } 772 | p { 773 | color: #333; 774 | margin: 1rem 0; 775 | font-size: 1.4rem; 776 | line-height: 1.75em; 777 | } 778 | } 779 | 780 | .author-meta { 781 | padding: 0; 782 | margin: 0; 783 | list-style: none; 784 | font-size: 1.4rem; 785 | line-height: 1; 786 | font-style: italic; 787 | color: #9EABB3; 788 | display: inline-block; 789 | margin: 0 auto; 790 | word-wrap: break-word; 791 | span { 792 | margin-right: 1rem; 793 | color: #9EABB3; 794 | a { 795 | color: #9EABB3; 796 | } 797 | } 798 | } 799 | 800 | .wechat-notice { 801 | margin: 1rem 0; 802 | display: none; 803 | a { 804 | img { 805 | display: block; 806 | width: 100%; 807 | max-width: 100%; 808 | } 809 | } 810 | h6 { 811 | margin-top: .5rem; 812 | font-size: 1.2rem; 813 | font-weight: lighter; 814 | line-height: 1.8rem; 815 | color: #333; 816 | } 817 | } 818 | 819 | .cover-image { 820 | display: none !important; 821 | } 822 | 823 | // 多说评论栏 824 | .comment-area { 825 | display: none; 826 | // min-height: 10rem; 827 | background: #fff; 828 | padding: 0 1.6rem; 829 | } 830 | 831 | .comment-area.toggle-up { 832 | display: block; 833 | -webkit-animation-name: toggle-up; 834 | -webkit-animation-duration: 0.5s; 835 | -webkit-animation-timing-function: linear; 836 | } 837 | 838 | @-webkit-keyframes animate-bg { 839 | from { 840 | background-position: 0 0; 841 | } 842 | to { 843 | background-position: 283px 212px; 844 | } 845 | } 846 | 847 | // .cta .bg { 848 | // -webkit-animation-name: animate-bg; 849 | // -webkit-animation-duration: 10s; 850 | // -webkit-animation-timing-function: linear; 851 | // -webkit-animation-iteration-count: infinite; 852 | // } 853 | @-webkit-keyframes shine { 854 | 0% { 855 | opacity: .1; 856 | } 857 | 25% { 858 | opacity: .2; 859 | } 860 | 50% { 861 | opacity: 1; 862 | } 863 | 75% { 864 | opacity: .2; 865 | } 866 | 100% { 867 | opacity: .1; 868 | } 869 | } 870 | 871 | @-webkit-keyframes toggle-up { 872 | 0% { 873 | opacity: 0; 874 | -webkit-transform: translate3d(0, 100px, 0); 875 | transform: translate3d(0, 100px, 0); 876 | } 877 | 100% { 878 | opacity: 1; 879 | -webkit-transform: none; 880 | transform: none; 881 | } 882 | } 883 | 884 | @charset "UTF-8"; 885 | 886 | /*! 887 | Animate.css - http://daneden.me/animate 888 | Licensed under the MIT license - http://opensource.org/licenses/MIT 889 | 890 | Copyright (c) 2014 Daniel Eden 891 | */ 892 | 893 | .animated { 894 | -webkit-animation-duration: 1s; 895 | animation-duration: 1s; 896 | -webkit-animation-fill-mode: both; 897 | animation-fill-mode: both; 898 | } 899 | 900 | .animated.infinite { 901 | -webkit-animation-iteration-count: infinite; 902 | animation-iteration-count: infinite; 903 | } 904 | 905 | .animated.hinge { 906 | -webkit-animation-duration: 2s; 907 | animation-duration: 2s; 908 | } 909 | 910 | @-webkit-keyframes fadeInUpBig { 911 | 0% { 912 | opacity: 0; 913 | -webkit-transform: translate3d(0, 2000px, 0); 914 | transform: translate3d(0, 2000px, 0); 915 | } 916 | 100% { 917 | opacity: 1; 918 | -webkit-transform: none; 919 | transform: none; 920 | } 921 | } 922 | 923 | @keyframes fadeInUpBig { 924 | 0% { 925 | opacity: 0; 926 | -webkit-transform: translate3d(0, 2000px, 0); 927 | transform: translate3d(0, 2000px, 0); 928 | } 929 | 100% { 930 | opacity: 1; 931 | -webkit-transform: none; 932 | transform: none; 933 | } 934 | } 935 | 936 | .fadeInUpBig { 937 | -webkit-animation-name: fadeInUpBig; 938 | animation-name: fadeInUpBig; 939 | } 940 | 941 | @-webkit-keyframes fadeOut { 942 | 0% { 943 | opacity: 1; 944 | } 945 | 100% { 946 | opacity: 0; 947 | } 948 | } 949 | 950 | @keyframes fadeOut { 951 | 0% { 952 | opacity: 1; 953 | } 954 | 100% { 955 | opacity: 0; 956 | } 957 | } 958 | 959 | @-webkit-keyframes fadeIn { 960 | 0% { 961 | opacity: 0; 962 | } 963 | 100% { 964 | opacity: 1; 965 | } 966 | } 967 | 968 | @keyframes fadeIn { 969 | 0% { 970 | opacity: 0; 971 | } 972 | 100% { 973 | opacity: 1; 974 | } 975 | } 976 | 977 | 978 | 979 | .fadeIn { 980 | -webkit-animation-name: fadeIn; 981 | animation-name: fadeIn; 982 | } 983 | -------------------------------------------------------------------------------- /css/sass/_fonts.scss: -------------------------------------------------------------------------------- 1 | /* 载入iconfont字体 */ 2 | 3 | 4 | @font-face {font-family: 'iconfont'; 5 | src: url(#{$fontPath}/iconfont.eot); /* IE9*/ 6 | src: url(#{$fontPath}/iconfont.eot?#iefix) format('embedded-opentype'), /* IE6-IE8 */ 7 | url(#{$fontPath}/iconfont.woff) format('woff'), /* chrome、firefox */ 8 | url(#{$fontPath}/iconfont.ttf) format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ 9 | url(#{$fontPath}/iconfont.svg#uxiconfont) format('svg'); /* iOS 4.1- */ 10 | } 11 | 12 | .iconfont{ 13 | font-family:"iconfont" !important; 14 | font-size:16px;font-style:normal; 15 | -webkit-font-smoothing: antialiased; 16 | -webkit-text-stroke-width: 0.2px; 17 | -moz-osx-font-smoothing: grayscale; 18 | display: inline-block; 19 | speak: none; 20 | } 21 | 22 | 23 | .iconfont{ 24 | vertical-align: middle; 25 | &:hover{ 26 | opacity: 0.6; 27 | color:#363636; 28 | } 29 | } 30 | 31 | .icon-self{color:red} 32 | .icon-weibo{ color:#E6162D} 33 | .icon-twitter{color:#2aa9e0} 34 | .icon-facebook{color:#204385} 35 | .icon-google{color:#176DEE} 36 | .icon-weixin{color:#75D140} 37 | .icon-qzone{color:#186CC6} 38 | .icon-github{color:#333333} 39 | .icon-douban{color:#279337} 40 | .icon-luolei{color:#6596C1} 41 | .icon-dribble{color:#F72D84} 42 | 43 | 44 | 45 | .icon-weibo-pure{ color:#E6162D} 46 | .icon-twitter-pure{color:#2aa9e0} 47 | .icon-github-pure{color:#333333} 48 | .icon-dribble-pure{color:#F72D84} 49 | .icon-weixin-pure{color:#75D140} 50 | .icon-instagram-pure{color:#B66F43} 51 | /* 自定义IconFont CSS 才用:before的形式 */ 52 | .single-post-inner{ 53 | .icon-local:before{ 54 | content: "\0f00ac"; 55 | } 56 | .icon-twitter:before{ 57 | content: "\00e763"; 58 | } 59 | .icon-qzone:before{ 60 | content: "\00e60d"; 61 | } 62 | .icon-weibo:before{ 63 | content: "\003432"; 64 | } 65 | .icon-facebook:before{ 66 | content: "\003433"; 67 | } 68 | .icon-google:before{ 69 | content: "\003434"; 70 | } 71 | .icon-github:before{ 72 | content: "\0f01ca"; 73 | } 74 | .icon-douban:before{ 75 | content: "\0f01c8"; 76 | } 77 | .icon-luolei:before{ 78 | content: "\00e60e" 79 | } 80 | 81 | } 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /css/sass/_mixins.scss: -------------------------------------------------------------------------------- 1 | 2 | // $imgPath:"../../img"; 3 | $imgPath:"../../assets/images"; 4 | $fontPath:"../../assets/fonts"; 5 | 6 | 7 | $fontBase:"Helvetica Neue",\5FAE\8F6F\96C5\9ED1,Tohoma; 8 | $fontOSX:'Hiragino Sans GB','Microsoft YaHei',微软雅黑,STHeiti,'WenQuanYi Micro Hei',Helvetica,Arial,sans-serif; 9 | $fontIOS:"HelveticaNeue-UltraLight","Helvetica Neue UltraLight"; 10 | 11 | $googleFontExo:"Exo"; 12 | 13 | 14 | @mixin word-wrap { 15 | white-space: nowrap; 16 | overflow: hidden; 17 | text-overflow: ellipsis; 18 | } 19 | 20 | @mixin word-wrap-multi{ 21 | white-space: normal; 22 | overflow: hidden; 23 | text-overflow: ellipsis; 24 | } 25 | -------------------------------------------------------------------------------- /css/sass/_normalize.scss: -------------------------------------------------------------------------------- 1 | /*! normalize.css v3.0.3 | MIT License | git.io/normalize */ 2 | 3 | /** 4 | * 1. Set default font family to sans-serif. 5 | * 2. Prevent iOS text size adjust after orientation change, without disabling 6 | * user zoom. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove default margin. 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Correct `block` display not defined for any HTML5 element in IE 8/9. 28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 29 | * and Firefox. 30 | * Correct `block` display not defined for `main` in IE 11. 31 | */ 32 | 33 | article, 34 | aside, 35 | details, 36 | figcaption, 37 | figure, 38 | footer, 39 | header, 40 | hgroup, 41 | main, 42 | menu, 43 | nav, 44 | section, 45 | summary { 46 | display: block; 47 | } 48 | 49 | /** 50 | * 1. Correct `inline-block` display not defined in IE 8/9. 51 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. 52 | */ 53 | 54 | audio, 55 | canvas, 56 | progress, 57 | video { 58 | display: inline-block; /* 1 */ 59 | vertical-align: baseline; /* 2 */ 60 | } 61 | 62 | /** 63 | * Prevent modern browsers from displaying `audio` without controls. 64 | * Remove excess height in iOS 5 devices. 65 | */ 66 | 67 | audio:not([controls]) { 68 | display: none; 69 | height: 0; 70 | } 71 | 72 | /** 73 | * Address `[hidden]` styling not present in IE 8/9/10. 74 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. 75 | */ 76 | 77 | [hidden], 78 | template { 79 | display: none; 80 | } 81 | 82 | /* Links 83 | ========================================================================== */ 84 | 85 | /** 86 | * Remove the gray background color from active links in IE 10. 87 | */ 88 | 89 | a { 90 | background-color: transparent; 91 | } 92 | 93 | /** 94 | * Improve readability when focused and also mouse hovered in all browsers. 95 | */ 96 | 97 | a:active, 98 | a:hover { 99 | outline: 0; 100 | } 101 | 102 | /* Text-level semantics 103 | ========================================================================== */ 104 | 105 | /** 106 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome. 107 | */ 108 | 109 | abbr[title] { 110 | border-bottom: 1px dotted; 111 | } 112 | 113 | /** 114 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. 115 | */ 116 | 117 | b, 118 | strong { 119 | font-weight: bold; 120 | } 121 | 122 | /** 123 | * Address styling not present in Safari and Chrome. 124 | */ 125 | 126 | dfn { 127 | font-style: italic; 128 | } 129 | 130 | /** 131 | * Address variable `h1` font-size and margin within `section` and `article` 132 | * contexts in Firefox 4+, Safari, and Chrome. 133 | */ 134 | 135 | h1 { 136 | font-size: 2em; 137 | margin: 0.67em 0; 138 | } 139 | 140 | /** 141 | * Address styling not present in IE 8/9. 142 | */ 143 | 144 | mark { 145 | background: #ff0; 146 | color: #000; 147 | } 148 | 149 | /** 150 | * Address inconsistent and variable font size in all browsers. 151 | */ 152 | 153 | small { 154 | font-size: 80%; 155 | } 156 | 157 | /** 158 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 159 | */ 160 | 161 | sub, 162 | sup { 163 | font-size: 75%; 164 | line-height: 0; 165 | position: relative; 166 | vertical-align: baseline; 167 | } 168 | 169 | sup { 170 | top: -0.5em; 171 | } 172 | 173 | sub { 174 | bottom: -0.25em; 175 | } 176 | 177 | /* Embedded content 178 | ========================================================================== */ 179 | 180 | /** 181 | * Remove border when inside `a` element in IE 8/9/10. 182 | */ 183 | 184 | img { 185 | border: 0; 186 | } 187 | 188 | /** 189 | * Correct overflow not hidden in IE 9/10/11. 190 | */ 191 | 192 | svg:not(:root) { 193 | overflow: hidden; 194 | } 195 | 196 | /* Grouping content 197 | ========================================================================== */ 198 | 199 | /** 200 | * Address margin not present in IE 8/9 and Safari. 201 | */ 202 | 203 | figure { 204 | margin: 1em 40px; 205 | } 206 | 207 | /** 208 | * Address differences between Firefox and other browsers. 209 | */ 210 | 211 | hr { 212 | -moz-box-sizing: content-box; 213 | box-sizing: content-box; 214 | height: 0; 215 | } 216 | 217 | /** 218 | * Contain overflow in all browsers. 219 | */ 220 | 221 | pre { 222 | overflow: auto; 223 | } 224 | 225 | /** 226 | * Address odd `em`-unit font size rendering in all browsers. 227 | */ 228 | 229 | code, 230 | kbd, 231 | pre, 232 | samp { 233 | font-family: monospace, monospace; 234 | font-size: 1em; 235 | } 236 | 237 | /* Forms 238 | ========================================================================== */ 239 | 240 | /** 241 | * Known limitation: by default, Chrome and Safari on OS X allow very limited 242 | * styling of `select`, unless a `border` property is set. 243 | */ 244 | 245 | /** 246 | * 1. Correct color not being inherited. 247 | * Known issue: affects color of disabled elements. 248 | * 2. Correct font properties not being inherited. 249 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. 250 | */ 251 | 252 | button, 253 | input, 254 | optgroup, 255 | select, 256 | textarea { 257 | color: inherit; /* 1 */ 258 | font: inherit; /* 2 */ 259 | margin: 0; /* 3 */ 260 | } 261 | 262 | /** 263 | * Address `overflow` set to `hidden` in IE 8/9/10/11. 264 | */ 265 | 266 | button { 267 | overflow: visible; 268 | } 269 | 270 | /** 271 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 272 | * All other form control elements do not inherit `text-transform` values. 273 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. 274 | * Correct `select` style inheritance in Firefox. 275 | */ 276 | 277 | button, 278 | select { 279 | text-transform: none; 280 | } 281 | 282 | /** 283 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 284 | * and `video` controls. 285 | * 2. Correct inability to style clickable `input` types in iOS. 286 | * 3. Improve usability and consistency of cursor style between image-type 287 | * `input` and others. 288 | */ 289 | 290 | button, 291 | html input[type="button"], /* 1 */ 292 | input[type="reset"], 293 | input[type="submit"] { 294 | -webkit-appearance: button; /* 2 */ 295 | cursor: pointer; /* 3 */ 296 | } 297 | 298 | /** 299 | * Re-set default cursor for disabled elements. 300 | */ 301 | 302 | button[disabled], 303 | html input[disabled] { 304 | cursor: default; 305 | } 306 | 307 | /** 308 | * Remove inner padding and border in Firefox 4+. 309 | */ 310 | 311 | button::-moz-focus-inner, 312 | input::-moz-focus-inner { 313 | border: 0; 314 | padding: 0; 315 | } 316 | 317 | /** 318 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 319 | * the UA stylesheet. 320 | */ 321 | 322 | input { 323 | line-height: normal; 324 | } 325 | 326 | /** 327 | * It's recommended that you don't attempt to style these elements. 328 | * Firefox's implementation doesn't respect box-sizing, padding, or width. 329 | * 330 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 331 | * 2. Remove excess padding in IE 8/9/10. 332 | */ 333 | 334 | input[type="checkbox"], 335 | input[type="radio"] { 336 | box-sizing: border-box; /* 1 */ 337 | padding: 0; /* 2 */ 338 | } 339 | 340 | /** 341 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain 342 | * `font-size` values of the `input`, it causes the cursor style of the 343 | * decrement button to change from `default` to `text`. 344 | */ 345 | 346 | input[type="number"]::-webkit-inner-spin-button, 347 | input[type="number"]::-webkit-outer-spin-button { 348 | height: auto; 349 | } 350 | 351 | /** 352 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome. 353 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome 354 | * (include `-moz` to future-proof). 355 | */ 356 | 357 | input[type="search"] { 358 | -webkit-appearance: textfield; /* 1 */ 359 | -moz-box-sizing: content-box; 360 | -webkit-box-sizing: content-box; /* 2 */ 361 | box-sizing: content-box; 362 | } 363 | 364 | /** 365 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. 366 | * Safari (but not Chrome) clips the cancel button when the search input has 367 | * padding (and `textfield` appearance). 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 | * Define consistent border, margin, and padding. 377 | */ 378 | 379 | fieldset { 380 | border: 1px solid #c0c0c0; 381 | margin: 0 2px; 382 | padding: 0.35em 0.625em 0.75em; 383 | } 384 | 385 | /** 386 | * 1. Correct `color` not being inherited in IE 8/9/10/11. 387 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 388 | */ 389 | 390 | legend { 391 | border: 0; /* 1 */ 392 | padding: 0; /* 2 */ 393 | } 394 | 395 | /** 396 | * Remove default vertical scrollbar in IE 8/9/10/11. 397 | */ 398 | 399 | textarea { 400 | overflow: auto; 401 | } 402 | 403 | /** 404 | * Don't inherit the `font-weight` (applied by a rule above). 405 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. 406 | */ 407 | 408 | optgroup { 409 | font-weight: bold; 410 | } 411 | 412 | /* Tables 413 | ========================================================================== */ 414 | 415 | /** 416 | * Remove most spacing between table cells. 417 | */ 418 | 419 | table { 420 | border-collapse: collapse; 421 | border-spacing: 0; 422 | } 423 | 424 | td, 425 | th { 426 | padding: 0; 427 | } 428 | 429 | -------------------------------------------------------------------------------- /css/sass/_print.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/css/sass/_print.scss -------------------------------------------------------------------------------- /css/sass/_sprite.scss: -------------------------------------------------------------------------------- 1 | /* 2 | SCSS variables are information about icon's compiled state, stored under its original file name 3 | 4 | .icon-home { 5 | width: $icon-home-width; 6 | } 7 | 8 | The large array-like variables contain all information about a single icon 9 | $icon-home: x y offset_x offset_y width height total_width total_height image_path; 10 | 11 | At the bottom of this section, we provide information about the spritesheet itself 12 | $spritesheet: width height image $spritesheet-sprites; 13 | */ 14 | $badge-name: 'badge'; 15 | $badge-x: 0px; 16 | $badge-y: 170px; 17 | $badge-offset-x: 0px; 18 | $badge-offset-y: -170px; 19 | $badge-width: 90px; 20 | $badge-height: 88px; 21 | $badge-total-width: 234px; 22 | $badge-total-height: 258px; 23 | $badge-image: 'sprite@2x.png'; 24 | $badge: 0px 170px 0px -170px 90px 88px 234px 258px 'sprite@2x.png' 'badge'; 25 | $clock-name: 'clock'; 26 | $clock-x: 90px; 27 | $clock-y: 110px; 28 | $clock-offset-x: -90px; 29 | $clock-offset-y: -110px; 30 | $clock-width: 50px; 31 | $clock-height: 60px; 32 | $clock-total-width: 234px; 33 | $clock-total-height: 258px; 34 | $clock-image: 'sprite@2x.png'; 35 | $clock: 90px 110px -90px -110px 50px 60px 234px 258px 'sprite@2x.png' 'clock'; 36 | $like-name: 'like'; 37 | $like-x: 174px; 38 | $like-y: 26px; 39 | $like-offset-x: -174px; 40 | $like-offset-y: -26px; 41 | $like-width: 38px; 42 | $like-height: 34px; 43 | $like-total-width: 234px; 44 | $like-total-height: 258px; 45 | $like-image: 'sprite@2x.png'; 46 | $like: 174px 26px -174px -26px 38px 34px 234px 258px 'sprite@2x.png' 'like'; 47 | $remind-name: 'remind'; 48 | $remind-x: 212px; 49 | $remind-y: 0px; 50 | $remind-offset-x: -212px; 51 | $remind-offset-y: 0px; 52 | $remind-width: 22px; 53 | $remind-height: 26px; 54 | $remind-total-width: 234px; 55 | $remind-total-height: 258px; 56 | $remind-image: 'sprite@2x.png'; 57 | $remind: 212px 0px -212px 0px 22px 26px 234px 258px 'sprite@2x.png' 'remind'; 58 | $sand-name: 'sand'; 59 | $sand-x: 140px; 60 | $sand-y: 60px; 61 | $sand-offset-x: -140px; 62 | $sand-offset-y: -60px; 63 | $sand-width: 34px; 64 | $sand-height: 50px; 65 | $sand-total-width: 234px; 66 | $sand-total-height: 258px; 67 | $sand-image: 'sprite@2x.png'; 68 | $sand: 140px 60px -140px -60px 34px 50px 234px 258px 'sprite@2x.png' 'sand'; 69 | $spritesheet-width: 234px; 70 | $spritesheet-height: 258px; 71 | $spritesheet-image: 'sprite@2x.png'; 72 | $spritesheet-sprites: $badge $clock $like $remind $sand; 73 | $spritesheet: 234px 258px 'sprite@2x.png' $spritesheet-sprites; 74 | 75 | /* 76 | The provided mixins are intended to be used with the array-like variables 77 | 78 | .icon-home { 79 | @include sprite-width($icon-home); 80 | } 81 | 82 | .icon-email { 83 | @include sprite($icon-email); 84 | } 85 | */ 86 | @mixin sprite-width($sprite) { 87 | width: nth($sprite, 5); 88 | } 89 | 90 | @mixin sprite-height($sprite) { 91 | height: nth($sprite, 6); 92 | } 93 | 94 | @mixin sprite-position($sprite) { 95 | $sprite-offset-x: nth($sprite, 3); 96 | $sprite-offset-y: nth($sprite, 4); 97 | background-position: $sprite-offset-x $sprite-offset-y; 98 | } 99 | 100 | @mixin sprite-image($sprite) { 101 | $sprite-image: nth($sprite, 9); 102 | background-image: url(#{$sprite-image}); 103 | } 104 | 105 | @mixin sprite($sprite) { 106 | @include sprite-image($sprite); 107 | @include sprite-position($sprite); 108 | @include sprite-width($sprite); 109 | @include sprite-height($sprite); 110 | } 111 | 112 | /* 113 | The `sprites` mixin generates identical output to the CSS template 114 | but can be overridden inside of SCSS 115 | 116 | @include sprites($spritesheet-sprites); 117 | */ 118 | @mixin sprites($sprites) { 119 | @each $sprite in $sprites { 120 | $sprite-name: nth($sprite, 10); 121 | .#{$sprite-name} { 122 | @include sprite($sprite); 123 | } 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /css/sass/style.scss: -------------------------------------------------------------------------------- 1 | @import "normalize"; 2 | // @import "webfont"; 3 | @import "mixins"; 4 | // @import "fonts"; 5 | // 载入图片精灵 6 | @import "sprite"; 7 | @import "fonts"; 8 | @import "base"; 9 | 10 | @media only screen and (max-width: 321px) { 11 | @import "321up"; 12 | } // end of media query 13 | @media only screen and (max-width: 361px) { 14 | @import "361up"; 15 | } // end of media query 16 | @media only screen and (max-width: 481px) { 17 | @import "481up"; 18 | } // end of media query 19 | @media only screen and (max-width: 768px) { 20 | @import "768up"; 21 | } // end of media query 22 | @media only screen and (min-width: 1240px) { 23 | @import "1024up"; 24 | } // end of media query 25 | @media only screen and (min-width: 1240px) { 26 | @import "1240up"; 27 | } // end of media query 28 | @media print { 29 | @import "print"; 30 | } // end of media query 31 | -------------------------------------------------------------------------------- /default.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{! Document Settings }} 6 | 7 | {{! Page Meta }} 8 | {{meta_title}} 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | {{! Styles'n'Scripts }} 18 | 19 | 20 | {{! Ghost outputs important style and meta data with this tag }} 21 | {{ghost_head}} 22 | 31 | 32 | 33 | 34 | {{! Everything else gets inserted here }} 35 | {{{body}}} 36 | 43 | 44 | {{! Ghost outputs important scripts and data with this tag }} 45 | 46 | 47 | {{! The main JavaScript file for Casper }} 48 | 49 | 50 | 51 | 52 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | /* 2 | 创建Gulp配置文件 3 | */ 4 | 5 | //引入 gulp 6 | var gulp = require('gulp'); 7 | 8 | //引入功能组件 9 | 10 | var compass = require('gulp-compass'); 11 | var concat = require('gulp-concat'); 12 | var uglify = require('gulp-uglify'); 13 | var sourcemaps = require('gulp-sourcemaps'); 14 | var del = require('del'); 15 | var jshint = require('gulp-jshint'); 16 | 17 | var sass = require('gulp-sass'); 18 | var sourcemaps = require('gulp-sourcemaps'); 19 | var pngquant = require('imagemin-pngquant'); 20 | 21 | 22 | var autoprefixer = require('gulp-autoprefixer'); 23 | var minifycss = require('gulp-minify-css'); 24 | var rename = require('gulp-rename'); 25 | // 图像处理 26 | var imagemin = require('gulp-imagemin'); 27 | var spritesmith = require('gulp.spritesmith'); 28 | var imageResize = require('gulp-image-resize'); 29 | 30 | 31 | // 错误处理 32 | var plumber = require("gulp-plumber"); 33 | 34 | // 设置相关路径 35 | var paths = { 36 | assets: './assets', 37 | sass: './css/sass/**/*', 38 | css: './css', 39 | js: './js/**/*', //js文件相关目录 40 | img: './img/**/*', //图片相关 41 | }; 42 | 43 | gulp.task('clean', function(cb) { 44 | del(['build'], cb); 45 | }); 46 | 47 | 48 | 49 | // Sass 处理 50 | gulp.task('sass', function() { 51 | gulp.src(paths.sass) 52 | .pipe(plumber()) 53 | .pipe(sourcemaps.init()) 54 | .pipe(sass()) 55 | .pipe(gulp.dest('css')) 56 | .pipe(concat('style.css')) 57 | .pipe(gulp.dest(paths.css)) 58 | .pipe(minifycss()) 59 | .pipe(sourcemaps.write({sourceRoot: '/css/sass'})) 60 | .pipe(rename('dev.min.css')) 61 | .pipe(gulp.dest('assets/css')); 62 | 63 | gulp.src(paths.sass) 64 | .pipe(plumber()) 65 | .pipe(sass()) 66 | .pipe(gulp.dest('css')) 67 | .pipe(concat('style.css')) 68 | .pipe(gulp.dest(paths.css)) 69 | .pipe(minifycss()) 70 | .pipe(rename('style.min.css')) 71 | .pipe(gulp.dest('assets/css')); 72 | 73 | }); 74 | 75 | 76 | // 图片精灵处理 77 | gulp.task('sprite', function () { 78 | var spriteData = gulp.src('img/sprite/*.png').pipe(spritesmith({ 79 | imgName: 'sprite@2x.png', 80 | cssName: '_sprite.scss', 81 | algorithm: 'alt-diagonal' 82 | }) 83 | ); 84 | spriteData.img.pipe(gulp.dest('./img/')); // 输出合成图片 85 | spriteData.css.pipe(gulp.dest('./css/sass/')); // 输出的CSS 86 | // spriteData.pipe(gulp.dest('path/to/output/')); 87 | }); 88 | 89 | 90 | // gulp.task('half', function () { 91 | // gulp.src('./img/*.png') 92 | // .pipe(imageResize({ 93 | // width : 100, 94 | // height : 100 95 | // })) 96 | // .pipe(gulp.dest('./img/1x/')); 97 | // }); 98 | 99 | // JS检查 100 | gulp.task('lint', function() { 101 | return gulp.src(paths.js) 102 | .pipe(plumber()) 103 | .pipe(jshint()) 104 | .pipe(jshint.reporter('default')); 105 | }); 106 | 107 | 108 | gulp.task('scripts', ['clean'], function() { 109 | // Minify and copy all JavaScript (except vendor scripts) 110 | // with sourcemaps all the way down 111 | return gulp.src(paths.js) 112 | .pipe(plumber()) 113 | .pipe(sourcemaps.init()).pipe(uglify()) 114 | .pipe(concat('all.min.js')) 115 | .pipe(sourcemaps.write()) 116 | .pipe(gulp.dest('assets/js')); 117 | }); 118 | 119 | 120 | // gulp.task('scripts', ['clean'], function() { 121 | // // Minify and copy all JavaScript (except vendor scripts) 122 | // // with sourcemaps all the way down 123 | // gulp.src(paths.js) 124 | // .pipe(plumber()) 125 | // .pipe(sourcemaps.init()) 126 | // .pipe(jshint()) 127 | // .pipe(jshint.reporter(stylish)) 128 | // .pipe(uglify()) 129 | // .pipe(concat('all.min.js')) 130 | // .pipe(gulp.dest('assets/js')) 131 | // .pipe(rename('dev.min.js')) 132 | // .pipe(sourcemaps.write()) 133 | // .pipe(gulp.dest('assets/js')); 134 | 135 | 136 | // gulp.src(paths.js) 137 | // .pipe(plumber()) 138 | // .pipe(jshint()) 139 | // .pipe(uglify()) 140 | // .pipe(concat('all.min.js')) 141 | // .pipe(gulp.dest('assets/js')) 142 | 143 | // }); 144 | 145 | 146 | 147 | 148 | // 处理图像 149 | gulp.task('image', function () { 150 | return gulp.src(paths.img) 151 | .pipe(imagemin({ 152 | progressive: true, 153 | svgoPlugins: [{removeViewBox: false}], 154 | use: [pngquant()] 155 | })) 156 | .pipe(gulp.dest('assets/images')); 157 | }); 158 | 159 | 160 | 161 | gulp.task('watch', function() { 162 | gulp.watch(paths.js, ['scripts']); 163 | gulp.watch(paths.sass, ['sass']); 164 | }); 165 | 166 | gulp.task('default', ['watch', 'scripts']); 167 | gulp.task('watch:base', ['watch']); 168 | -------------------------------------------------------------------------------- /human.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foru17/nevecoo/02e1fd2b1ffe38784e9bf9579bd33e39f1c1d977/human.txt -------------------------------------------------------------------------------- /index.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | 13 | {{! The main content area on the homepage }} 14 |
15 | {{! Each post will be output using this markup }} 16 | {{#foreach posts}} 17 | 18 |
26 |
27 | 28 | {{content words="0"}} 29 | 30 |
31 |
32 |

{{{title}}}

33 | 39 |
40 | 41 |
42 | 43 | {{!-- --}} 46 |
47 | 48 |
49 | 50 | {{/foreach}} 51 | 52 | {{!! After all the posts, we have the previous/next pagination links }} 53 | 54 | {{pagination}} 55 |
56 | 57 | 58 | -------------------------------------------------------------------------------- /js/base.js: -------------------------------------------------------------------------------- 1 | $.fn.extend({ 2 | isOnScreenVisible: function() { 3 | var win = $(window); 4 | var viewport = { 5 | top: win.scrollTop(), 6 | left: win.scrollLeft() 7 | }; 8 | viewport.right = viewport.left + win.width(); 9 | viewport.bottom = viewport.top + win.height(); 10 | 11 | var bounds = this.offset(); 12 | bounds.right = bounds.left + this.outerWidth(); 13 | bounds.bottom = bounds.top + this.outerHeight(); 14 | 15 | return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom)); 16 | } 17 | }); 18 | 19 | 20 | // ---------------------------------------------------------------------------------------------------- 21 | // ScrollMe 22 | // A jQuery plugin for adding simple scrolling effects to web pages 23 | // http://scrollme.nckprsn.com 24 | // ---------------------------------------------------------------------------------------------------- 25 | 26 | var scrollme = (function($) { 27 | // ---------------------------------------------------------------------------------------------------- 28 | // ScrollMe object 29 | 30 | var _this = {}; 31 | 32 | // ---------------------------------------------------------------------------------------------------- 33 | // Properties 34 | 35 | var $document = $(document); 36 | var $window = $(window); 37 | 38 | _this.body_height = 0; 39 | 40 | _this.viewport_height = 0; 41 | 42 | _this.viewport_top = 0; 43 | _this.viewport_bottom = 0; 44 | 45 | _this.viewport_top_previous = -1; 46 | 47 | _this.elements = []; 48 | _this.elements_in_view = []; 49 | 50 | _this.property_defaults = { 51 | 'opacity': 1, 52 | 'translatex': 0, 53 | 'translatey': 0, 54 | 'translatez': 0, 55 | 'rotatex': 0, 56 | 'rotatey': 0, 57 | 'rotatez': 0, 58 | 'scale': 1, 59 | 'scalex': 1, 60 | 'scaley': 1, 61 | 'scalez': 1 62 | }; 63 | 64 | _this.scrollme_selector = '.scrollme'; 65 | _this.animateme_selector = '.animateme'; 66 | 67 | _this.update_interval = 10; 68 | 69 | // Easing functions 70 | 71 | _this.easing_functions = { 72 | 'linear': function(x) { 73 | return x; 74 | }, 75 | 76 | 'easeout': function(x) { 77 | return x * x * x; 78 | }, 79 | 80 | 'easein': function(x) { 81 | x = 1 - x; 82 | return 1 - (x * x * x); 83 | }, 84 | 85 | 'easeinout': function(x) { 86 | if (x < 0.5) { 87 | return (4 * x * x * x); 88 | } else { 89 | x = 1 - x; 90 | return 1 - (4 * x * x * x); 91 | } 92 | } 93 | }; 94 | 95 | // Document events to bind initialisation to 96 | 97 | _this.init_events = [ 98 | 'ready', 99 | 'page:load', // Turbolinks 100 | 'page:change' // Turbolinks 101 | ]; 102 | 103 | // ---------------------------------------------------------------------------------------------------- 104 | // Initialisation conditions 105 | 106 | _this.init_if = function() { 107 | return true; 108 | } 109 | 110 | // ---------------------------------------------------------------------------------------------------- 111 | // Initialisation 112 | 113 | _this.init = function() { 114 | // Cancel if initialisation conditions not met 115 | 116 | if (!_this.init_if()) return false; 117 | 118 | // Load all elements to animate 119 | 120 | _this.init_elements(); 121 | 122 | // Get element & viewport sizes 123 | 124 | _this.on_resize(); 125 | 126 | // Recalculate heights & positions on resize and rotate 127 | 128 | $window.on('resize orientationchange', function() { 129 | _this.on_resize(); 130 | }); 131 | 132 | // Recalculate heights & positions when page is fully loaded + a bit just in case 133 | 134 | $window.load(function() { 135 | setTimeout(function() { 136 | _this.on_resize(); 137 | }, 100) 138 | }); 139 | 140 | // Start animating 141 | 142 | setInterval(_this.update, _this.update_interval); 143 | 144 | return true; 145 | } 146 | 147 | // ---------------------------------------------------------------------------------------------------- 148 | // Get list and pre-load animated elements 149 | 150 | _this.init_elements = function() { 151 | // For each reference element 152 | 153 | $(_this.scrollme_selector).each(function() { 154 | var element = {}; 155 | 156 | element.element = $(this); 157 | 158 | var effects = []; 159 | 160 | // For each animated element 161 | 162 | $(this).find(_this.animateme_selector).addBack(_this.animateme_selector).each(function() { 163 | // Get effect details 164 | 165 | var effect = {}; 166 | 167 | effect.element = $(this); 168 | 169 | effect.when = effect.element.data('when'); 170 | effect.from = effect.element.data('from'); 171 | effect.to = effect.element.data('to'); 172 | 173 | if (effect.element.is('[data-crop]')) { 174 | effect.crop = effect.element.data('crop'); 175 | } else { 176 | effect.crop = true; 177 | } 178 | 179 | if (effect.element.is('[data-easing]')) { 180 | effect.easing = _this.easing_functions[effect.element.data('easing')] 181 | } else { 182 | effect.easing = _this.easing_functions['easeout']; 183 | } 184 | 185 | // Get animated properties 186 | 187 | var properties = {}; 188 | 189 | if (effect.element.is('[data-opacity]')) properties.opacity = effect.element.data('opacity'); 190 | if (effect.element.is('[data-translatex]')) properties.translatex = effect.element.data('translatex'); 191 | if (effect.element.is('[data-translatey]')) properties.translatey = effect.element.data('translatey'); 192 | if (effect.element.is('[data-translatez]')) properties.translatez = effect.element.data('translatez'); 193 | if (effect.element.is('[data-rotatex]')) properties.rotatex = effect.element.data('rotatex'); 194 | if (effect.element.is('[data-rotatey]')) properties.rotatey = effect.element.data('rotatey'); 195 | if (effect.element.is('[data-rotatez]')) properties.rotatez = effect.element.data('rotatez'); 196 | if (effect.element.is('[data-scale]')) properties.scale = effect.element.data('scale'); 197 | if (effect.element.is('[data-scalex]')) properties.scalex = effect.element.data('scalex'); 198 | if (effect.element.is('[data-scaley]')) properties.scaley = effect.element.data('scaley'); 199 | if (effect.element.is('[data-scalez]')) properties.scalez = effect.element.data('scalez'); 200 | 201 | effect.properties = properties; 202 | 203 | effects.push(effect); 204 | }); 205 | 206 | element.effects = effects; 207 | 208 | _this.elements.push(element); 209 | }); 210 | } 211 | 212 | // ---------------------------------------------------------------------------------------------------- 213 | // Update elements 214 | 215 | _this.update = function() { 216 | window.requestAnimationFrame(function() { 217 | _this.update_viewport_position(); 218 | 219 | if (_this.viewport_top_previous != _this.viewport_top) { 220 | _this.update_elements_in_view(); 221 | _this.animate(); 222 | } 223 | 224 | _this.viewport_top_previous = _this.viewport_top; 225 | }); 226 | } 227 | 228 | // ---------------------------------------------------------------------------------------------------- 229 | // Animate stuff 230 | 231 | _this.animate = function() { 232 | // For each element in viewport 233 | 234 | var elements_in_view_length = _this.elements_in_view.length; 235 | 236 | for (var i = 0; i < elements_in_view_length; i++) { 237 | var element = _this.elements_in_view[i]; 238 | 239 | // For each effect 240 | 241 | var effects_length = element.effects.length; 242 | 243 | for (var e = 0; e < effects_length; e++) { 244 | var effect = element.effects[e]; 245 | 246 | // Get effect animation boundaries 247 | 248 | switch (effect.when) { 249 | case 'view': // Maintained for backwards compatibility 250 | case 'span': 251 | var start = element.top - _this.viewport_height; 252 | var end = element.bottom; 253 | break; 254 | 255 | case 'exit': 256 | var start = element.bottom - _this.viewport_height; 257 | var end = element.bottom; 258 | break; 259 | 260 | default: 261 | var start = element.top - _this.viewport_height; 262 | var end = element.top; 263 | break; 264 | } 265 | 266 | // Crop boundaries 267 | 268 | if (effect.crop) { 269 | if (start < 0) start = 0; 270 | if (end > (_this.body_height - _this.viewport_height)) end = _this.body_height - _this.viewport_height; 271 | } 272 | 273 | // Get scroll position of reference selector 274 | 275 | var scroll = (_this.viewport_top - start) / (end - start); 276 | 277 | // Get relative scroll position for effect 278 | 279 | var from = effect['from']; 280 | var to = effect['to']; 281 | 282 | var length = to - from; 283 | 284 | var scroll_relative = (scroll - from) / length; 285 | 286 | // Apply easing 287 | 288 | var scroll_eased = effect.easing(scroll_relative); 289 | 290 | // Get new value for each property 291 | 292 | var opacity = _this.animate_value(scroll, scroll_eased, from, to, effect, 'opacity'); 293 | var translatey = _this.animate_value(scroll, scroll_eased, from, to, effect, 'translatey'); 294 | var translatex = _this.animate_value(scroll, scroll_eased, from, to, effect, 'translatex'); 295 | var translatez = _this.animate_value(scroll, scroll_eased, from, to, effect, 'translatez'); 296 | var rotatex = _this.animate_value(scroll, scroll_eased, from, to, effect, 'rotatex'); 297 | var rotatey = _this.animate_value(scroll, scroll_eased, from, to, effect, 'rotatey'); 298 | var rotatez = _this.animate_value(scroll, scroll_eased, from, to, effect, 'rotatez'); 299 | var scale = _this.animate_value(scroll, scroll_eased, from, to, effect, 'scale'); 300 | var scalex = _this.animate_value(scroll, scroll_eased, from, to, effect, 'scalex'); 301 | var scaley = _this.animate_value(scroll, scroll_eased, from, to, effect, 'scaley'); 302 | var scalez = _this.animate_value(scroll, scroll_eased, from, to, effect, 'scalez'); 303 | 304 | // Override scale values 305 | 306 | if ('scale' in effect.properties) { 307 | scalex = scale; 308 | scaley = scale; 309 | scalez = scale; 310 | } 311 | 312 | // Update properties 313 | 314 | effect.element.css({ 315 | 'opacity': opacity, 316 | 'transform': 'translate3d( ' + translatex + 'px , ' + translatey + 'px , ' + translatez + 'px ) rotateX( ' + rotatex + 'deg ) rotateY( ' + rotatey + 'deg ) rotateZ( ' + rotatez + 'deg ) scale3d( ' + scalex + ' , ' + scaley + ' , ' + scalez + ' )', 317 | '-webkit-transform': 'translate3d( ' + translatex + 'px , ' + translatey + 'px , ' + translatez + 'px ) rotateX( ' + rotatex + 'deg ) rotateY( ' + rotatey + 'deg ) rotateZ( ' + rotatez + 'deg ) scale3d( ' + scalex + ' , ' + scaley + ' , ' + scalez + ' )', 318 | }); 319 | } 320 | } 321 | } 322 | 323 | // ---------------------------------------------------------------------------------------------------- 324 | // Calculate property values 325 | 326 | _this.animate_value = function(scroll, scroll_eased, from, to, effect, property) { 327 | var value_default = _this.property_defaults[property]; 328 | 329 | // Return default value if property is not animated 330 | 331 | if (!(property in effect.properties)) return value_default; 332 | 333 | var value_target = effect.properties[property]; 334 | 335 | var forwards = (to > from) ? true : false; 336 | 337 | // Return boundary value if outside effect boundaries 338 | 339 | if (scroll < from && forwards) { 340 | return value_default; 341 | } 342 | if (scroll > to && forwards) { 343 | return value_target; 344 | } 345 | 346 | if (scroll > from && !forwards) { 347 | return value_default; 348 | } 349 | if (scroll < to && !forwards) { 350 | return value_target; 351 | } 352 | 353 | // Calculate new property value 354 | 355 | var new_value = value_default + (scroll_eased * (value_target - value_default)); 356 | 357 | // Round as required 358 | 359 | switch (property) { 360 | case 'opacity': 361 | new_value = new_value.toFixed(2); 362 | break; 363 | case 'translatex': 364 | new_value = new_value.toFixed(0); 365 | break; 366 | case 'translatey': 367 | new_value = new_value.toFixed(0); 368 | break; 369 | case 'translatez': 370 | new_value = new_value.toFixed(0); 371 | break; 372 | case 'rotatex': 373 | new_value = new_value.toFixed(1); 374 | break; 375 | case 'rotatey': 376 | new_value = new_value.toFixed(1); 377 | break; 378 | case 'rotatez': 379 | new_value = new_value.toFixed(1); 380 | break; 381 | case 'scale': 382 | new_value = new_value.toFixed(3); 383 | break; 384 | default: 385 | break; 386 | } 387 | 388 | // Done 389 | 390 | return new_value; 391 | } 392 | 393 | // ---------------------------------------------------------------------------------------------------- 394 | // Update viewport position 395 | 396 | _this.update_viewport_position = function() { 397 | _this.viewport_top = $window.scrollTop(); 398 | _this.viewport_bottom = _this.viewport_top + _this.viewport_height; 399 | } 400 | 401 | // ---------------------------------------------------------------------------------------------------- 402 | // Update list of elements in view 403 | 404 | _this.update_elements_in_view = function() { 405 | _this.elements_in_view = []; 406 | 407 | var elements_length = _this.elements.length; 408 | 409 | for (var i = 0; i < elements_length; i++) { 410 | if ((_this.elements[i].top < _this.viewport_bottom) && (_this.elements[i].bottom > _this.viewport_top)) { 411 | _this.elements_in_view.push(_this.elements[i]); 412 | } 413 | } 414 | } 415 | 416 | // ---------------------------------------------------------------------------------------------------- 417 | // Stuff to do on resize 418 | 419 | _this.on_resize = function() { 420 | // Update viewport/element data 421 | 422 | _this.update_viewport(); 423 | _this.update_element_heights(); 424 | 425 | // Update display 426 | 427 | _this.update_viewport_position(); 428 | _this.update_elements_in_view(); 429 | _this.animate(); 430 | } 431 | 432 | // ---------------------------------------------------------------------------------------------------- 433 | // Update viewport parameters 434 | 435 | _this.update_viewport = function() { 436 | _this.body_height = $document.height(); 437 | _this.viewport_height = $window.height(); 438 | } 439 | 440 | // ---------------------------------------------------------------------------------------------------- 441 | // Update height of animated elements 442 | 443 | _this.update_element_heights = function() { 444 | var elements_length = _this.elements.length; 445 | 446 | for (var i = 0; i < elements_length; i++) { 447 | var element_height = _this.elements[i].element.outerHeight(); 448 | var position = _this.elements[i].element.offset(); 449 | 450 | _this.elements[i].height = element_height; 451 | _this.elements[i].top = position.top; 452 | _this.elements[i].bottom = position.top + element_height; 453 | } 454 | } 455 | 456 | // ---------------------------------------------------------------------------------------------------- 457 | // Bind initialisation 458 | 459 | $document.on(_this.init_events.join(' '), function() { 460 | _this.init(); 461 | }); 462 | 463 | // ---------------------------------------------------------------------------------------------------- 464 | 465 | return _this; 466 | 467 | // ---------------------------------------------------------------------------------------------------- 468 | 469 | }); 470 | 471 | 472 | 473 | var Duoshuo = { 474 | 475 | dataThreadKey: location.protocol + '//' + location.host + location.pathname, 476 | 477 | init: function() { 478 | Duoshuo.toggleBox(); 479 | }, 480 | 481 | toggleBox: function() { 482 | 483 | $('.toggle-comment').on('click', function(container) { 484 | // console.log('开启评论'); 485 | if ($('.comment-area').has('div').length > 0) { 486 | $('.comment-area').empty(); 487 | return; 488 | } 489 | var el = document.createElement('div'); 490 | el.setAttribute('data-thread-key', Duoshuo.dataThreadKey); 491 | el.setAttribute('data-url', location.href); 492 | el.setAttribute('data-title', $('title').html()); 493 | DUOSHUO.EmbedThread(el); 494 | $('.comment-area').append(el); 495 | 496 | if ($('.comment-area').has('div').length > 0) { 497 | setTimeout(function() { 498 | $('.comment-area').addClass('toggle-up'); 499 | }, 500) 500 | 501 | } 502 | 503 | setTimeout(function() { 504 | if ($('.comment-area').isOnScreenVisible() == true) { 505 | $('.toggle-comment').addClass('animated fadeOut').fadeOut(500) 506 | } 507 | }, 1000) 508 | 509 | 510 | 511 | }) 512 | 513 | } 514 | } 515 | 516 | 517 | 518 | 519 | var General = { 520 | isWeixin: false, 521 | init: function() { 522 | General.scrollToPos(); 523 | General.checkKey(); 524 | General.updateImageWidth(); 525 | var UA = navigator.userAgent.toLowerCase(); 526 | 527 | if (UA.match(/MicroMessenger/i) == "micromessenger") { 528 | General.isWeixin = true; 529 | } 530 | }, 531 | 532 | //模拟鼠标上下滚动 533 | checkKey: function(e) { 534 | e = e || window.event; 535 | if (e.keyCode == '74') { 536 | console.log('按下键盘'); 537 | $('html,body').stop(); 538 | $('html,body').animate({ 539 | scrollTop: $(window).stop().scrollTop() + 200 540 | }, 'fast') 541 | } else if (e.keyCode == '75') { 542 | $('html,body').stop(); 543 | $('html,body').animate({ 544 | scrollTop: $(window).stop().scrollTop() - 200 545 | }, 'fast') 546 | } 547 | }, 548 | 549 | updateImageWidth: function() { 550 | var $postContent = $(".post-content"); 551 | $postContent.fitVids(); 552 | 553 | function updateImageWidth() { 554 | var $this = $(this), 555 | contentWidth = $postContent.outerWidth(), // Width of the content 556 | imageWidth = this.naturalWidth; // Original image resolution 557 | 558 | if (imageWidth >= contentWidth) { 559 | $this.addClass('full-img'); 560 | } else { 561 | $this.removeClass('full-img'); 562 | } 563 | } 564 | 565 | var $img = $(".single-post-inner img").on('load', updateImageWidth); 566 | 567 | function casperFullImg() { 568 | $img.each(updateImageWidth); 569 | } 570 | 571 | casperFullImg(); 572 | }, 573 | 574 | /*给文章中的url添加iconfont方便识别*/ 575 | urlIconlize: function(url) { 576 | var domain, 577 | _output; 578 | var iconMap = { /*索引 可在这里添加匹配规则*/ 579 | 'twitter': 'icon-twitter', 580 | 'qzone': 'icon-qzone', 581 | 'weibo': 'icon-weibo', 582 | 'facebook': 'icon-facebook', 583 | 'github': 'icon-github', 584 | 'douban': 'icon-douban', 585 | 'google': 'icon-google', 586 | 'luolei': 'icon-luolei', 587 | 'dribble': 'icon-dribble' 588 | 589 | } 590 | 591 | for (var name in iconMap) { 592 | if (typeof iconMap[name] !== 'function') { 593 | var MapKey = name; 594 | if (url.indexOf(MapKey) >= 0) { 595 | domain = MapKey; 596 | _output = iconMap[MapKey]; 597 | } 598 | } 599 | } 600 | 601 | return _output; 602 | }, 603 | 604 | addIcons: function() { 605 | /*给博客文章地址url添加ico识别*/ 606 | $('.single-post-inner p a:not(:has(img))').each(function(i) { 607 | var _src = $(this).attr('href'); 608 | var tmp = document.createElement('a'); 609 | tmp.href = _src; 610 | _selfDomain = tmp.hostname; 611 | General.urlIconlize(_selfDomain); 612 | console.log(_selfDomain); 613 | //$(this).append(urlIconlize(_selfDomain)); 614 | $(this).prepend(''); 615 | var _selfColor = $(this).find('i').css('color'), 616 | _originalColor = $(this).css('color'); 617 | 618 | /*鼠标悬浮时*/ 619 | $(this).hover(function() { 620 | $(this).css('color', _selfColor); 621 | $(this).addClass('animated pulse'); 622 | }, function() { 623 | $(this).css('color', _originalColor); 624 | $(this).removeClass('animated pulse'); 625 | }); 626 | 627 | }); 628 | }, 629 | 630 | //平滑滚动到顶部 631 | scrollToPos: function(position) { 632 | var STR_TO_TOP = '我要飞到最高', 633 | coverHeight = position || $(window).height(); //获得图片高度 634 | var button = $('
').appendTo('body'); 635 | $(window).scroll(function() { 636 | if ($(window).scrollTop() > $(window).height()) { 637 | button.fadeIn(500); 638 | } else { 639 | button.fadeOut(500); 640 | } 641 | }); 642 | 643 | button.click(function(e) { 644 | e.preventDefault(); 645 | if ($(window).width() > 768) { 646 | $('html,body').animate({ 647 | scrollTop: 0 648 | }, 600, function() { 649 | window.location.hash = '#'; 650 | }); 651 | } else { 652 | $('html,body').animate({ 653 | scrollTop: coverHeight - 100 654 | }, 600, function() { 655 | window.location.hash = '#'; 656 | }); 657 | } 658 | 659 | console.log('我跳'); 660 | }) 661 | }, 662 | //处理屏幕变化时 663 | resize: function() { 664 | visualContainerWidh = $(window).width(); 665 | // contentWidth=$('.post-content').width(); 666 | // $('.single-post-inner img').each(function() { 667 | // var _img = $(this); 668 | // checkImg(_img); 669 | // }) 670 | } 671 | 672 | 673 | 674 | } 675 | 676 | $(document).ready(function() { 677 | General.init(); 678 | if (General.isWeixin == false) { 679 | if ($(window).width() > 768) { 680 | console.log('只有大屏和微信上才出动画') 681 | scrollme($); 682 | } 683 | } 684 | 685 | // 文章页 686 | if ($('body').hasClass('post-template')) { 687 | General.updateImageWidth(); 688 | $('img[alt="cover"]').addClass('cover-image'); 689 | General.addIcons(); 690 | 691 | $('.share h4').on('click', function() { 692 | $(this).fadeOut(20); 693 | $('.share-icons').css('display', 'block').addClass('fadeIn animated') 694 | }) 695 | 696 | 697 | Duoshuo.init(); 698 | $('.single-post-inner p:has(img)').each(function() { 699 | var _this = $(this); 700 | _this.addClass('with-img'); 701 | 702 | if (_this.isOnScreenVisible() == true) { 703 | _this.addClass('with-img').addClass('already-visible'); 704 | } 705 | }) 706 | } 707 | 708 | // 列表页 709 | 710 | if ($('body').hasClass('archive-template') || $('body').hasClass('home-template')) { 711 | 712 | 713 | if ($(window).width() > 768) {} 714 | $('.post-in-list').each(function() { 715 | var _this = $(this); 716 | if (_this.isOnScreenVisible() == true) { 717 | _this.addClass('already-visible') 718 | } 719 | }) 720 | 721 | 722 | $('.post-excerpt').each(function() { 723 | var _this = $(this); 724 | if (_this.has('img').length == 0) { 725 | console.log('没有图片'); 726 | _this.append('') 727 | } else { 728 | console.log('With'); 729 | } 730 | }) 731 | } 732 | 733 | 734 | $('.arrow_down').click(function() { 735 | $('html,body').animate({ 736 | scrollTop: $(window).height() - 20 737 | }, 1000, function() { 738 | // window.location.hash = '#'; 739 | }); 740 | return false; 741 | }) 742 | 743 | 744 | $(window).scroll(function() { 745 | 746 | if ($(window).scrollTop() > 50) { 747 | // $('.nav-header').removeClass('hide').addClass('fadeInDownBig animated') 748 | } 749 | 750 | 751 | if ($('body').hasClass('post-template')) { 752 | if ($('.share-icons').isOnScreenVisible() == false) { 753 | $('.share-icons').removeClass('fadeInUpBig animated').css('display', 'none') 754 | $('.share h4').css('display', 'block'); 755 | } 756 | if (General.isWeixin == true) { 757 | if ($('.copyright').isOnScreenVisible() == true) { 758 | console.log('显示了'); 759 | $('.wechat-notice').css('display', 'block').addClass('fadeInUpBig animated') 760 | } 761 | 762 | } 763 | } 764 | 765 | if ($('body').hasClass('archive-template') || $('body').hasClass('home-template')) { 766 | $('.post-in-list').each(function() { 767 | var _this = $(this); 768 | if (_this.isOnScreenVisible() == true && _this.hasClass('already-visible') != true) { 769 | // _this.addClass('fadeInUpBig animated') 770 | } 771 | }) 772 | } 773 | 774 | }) 775 | 776 | }) 777 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nevecoo", 3 | "version": "0.0.3", 4 | "author": "@foru17", 5 | "devDependencies": { 6 | "del": "^1.1.1", 7 | "gulp": "^3.8.10", 8 | "gulp-autoprefixer": "^2.1.0", 9 | "gulp-compass": "^2.0.3", 10 | "gulp-concat": "^2.4.3", 11 | "gulp-image-resize": "^0.6.0", 12 | "gulp-imagemin": "^2.1.0", 13 | "gulp-jshint": "^1.9.0", 14 | "gulp-minify-css": "^0.4.3", 15 | "gulp-plumber": "^0.6.6", 16 | "gulp-rename": "^1.2.0", 17 | "gulp-sass": "^1.3.2", 18 | "gulp-sourcemaps": "^1.3.0", 19 | "gulp-stylus": "^2.0.0", 20 | "gulp-uglify": "^1.1.0", 21 | "gulp.spritesmith": "^2.5.0", 22 | "imagemin-pngquant": "^4.0.0", 23 | "jshint-stylish": "^1.0.1" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /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 | {{! Everything inside the #post tags pulls data from the page }} 7 | {{#post}} 8 | 9 |
10 | 14 |
15 | 16 |
17 | 18 |
19 | {{! Everything inside the #post tags pulls data from the post }} 20 | 21 |
22 |

{{title}}

23 |
24 | 25 |
26 | {{content}} 27 |
28 | 29 |
30 | 31 |
32 | {{/post}} 33 | -------------------------------------------------------------------------------- /partials/loop.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{! This is the post loop - each post will be output using this markup }} 3 | {{#foreach posts}} 4 |
5 |
6 | 7 | {{content words="0"}} 8 | 9 |
10 |
11 |

{{{title}}}

12 | 18 |
19 | 20 |
21 | 22 | {{!-- --}} 25 |
26 |
27 | {{/foreach}} 28 | 29 | {{! Previous/next page links - displayed on every page }} 30 | {{pagination}} 31 | -------------------------------------------------------------------------------- /post.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{! The comment above "< default" means - insert everything in this file into 4 | the {body} of the default.hbs template, which contains our header/footer. }} 5 | 6 | {{! Everything inside the #post tags pulls data from the post }} 7 | {{#post}} 8 | 9 | 10 | 35 | 36 | 37 | 38 | 39 |
40 | 41 |
42 | 43 |
44 |
45 | {{content}} 46 |
47 |
48 | 49 | 50 | {{#author}} 51 |
52 | {{#if image}} 53 |
54 | {{name}}'s Picture 55 |
56 | {{/if}} 57 | 58 |
59 |

{{name}}

60 | {{#if bio}} 61 |

{{bio}}

62 | {{else}} 63 |

Read more posts by this author.

64 | {{/if}} 65 |
66 | {{#if location}} 67 | {{location}} 68 | {{/if}} 69 | {{#if website}} 70 | {{website}} 71 | {{/if}} 72 |
73 | 74 |
75 |
76 | {{/author}} 77 | 78 | 79 | 80 | 81 |
82 | 83 | 109 | 110 |
111 |

查看评论

112 |
113 | 114 |
115 | {{!--
--}} 116 |
117 |
118 | 119 | 122 | 123 | {{/post}} 124 | -------------------------------------------------------------------------------- /tag.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | {{! The tag above means - insert everything in this file into the {body} of the default.hbs template }} 3 | 4 | {{! If we have a tag cover, display that - else blog cover - else nothing }} 5 | 15 | 16 | 17 | {{! The main content area on the homepage }} 18 |
19 | 20 | {{! The tag below includes the post loop - partials/loop.hbs }} 21 | {{> "loop"}} 22 | 23 |
24 | --------------------------------------------------------------------------------