├── .gitignore ├── README.md ├── _config.yml ├── bower.json ├── gulpfile.js ├── languages └── zh-cn.yml ├── layout ├── _partial │ ├── about.ejs │ ├── archive.ejs │ ├── include │ │ ├── disqus.ejs │ │ ├── duoshuo.ejs │ │ ├── footer.ejs │ │ ├── head.ejs │ │ ├── header.ejs │ │ ├── pagination.ejs │ │ ├── scripts.ejs │ │ └── sidebar.ejs │ ├── index.ejs │ ├── links.ejs │ ├── post.ejs │ └── tags.ejs ├── about.ejs ├── all-archives.ejs ├── index.ejs ├── links.ejs ├── post.ejs └── tags.ejs ├── package.json ├── scripts └── helpers │ └── func.js └── source ├── _css ├── include │ ├── _core.scss │ ├── _header.scss │ ├── _iconfont.scss │ ├── _layout.scss │ ├── _main.scss │ ├── _markdown.scss │ └── _sidebar.scss ├── mixins │ ├── _query.scss │ └── _variables.scss └── style.scss ├── _fonts ├── iconfont.eot ├── iconfont.svg ├── iconfont.ttf └── iconfont.woff ├── _images ├── cover.jpg ├── favicon.png └── gravatar.jpg ├── _js └── meizi.js └── static ├── css └── style.css ├── fonts ├── iconfont.eot ├── iconfont.svg ├── iconfont.ttf └── iconfont.woff ├── images ├── cover.jpg ├── favicon.png └── gravatar.jpg └── js └── meizi.js /.gitignore: -------------------------------------------------------------------------------- 1 | .sass-cache/ 2 | node_modules/ 3 | debug.log 4 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hexo-theme-meizi 2 | 3 | [demo](https://imochen.com) 4 | 5 | ## 怎么使用 6 | 7 | ### 安装Hexo 8 | 9 | ```bash 10 | npm install hexo-cli -g 11 | ``` 12 | ### 初始化项目 13 | ```bash 14 | hexo init blog 15 | cd blog 16 | npm install 17 | hexo server --debug 18 | ``` 19 | 20 | ### 安装Meizi主题 21 | ```bash 22 | cd theme 23 | git clone https://github.com/imochen/hexo-theme-meizi.git 24 | mv hexo-theme-meizi meizi 25 | ``` 26 | 27 | ### 配置主题 28 | 29 | 在根目录找到`_config.yml`,将theme改为`meizi` 30 | 31 | ```javascript 32 | theme: meizi 33 | ``` 34 | 35 | ### 初始化主题 36 | 37 | #### 友情链接页面初始化 38 | 39 | ```bash 40 | hexo new page links 41 | ``` 42 | 打开新创建的`links/index.md` 43 | 修改其内容为 44 | ```md 45 | title: "友情链接" 46 | layout: "links" 47 | --- 48 | 49 | 50 | 51 | - [JerryQu 的小站](https://imququ.com/)(万能的屈屈大神) 52 | 这样前面会带一个小锁,标明是 https 的站点 53 | ``` 54 | 55 | #### 关于我页面初始化 56 | ```bash 57 | hexo new page about 58 | ``` 59 | 打开新创建的`about/index.md` 60 | 修改其内容为 61 | ```md 62 | title: "关于我" 63 | layout: "about" 64 | --- 65 | 66 | 67 | ``` 68 | 69 | #### 归档页面初始化 70 | ```bash 71 | hexo new page archive 72 | ``` 73 | 打开新创建的`archive/index.md` 74 | 修改其内容为,里面无需再追加任何内容 75 | ```md 76 | title: "归档" 77 | layout: "all-archives" 78 | --- 79 | ``` 80 | 81 | #### 标签页面初始化 82 | ```bash 83 | hexo new page tags 84 | ``` 85 | 打开新创建的`tags/index.md` 86 | 修改其内容为,里面无需再追加任何内容 87 | ```md 88 | title: "标签" 89 | layout: "tags" 90 | --- 91 | ``` 92 | 93 | ### 启动预览 94 | 95 | 重新启动Hexo 96 | ```bash 97 | hexo server --debug 98 | ``` 99 | 100 | ## 二次开发 101 | 102 | ### 安装开发依赖工具 103 | 104 | 进入主题目录,安装依赖 105 | ```bash 106 | npm install 107 | ``` 108 | 109 | 安装完成后启动gulp任务即可 110 | 111 | ```bash 112 | gulp watch 113 | ``` -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | #图片目录配置 2 | image_dir : static/images/ 3 | 4 | favicon: favicon.png 5 | 6 | sidebar_behavior: 1 7 | 8 | #sidebar_bg: cover.jpg 9 | 10 | #用户配置 11 | author: 12 | #用户名称 13 | name: 墨尘 14 | #用户头像 15 | gravatar: gravatar.jpg 16 | 17 | disqus_shortname: mochen 18 | duoshuo_shortname: 19 | #swiftype_install_key: w8FFTKFNZed2tJN2ZA6p 20 | 21 | #侧栏配置 22 | #以下配置均无容错处理,大家都是程序员,配置错误请不要找作者。 23 | sidebar: 24 | menu: 25 | home: 26 | title: global.home 27 | url: / 28 | icon: home 29 | # categories: 30 | # title: global.categories 31 | # url: /categories 32 | # icon: bookmark 33 | archives: 34 | title: global.archives 35 | url: /archive/ 36 | icon: archive 37 | tags: 38 | title: global.tags 39 | url: /tags/ 40 | icon: tags 41 | # search: 42 | # title: global.search 43 | # url: /#search 44 | # icon: search 45 | # class: st-search-show-outputs 46 | about: 47 | title: global.about 48 | url: /about/ 49 | icon: user 50 | links: 51 | title: global.link 52 | url: /links/ 53 | icon: link 54 | author_links: 55 | github: 56 | title: global.github 57 | url: https://github.com/imochen 58 | icon: github 59 | # stack_overflow: 60 | # title: global.stack_overflow 61 | # url: http://stackoverflow.com/users 62 | # icon: stackoverflow 63 | # twitter: 64 | # title: global.twitter 65 | # url: https://twitter.com/ 66 | # icon: twitter 67 | weibo: 68 | title: global.weibo 69 | url: http://weibo.com/677612322/ 70 | icon: weibo 71 | # weixin: 72 | # title: global.weixin 73 | # url: https://weixin.com/ 74 | # icon: weixin 75 | # facebook: 76 | # title: global.facebook 77 | # url: https://facebook.com/ 78 | # icon: facebook 79 | # google_plus: 80 | # title: global.google_plus 81 | # url: https://plus.google.com/ 82 | # icon: googleplus 83 | # linked_in: 84 | # title: global.linkedin 85 | # url: https://www.linkedin.com/profile/ 86 | # icon: linkedin 87 | # mail: 88 | # title: global.mail 89 | # url: mailto 90 | # icon: mail 91 | rss: 92 | rss: 93 | title: global.rss 94 | url: /atom.xml 95 | icon: rss -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-theme-meizi", 3 | "description": "a theme for hexo by mochen", 4 | "main": "index.js", 5 | "authors": [ 6 | "mochen " 7 | ], 8 | "license": "MIT", 9 | "homepage": "https://github.com/imochen/hexo-theme-meizi", 10 | "moduleType": [], 11 | "ignore": [ 12 | "**/.*", 13 | "node_modules", 14 | "bower_components", 15 | "test", 16 | "tests" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var sass = require('gulp-ruby-sass'); //sass编译 3 | var minifyCss = require('gulp-minify-css'); //css压缩 4 | var autoprefixer = require('gulp-autoprefixer'); //自动补全前缀 5 | var uglify = require('gulp-uglify'); //js压缩 6 | var htmlmin = require('gulp-htmlmin'); //html压缩 7 | var path = require('path'); //path 8 | 9 | 10 | var conf = { 11 | src : { 12 | css : './source/_css/**/*', 13 | js : './source/_js/*.js', 14 | fonts : './source/_fonts/**/*', 15 | images : './source/_images/**/*' 16 | }, 17 | dest : { 18 | css : './source/static/css', 19 | js : './source/static/js', 20 | fonts : './source/static/fonts', 21 | images : './source/static/images', 22 | } 23 | } 24 | 25 | 26 | gulp.task('css',function(){ 27 | return sass( conf.src.css ) 28 | .pipe(autoprefixer({ 29 | browsers: ['last 7 versions','> 5%'], 30 | })) 31 | .pipe(minifyCss()) 32 | .pipe( gulp.dest(conf.dest.css) ); 33 | }); 34 | 35 | gulp.task('js',function(){ 36 | return gulp.src( conf.src.js ) 37 | .pipe(uglify()) 38 | .pipe(gulp.dest( conf.dest.js )) 39 | }); 40 | 41 | gulp.task('img',function(){ 42 | return gulp.src( conf.src.images ) 43 | .pipe( gulp.dest(conf.dest.images) ); 44 | }); 45 | 46 | gulp.task('fonts',function(){ 47 | return gulp.src( conf.src.fonts ) 48 | .pipe( gulp.dest(conf.dest.fonts) ); 49 | }); 50 | 51 | gulp.task('watch',['css','img','js','fonts'],function(){ 52 | gulp.watch( conf.src.css , ['css']); 53 | gulp.watch( conf.src.images , ['img']); 54 | gulp.watch( conf.src.fonts , ['fonts']); 55 | gulp.watch( conf.src.js , ['js']); 56 | }); -------------------------------------------------------------------------------- /languages/zh-cn.yml: -------------------------------------------------------------------------------- 1 | date_format: "MMM DD , YYYY" 2 | global: 3 | home: "首页" 4 | tags: "标签" 5 | archives: "归档" 6 | search: "搜索" 7 | about: "关于" 8 | link : "友链" 9 | links: "友情链接" 10 | github: "GitHub" 11 | stack_overflow: "Stack Overflow" 12 | twitter: "Twitter" 13 | facebook: "Facebook" 14 | google_plus: "Google Plus" 15 | linkedin: "LinkedIn" 16 | mail: "邮箱" 17 | rss: "RSS" 18 | weibo: "微博" 19 | weixin: "微信" 20 | 21 | pagination: 22 | newer_posts: "上一页" 23 | older_posts: "下一页" 24 | 25 | post: 26 | no_title : "无标题" 27 | read_more: "阅读全文 »" -------------------------------------------------------------------------------- /layout/_partial/about.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%- partial('include/header') %> 4 | 5 | 6 | <%- partial('include/sidebar') %> 7 | 8 | <%- partial('include/head') %> 9 | 10 |
11 |
12 |
13 |

<%- __('global.about') %>

14 |
15 | <%- page.content %> 16 |
17 | <% if (theme.disqus_shortname) { %> 18 | <%- partial('include/disqus') %> 19 | <%}else if(theme.duoshuo_shortname){%> 20 | <%- partial('include/duoshuo') %> 21 | <%}%> 22 |
23 |
24 |
25 | <%- partial('include/scripts') %> 26 | <%- partial('include/footer') %> 27 | 28 | -------------------------------------------------------------------------------- /layout/_partial/archive.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%- partial('include/header') %> 4 | 5 | 6 | <%- partial('include/sidebar') %> 7 | 8 | <% 9 | var lastYear; 10 | var lastMonth; 11 | %> 12 | 13 | <%- partial('include/head') %> 14 | 15 |
16 |
17 |
18 | <% site.posts.sort('date', 'desc').each(function(post) { %> 19 | <% var currentYear = post.date.year(); %> 20 | <% var currentMonth = post.date.format('MM'); %> 21 | <% if (lastYear != currentYear) { %> 22 | <% if (lastYear != null) { %> 23 | 24 | <% lastMonth = null; %> 25 | <% } %> 26 | <% lastYear = currentYear; %> 27 | <% } %> 28 | <% if (lastMonth != currentMonth) { %> 29 | <% if (lastMonth != null) { %> 30 | 31 | <% } %> 32 |
33 |

<%= currentYear %>年<%= post.date.format('MM') %>月

34 | <% lastMonth = currentMonth; %> 35 | <% } %> 36 |
37 |
38 | 39 | <% if (post.lang) { %> 40 | <%= post.date.locale(post.lang).format(__('date_format')) %> 41 | <% } else { %> 42 | <%= post.date.locale(page.lang).format(__('date_format')) %> 43 | <% } %> 44 | 45 | 46 | <% post.tags.each(function( tag , index ){ %> 47 | <% if(index !== 0){%> 48 | , 49 | <%}%> 50 | 51 | <%= tag.name %> 52 | 53 | <% }) %> 54 | 55 |
56 |

<%= post.title || '(' + __('post.no_title') + ')' %>

57 |
58 | <% }) %> 59 |
60 |
61 |
62 | 63 | <%- partial('include/footer') %> 64 | 65 | -------------------------------------------------------------------------------- /layout/_partial/include/disqus.ejs: -------------------------------------------------------------------------------- 1 |
2 |

Comments

3 |
4 | 评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。 5 |
6 |
-------------------------------------------------------------------------------- /layout/_partial/include/duoshuo.ejs: -------------------------------------------------------------------------------- 1 |
3 |
4 | -------------------------------------------------------------------------------- /layout/_partial/include/footer.ejs: -------------------------------------------------------------------------------- 1 | <%- js('static/js/meizi.js') %> -------------------------------------------------------------------------------- /layout/_partial/include/head.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | function resolveImgURL(from, path) { 3 | // check if the url provided is 4 | if (from !== null && !is_remote_url(path)) { 5 | // format `from` path 6 | // remove .html at the end of url 7 | if (from.indexOf('.html') >= 0) { 8 | from = from.replace('.html', '') 9 | } 10 | // remove end `/` of `from` path 11 | if (from.length === from.lastIndexOf('/') + 1) { 12 | from = from.substr(0, from.lastIndexOf('/')) 13 | } 14 | // remove end `/` of `url` path 15 | if (path.indexOf('/') === 1) { 16 | path = url.substr(1); 17 | } 18 | return url_for(from + '/' + path); 19 | 20 | } 21 | else { 22 | return path; 23 | } 24 | } 25 | %> 26 | 33 | -------------------------------------------------------------------------------- /layout/_partial/include/header.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | function resolveImgURL(from, path) { 3 | // check if the url provided is 4 | if (from !== null && !is_remote_url(path)) { 5 | // format `from` path 6 | // remove .html at the end of url 7 | if (from.indexOf('.html') >= 0) { 8 | from = from.replace('.html', '') 9 | } 10 | // remove end `/` of `from` path 11 | if (from.length === from.lastIndexOf('/') + 1) { 12 | from = from.substr(0, from.lastIndexOf('/')) 13 | } 14 | // remove end `/` of `url` path 15 | if (path.indexOf('/') === 1) { 16 | path = url.substr(1); 17 | } 18 | return url_for(from + '/' + path); 19 | 20 | } 21 | else { 22 | return path; 23 | } 24 | } 25 | %> 26 | 27 | 28 | 29 | 30 | <% if (theme.favicon) { %> 31 | 32 | <% } %> 33 | <% 34 | function delHtmlTag( str ){ 35 | return str.replace(/<[^>]+>/g,""); 36 | } 37 | var tags = []; 38 | if( page&&page.tags ){ 39 | page.tags.each(function( tag , index ){ 40 | tags.push( tag.name ); 41 | }) 42 | } 43 | 44 | var excerpt; 45 | if( page && page.excerpt ){ 46 | excerpt = delHtmlTag( page.excerpt).replace(/\s/g,''); 47 | }else if( page && page.content ){ 48 | excerpt = delHtmlTag( page.content ).replace(/\s/g,''); 49 | } 50 | 51 | var title; 52 | if( page && page.title ){ 53 | title = page.title + ' - ' + config.title 54 | }else{ 55 | title = config.title; 56 | } 57 | %> 58 | <% if( tags.length > 0 ){%> 59 | 60 | <%}%> 61 | <% if( excerpt ){%> 62 | 63 | <%}%> 64 | <%=title%> 65 | <%- css('static/css/style.css') %> 66 | -------------------------------------------------------------------------------- /layout/_partial/include/pagination.ejs: -------------------------------------------------------------------------------- 1 | <% if(page.prev || page.next){ %> 2 | 26 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/include/scripts.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.disqus_shortname) { %> 2 | 20 | <% } else if (theme.duoshuo_shortname) { %> 21 | 32 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/include/sidebar.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | function resolveImgURL(from, path) { 3 | // check if the url provided is 4 | if (from !== null && !is_remote_url(path)) { 5 | // format `from` path 6 | // remove .html at the end of url 7 | if (from.indexOf('.html') >= 0) { 8 | from = from.replace('.html', '') 9 | } 10 | // remove end `/` of `from` path 11 | if (from.length === from.lastIndexOf('/') + 1) { 12 | from = from.substr(0, from.lastIndexOf('/')) 13 | } 14 | // remove end `/` of `url` path 15 | if (path.indexOf('/') === 1) { 16 | path = url.substr(1); 17 | } 18 | return url_for(from + '/' + path); 19 | 20 | } 21 | else { 22 | return path; 23 | } 24 | } 25 | %> 26 | <% 27 | var bg = ''; 28 | if( theme.sidebar_bg ){ 29 | bg = 'style="background-image: url('+ resolveImgURL(theme.image_dir,theme.sidebar_bg) +');background-size: cover;"'; 30 | } 31 | %> 32 | 56 | <% if (theme.swiftype_install_key) { %> 57 | 65 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%- partial('include/header') %> 4 | 5 | 6 | <%- partial('include/sidebar') %> 7 | 8 | <%- partial('include/head') %> 9 | 10 |
11 |
12 |
13 | <% if( page.tag && page.path.indexOf('tags/') > -1 ){ %> 14 |

标签<%=page.tag %>的搜索结果

15 | <% } %> 16 | <% page.posts.each(function(post) { %> 17 | <% 18 | var url; 19 | if( post.link ){ 20 | url = url_for(post.link) 21 | }else{ 22 | url = url_for(post.path); 23 | } 24 | %> 25 |
26 |
27 |
28 | <% if (post.lang) { %> 29 | <%= post.date.locale(post.lang).format(__('date_format')) %> 30 | <% } else { %> 31 | <%= post.date.locale(page.lang).format(__('date_format')) %> 32 | <% } %> 33 |
34 |
35 | <% post.tags.each(function( tag , index ){ %> 36 | <% if(index !== 0){%> 37 | , 38 | <%}%> 39 | 40 | <%= tag.name %> 41 | 42 | <% }) %> 43 |
44 |
45 |

46 | <% if (post.link) { %> 47 | 48 | <%= post.title || '(' + __('post.no_title') + ')' %> 49 | 50 | <% } else { %> 51 | 52 | <%= post.title || '(' + __('post.no_title') + ')' %> 53 | 54 | <% } %> 55 |

56 | <% 57 | function delHtmlTag( str ){ 58 | return str.replace(/<[^>]+>/g,""); 59 | } 60 | %> 61 |
62 | <% if( post.excerpt ){%> 63 | <%- delHtmlTag(post.excerpt) %> 64 | <%} else{ %> 65 | <%- delHtmlTag(post.content) %> 66 | <%} %> 67 |
68 |

69 | <% if (post.link && _('post.go_to_website')) { %> 70 | 71 | <%= __('post.go_to_website') %> 72 | 73 | <% } else if (__('post.read_more')) { %> 74 | 75 | <%- __('post.read_more') %> 76 | 77 | <% } %> 78 |

79 |
80 | <% }) %> 81 |
82 | <%- partial('include/pagination', {type: 'page'}) %> 83 |
84 |
85 | 86 | <%- partial('include/footer') %> 87 | 88 | -------------------------------------------------------------------------------- /layout/_partial/links.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%- partial('include/header') %> 4 | 5 | 6 | <%- partial('include/sidebar') %> 7 | 8 | <%- partial('include/head') %> 9 | 10 |
11 |
12 | 18 |
19 |
20 | 21 | <%- partial('include/footer') %> 22 | 23 | -------------------------------------------------------------------------------- /layout/_partial/post.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%- partial('include/header') %> 4 | 5 | 6 | <%- partial('include/sidebar') %> 7 | 8 | <%- partial('include/head') %> 9 | 10 | <% 11 | Date.prototype.format = function(format) { 12 | var o = { 13 | "M+" : this.getMonth() + 1, 14 | "d+" : this.getDate(), 15 | "h+" : this.getHours(), 16 | "m+" : this.getMinutes(), 17 | "s+" : this.getSeconds(), 18 | "q+" : Math.floor((this.getMonth() + 3) / 3), 19 | "S" : this.getMilliseconds() 20 | } 21 | if (/(y+)/.test(format)) { 22 | format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 23 | } 24 | 25 | for (var k in o) { 26 | if (new RegExp("(" + k + ")").test(format)) { 27 | format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); 28 | } 29 | } 30 | 31 | return format; 32 | } 33 | %> 34 | 35 |
36 |
37 |
38 |
39 |

40 | <% if (post.link) { %> 41 | <%= post.title || '(' + __('post.no_title') + ')' %> 42 | <% } else { %> 43 | <%= post.title || '(' + __('post.no_title') + ')' %> 44 | <% } %> 45 |

46 |

47 | <% post.tags.each(function( tag , index ){ %> 48 | 49 | <%= tag.name %> 50 | 51 | <% }) %> 52 |

53 |
54 | <%- post.content %> 55 |
56 |

-- EOF --

57 | 64 |
65 | <% if (theme.disqus_shortname) { %> 66 | <%- partial('include/disqus') %> 67 | <%}else if(theme.duoshuo_shortname){%> 68 | <%- partial('include/duoshuo') %> 69 | <%}%> 70 |
71 |
72 |
73 | <%- partial('include/scripts') %> 74 | 75 | <%- partial('include/footer') %> 76 | 77 | -------------------------------------------------------------------------------- /layout/_partial/tags.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%- partial('include/header') %> 4 | 5 | 6 | <%- partial('include/sidebar') %> 7 | 8 | <%- partial('include/head') %> 9 | 10 |
11 |
12 |
13 |

<%- __('global.tags') %>

14 |
15 | <% site.tags.each(function(tag) { %> 16 | 17 | <%= tag.name + '(' + tag.length + ')' %> 18 | 19 | <% }); %> 20 |
21 |
22 |
23 |
24 | 25 | 26 | 27 | <%- partial('include/footer') %> 28 | 29 | -------------------------------------------------------------------------------- /layout/about.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/about', {post: page}) %> -------------------------------------------------------------------------------- /layout/all-archives.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive') %> -------------------------------------------------------------------------------- /layout/index.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/index') %> -------------------------------------------------------------------------------- /layout/links.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/links') %> -------------------------------------------------------------------------------- /layout/post.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/post', {post: page}) %> -------------------------------------------------------------------------------- /layout/tags.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/tags') %> -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-theme-meizi", 3 | "version": "0.1.1", 4 | "description": "a theme for hexo by mochen", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "test" 8 | }, 9 | "author": "mochen ", 10 | "license": "MIT", 11 | "dependencies": { 12 | "gulp": "^3.9.0", 13 | "gulp-autoprefixer": "^3.1.0", 14 | "gulp-htmlmin": "^1.3.0", 15 | "gulp-minify-css": "^1.2.2", 16 | "gulp-ruby-sass": "^2.0.6", 17 | "gulp-uglify": "^1.5.1" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /scripts/helpers/func.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /** 4 | * Check if url is remote 5 | */ 6 | 7 | hexo.extend.helper.register('is_remote_url',function( url ){ 8 | return url && url.indexOf('//') > -1; 9 | }) -------------------------------------------------------------------------------- /source/_css/include/_core.scss: -------------------------------------------------------------------------------- 1 | #page-index{ 2 | h1.search{ 3 | padding: 20px 30px; 4 | background-color: $color_light_grey; 5 | text-align: center; 6 | color: $color_middle_grey; 7 | b{ 8 | color: $color_main; 9 | padding: 0 5px; 10 | } 11 | } 12 | article{ 13 | border-bottom: 1px solid $color_light_grey; 14 | border-top: 1px solid $color_default; 15 | padding: 30px 30px 20px 30px; 16 | position: relative; 17 | a{ 18 | color: $post_title_color; 19 | text-decoration: none; 20 | transition: color .2s $curve; 21 | &:hover{ 22 | color: $color_main; 23 | } 24 | } 25 | .meta{ 26 | position: relative; 27 | float: right; 28 | text-align: right; 29 | font-size: 14px; 30 | line-height: 14px; 31 | color: #555; 32 | .tags{ 33 | padding-top: 10px; 34 | a{ 35 | color: $color_dark_grey; 36 | &:hover{ 37 | color: $color_main; 38 | } 39 | } 40 | } 41 | } 42 | h1{ 43 | font-size: 24px; 44 | line-height: 24px; 45 | font-weight: bold; 46 | margin: 0 0 25px 0; 47 | } 48 | .desc{ 49 | font-size: 16px; 50 | line-height: 1.8; 51 | word-wrap: break-word; 52 | word-break: break-all; 53 | color: $color_middle_grey; 54 | } 55 | p.more{ 56 | margin: 15px 0 0 0; 57 | text-align: right; 58 | a{ 59 | color: $color_main; 60 | &:hover{ 61 | text-decoration: underline; 62 | } 63 | } 64 | } 65 | } 66 | @include max-screen( 769px ){ 67 | &{ 68 | h1.search{ 69 | padding: 10px; 70 | font-size: 18px; 71 | background-color: $color_default; 72 | margin-bottom: 5px; 73 | } 74 | article{ 75 | margin: 5px 5px 0 5px; 76 | background-color: $color_default; 77 | padding: 10px; 78 | .meta{ 79 | display: none; 80 | } 81 | h1{ 82 | font-size: 22px; 83 | padding: 5px 0 10px 0; 84 | margin: 0; 85 | } 86 | .desc{ 87 | color: $color_middle_grey; 88 | font-size: 14px; 89 | } 90 | p.more{ 91 | font-size: 14px; 92 | margin: 5px 0; 93 | } 94 | } 95 | } 96 | } 97 | } 98 | 99 | #pagination{ 100 | height: 70px; 101 | line-height: 40px; 102 | padding: 15px 20px; 103 | margin: 0 auto; 104 | max-width: 960px; 105 | background-color: $color_default; 106 | ul,li{ 107 | height: 40px; 108 | margin: 0; 109 | padding: 0; 110 | list-style: none; 111 | } 112 | li.prev{ 113 | float: left; 114 | } 115 | li.next{ 116 | float: right; 117 | } 118 | a{ 119 | display: block; 120 | transition: color .2s $curve,border .2s $curve; 121 | border: 1px solid $color_dark_grey; 122 | color: $color_dark_grey; 123 | text-decoration: none; 124 | padding: 0 15px; 125 | border-radius: 4px; 126 | text-align: center; 127 | &:hover{ 128 | border-color: $color_light_black; 129 | color: $color_dark_black; 130 | } 131 | } 132 | @include max-screen( 769px ){ 133 | &{ 134 | height: 50px; 135 | padding: 5px 0; 136 | margin-top: 5px; 137 | li{ 138 | width: 50%; 139 | } 140 | a{ 141 | width: 100%; 142 | border-radius: 0; 143 | border: none; 144 | &:first-child{ 145 | border-right: 1px solid $color_light_grey; 146 | } 147 | } 148 | } 149 | } 150 | } 151 | 152 | #page-archive{ 153 | padding: 0 30px; 154 | section{ 155 | position: relative; 156 | h1.year{ 157 | border-top: 1px solid $color_default; 158 | line-height: 35px; 159 | padding-top: 15px; 160 | font-size: 30px; 161 | color: $color_middle_grey; 162 | position: absolute; 163 | top: 0; 164 | width: 200px; 165 | &::before{ 166 | border-top: 1px solid $color_grey_grey; 167 | content: ""; 168 | position: absolute; 169 | top: -2px; 170 | width: 100%; 171 | } 172 | } 173 | article{ 174 | margin-left: 200px; 175 | padding: 15px 0; 176 | border-bottom: 1px solid $color_grey_grey; 177 | border-top: 1px solid $color_default; 178 | position: relative; 179 | h1{ 180 | font-size: 16px; 181 | line-height: 35px; 182 | font-weight: normal; 183 | a{ 184 | color: $color_dark_black; 185 | text-decoration: none; 186 | transition: color .2s $curve; 187 | &:hover{ 188 | color: $color_main; 189 | } 190 | } 191 | } 192 | .meta{ 193 | color: $color_dark_black; 194 | float: right; 195 | font-size: 13px; 196 | line-height: 35px; 197 | position: relative; 198 | text-align: right; 199 | width: auto; 200 | .time{ 201 | margin-right: 5px; 202 | } 203 | a{ 204 | color: $color_dark_grey; 205 | text-decoration: none; 206 | &:hover{ 207 | color: $color_main; 208 | } 209 | } 210 | } 211 | } 212 | } 213 | @include max-screen( 769px ){ 214 | &{ 215 | margin: 0; 216 | padding: 0; 217 | section{ 218 | margin: 5px; 219 | background-color: $color_default; 220 | h1.year{ 221 | width: 100%; 222 | position: static; 223 | font-size: 24px; 224 | height: 50px; 225 | line-height: 50px; 226 | padding: 0; 227 | text-align: center; 228 | border-bottom:1px solid $color_light_grey; 229 | &::before{ 230 | border: none; 231 | } 232 | } 233 | article{ 234 | padding: 5px; 235 | margin: 0 10px 5px 10px; 236 | border-bottom:1px solid $color_light_grey; 237 | .meta{ 238 | display: none; 239 | } 240 | h1{ 241 | font-size: 14px; 242 | } 243 | } 244 | } 245 | } 246 | } 247 | } 248 | 249 | #page-tags{ 250 | padding: 30px; 251 | color: $color_dark_black; 252 | h1{ 253 | color: $color_middle_grey; 254 | margin-bottom: 10px; 255 | } 256 | section{ 257 | padding: 5px 5px 0 5px; 258 | a{ 259 | display: inline-block; 260 | font-size: 14px; 261 | padding: 0 15px; 262 | height: 40px; 263 | line-height: 40px; 264 | color: rgba($color_main,.8); 265 | border: 1px solid rgba($color_main,.8); 266 | border-radius: 4px; 267 | margin: 0 15px 10px 0; 268 | text-decoration: none; 269 | transition: color .2s $curve , border .2s $curve; 270 | &:hover{ 271 | color: $color_main; 272 | border-color: $color_main; 273 | } 274 | } 275 | } 276 | @include max-screen( 769px ){ 277 | &{ 278 | padding: 0; 279 | margin: 5px; 280 | background-color: $color_default; 281 | min-height: calc(100% - 10px); 282 | h1{ 283 | font-size: 24px; 284 | margin-bottom: 10px; 285 | height: 50px; 286 | line-height: 50px; 287 | text-align: center; 288 | margin: 0; 289 | border-bottom:1px solid $color_light_grey; 290 | } 291 | section{ 292 | padding: 10px 10px 0 10px; 293 | } 294 | } 295 | } 296 | } 297 | 298 | #page-about{ 299 | padding: 30px; 300 | h1{ 301 | color: $color_middle_grey; 302 | margin-bottom: 10px; 303 | } 304 | section{ 305 | padding:30px; 306 | } 307 | @include max-screen( 769px ){ 308 | &{ 309 | margin: 5px; 310 | padding: 0; 311 | background-color: $color_default; 312 | min-height: calc(100% - 10px); 313 | h1{ 314 | font-size: 24px; 315 | margin-bottom: 10px; 316 | height: 50px; 317 | line-height: 50px; 318 | text-align: center; 319 | margin: 0; 320 | border-bottom:1px solid $color_light_grey; 321 | } 322 | section{ 323 | padding:10px; 324 | } 325 | } 326 | } 327 | } 328 | 329 | #page-post{ 330 | padding: 30px; 331 | article{ 332 | padding-bottom: 20px; 333 | border-bottom: 1px solid $color_grey_grey; 334 | position: relative; 335 | img{ 336 | max-width: 100%; 337 | } 338 | a{ 339 | color: $color_dark_black; 340 | text-decoration: none; 341 | transition: color .2s $curve; 342 | &:hover{ 343 | color: $color_main; 344 | } 345 | } 346 | .meta{ 347 | position: relative; 348 | float: right; 349 | text-align: right; 350 | font-size: 14px; 351 | line-height: 14px; 352 | color: #555; 353 | .tags{ 354 | padding-top: 10px; 355 | a{ 356 | color: $color_dark_grey; 357 | &:hover{ 358 | color: $color_main; 359 | } 360 | } 361 | } 362 | } 363 | h1{ 364 | margin-top: 0; 365 | margin-bottom: 25px; 366 | } 367 | .post-info{ 368 | padding: 20px 20px 10px 20px; 369 | border: 1px solid #dedede; 370 | background-color: $color_light_grey; 371 | font-size: 14px; 372 | i{ 373 | color: $color_middle_grey; 374 | } 375 | } 376 | } 377 | @include max-screen( 769px ){ 378 | &{ 379 | margin: 5px; 380 | padding: 10px; 381 | background-color: $color_default; 382 | article{ 383 | .meta{ 384 | display: none; 385 | } 386 | h1{ 387 | font-size: 24px; 388 | margin-bottom: 10px; 389 | } 390 | } 391 | } 392 | } 393 | } 394 | #page-links{ 395 | padding: 30px; 396 | h1{ 397 | color: $color_middle_grey; 398 | margin-bottom: 10px; 399 | } 400 | section{ 401 | padding:30px; 402 | } 403 | ul{ 404 | li{ 405 | line-height: 2; 406 | i{ 407 | display: inline-block; 408 | vertical-align: top; 409 | margin-right: 5px; 410 | color: #5ab300; 411 | } 412 | } 413 | } 414 | @include max-screen( 769px ){ 415 | &{ 416 | margin: 5px; 417 | padding: 0; 418 | background-color: $color_default; 419 | min-height: calc(100% - 10px); 420 | h1{ 421 | font-size: 24px; 422 | margin-bottom: 10px; 423 | height: 50px; 424 | line-height: 50px; 425 | text-align: center; 426 | margin: 0; 427 | border-bottom:1px solid $color_light_grey; 428 | } 429 | section{ 430 | padding:10px; 431 | } 432 | } 433 | } 434 | } 435 | #comments{ 436 | color: $color_dark_grey; 437 | h2{ 438 | padding: 10px 0; 439 | } 440 | } -------------------------------------------------------------------------------- /source/_css/include/_header.scss: -------------------------------------------------------------------------------- 1 | #header{ 2 | width: 100%; 3 | height: 50px; 4 | line-height: 50px; 5 | overflow: hidden; 6 | position: fixed; 7 | left: 0; 8 | top: 0; 9 | z-index: 9; 10 | display: none; 11 | background-color: $header_back_color; 12 | @include max-screen( 768px ){ 13 | &{ 14 | transform: translate3D( 0 , 0 , 0); 15 | transition: all .2s $curve; 16 | display: block; 17 | } 18 | } 19 | body.side &{ 20 | .btn-bar{ 21 | &:before{ 22 | width: 24px; 23 | transform : rotate(45deg-90deg); 24 | top: 25px; 25 | } 26 | &:after{ 27 | width: 24px; 28 | transform : rotate(-45deg+90deg); 29 | bottom: 24px; 30 | } 31 | i{ 32 | opacity: 0; 33 | } 34 | } 35 | } 36 | h1{ 37 | text-align: center; 38 | font-size: 16px; 39 | a{ 40 | color: $header_font_color; 41 | } 42 | } 43 | .btn-bar{ 44 | width: 50px; 45 | height: 50px; 46 | position: absolute; 47 | left: 0px; 48 | top: 0px; 49 | i,&:before,&:after{ 50 | width: 22px; 51 | height: 1px; 52 | position: absolute; 53 | left: 14px; 54 | background-color: $header_btn_color; 55 | transition: all .2s $curve .3s; 56 | } 57 | i{ 58 | top: 25px; 59 | opacity: 1; 60 | } 61 | &:before{ 62 | content: ''; 63 | top: 17px; 64 | } 65 | &:after{ 66 | content: ''; 67 | bottom: 16px; 68 | } 69 | } 70 | a.me,a.me img{ 71 | width: 30px; 72 | height: 30px; 73 | border-radius: 30px; 74 | overflow: hidden; 75 | } 76 | a.me{ 77 | position: absolute; 78 | right: 10px; 79 | top: 10px; 80 | } 81 | } -------------------------------------------------------------------------------- /source/_css/include/_iconfont.scss: -------------------------------------------------------------------------------- 1 | @font-face {font-family: "iconfont"; 2 | src: url('//at.alicdn.com/t/font_1452077087_926792.eot'); /* IE9*/ 3 | src: url('//at.alicdn.com/t/font_1452077087_926792.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), /* chrome,firefox */ 5 | url('//at.alicdn.com/t/font_1452077087_926792.ttf') format('truetype'), /* chrome,firefox,opera,Safari, Android, iOS 4.2+*/ 6 | url('//at.alicdn.com/t/font_1452077087_926792.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 | .icon-weibo:before { 19 | content: "\e600"; 20 | } 21 | 22 | .icon-archive:before { 23 | content: "\e601"; 24 | } 25 | 26 | .icon-user:before { 27 | content: "\e602"; 28 | } 29 | 30 | .icon-rss:before { 31 | content: "\e603"; 32 | } 33 | 34 | .icon-tags:before { 35 | content: "\e604"; 36 | } 37 | 38 | .icon-home:before { 39 | content: "\e605"; 40 | } 41 | 42 | .icon-search:before { 43 | content: "\e606"; 44 | } 45 | 46 | .icon-googleplus:before { 47 | content: "\e607"; 48 | } 49 | 50 | .icon-weixin:before { 51 | content: "\e608"; 52 | } 53 | 54 | .icon-mail:before { 55 | content: "\e609"; 56 | } 57 | 58 | .icon-twitter:before { 59 | content: "\e60a"; 60 | } 61 | 62 | .icon-linkedin:before { 63 | content: "\e60b"; 64 | } 65 | 66 | .icon-stackoverflow:before { 67 | content: "\e60c"; 68 | } 69 | 70 | .icon-github:before { 71 | content: "\e60d"; 72 | } 73 | 74 | .icon-facebook:before { 75 | content: "\e60e"; 76 | } 77 | .icon-right:before { 78 | content: "\e60f"; 79 | } 80 | .icon-left:before { 81 | content: "\e610"; 82 | } 83 | .icon-link:before { 84 | content: "\e611"; 85 | } 86 | .icon-https:before { 87 | content: "\e612"; 88 | } -------------------------------------------------------------------------------- /source/_css/include/_layout.scss: -------------------------------------------------------------------------------- 1 | body{ 2 | margin: 0; 3 | padding: 0; 4 | -webkit-overflow-scrolling: touch; 5 | } 6 | 7 | html,body{ 8 | width: 100%; 9 | height: 100%; 10 | } 11 | 12 | body{ 13 | -webkit-text-size-adjust: none; 14 | transition: transform .2s $curve; 15 | -webkit-tap-highlight-color:rgba(0,0,0,0); 16 | font-family: $font_family; 17 | -webkit-font-smoothing: antialiased; 18 | } 19 | 20 | h1,h2,h3,h4,h5,h6{ 21 | margin: 0; 22 | padding: 0; 23 | font-weight: normal; 24 | } 25 | 26 | a{ 27 | text-decoration: none; 28 | color: #1980e6; 29 | &:hover{ 30 | text-decoration: underline; 31 | color: #2479cc; 32 | } 33 | } 34 | 35 | *{ 36 | box-sizing: border-box; 37 | } 38 | 39 | /* ::-webkit-scrollbar { 40 | width: 3px; 41 | height: 3px; 42 | } 43 | ::-webkit-scrollbar-track { 44 | background-color: transparent; 45 | } 46 | ::-webkit-scrollbar-thumb { 47 | background-color: rgba(0,0,0,.3); 48 | border-radius: 8px; 49 | } 50 | ::-webkit-scrollbar-thumb:hover { 51 | background-color: rgba(0,0,0,.4); 52 | } 53 | ::-webkit-scrollbar-thumb:active{ 54 | background-color: rgba(0,0,0,.5); 55 | } */ 56 | -------------------------------------------------------------------------------- /source/_css/include/_main.scss: -------------------------------------------------------------------------------- 1 | #main{ 2 | padding-left: $size_sidebar_normal; 3 | background-color: $color_default; 4 | -webkit-overflow-scrolling: touch; 5 | background-color: $color_default; 6 | .wrap{ 7 | max-width: 980px; 8 | margin: 0 auto; 9 | word-wrap: break-word; 10 | word-break: break-all; 11 | } 12 | @include screen( 768px , 1024px ){ 13 | &{ 14 | padding-left: $size_sidebar_mini; 15 | } 16 | } 17 | @include max-screen( 769px ){ 18 | &{ 19 | width: 100%; 20 | padding-left: 0; 21 | background-color: $color_grey_grey; 22 | min-height: 100%; 23 | padding-top: 50px; 24 | } 25 | } 26 | } 27 | 28 | 29 | -------------------------------------------------------------------------------- /source/_css/include/_markdown.scss: -------------------------------------------------------------------------------- 1 | .markdown{ 2 | line-height: 1.6; 3 | color: rgb(44,63,81)!important; 4 | p, pre, pre.prettyprint, blockquote { 5 | margin: 0 0 1.1em; 6 | } 7 | h1, h2, h3, h4, h5, h6 { 8 | font-weight: bold; 9 | margin: 1.2em 0 .6em 0; 10 | } 11 | h1 { 12 | font-size: 2.4em 13 | } 14 | 15 | h2 { 16 | font-size: 2.0em 17 | } 18 | 19 | h3 { 20 | font-size: 1.5em 21 | } 22 | 23 | h4 { 24 | font-size: 1.25em 25 | } 26 | 27 | h5 { 28 | font-size: 1em 29 | } 30 | 31 | h6 { 32 | font-size: .75em 33 | } 34 | hr{ 35 | margin: 2em 0; 36 | border: 0; 37 | border-top: 1px solid rgba(102,128,153,0.1); 38 | } 39 | b,strong{ 40 | font-weight: bold; 41 | } 42 | a{ 43 | background-color: transparent; 44 | color: #1980e6!important; 45 | text-decoration: none; 46 | &:hover,&:focus{ 47 | color: #0f4d8a!important; 48 | text-decoration: underline!important; 49 | } 50 | } 51 | table { 52 | border-collapse: collapse; 53 | border-spacing: 0; 54 | } 55 | table th,table td,table thead:first-child tr:first-child th { 56 | padding: .5em; 57 | border: 1px solid #ddd; 58 | line-height: 1.5 59 | } 60 | code { 61 | font-family: "Consolas","Courier New",Courier,mono,serif; 62 | font-size: .9em; 63 | white-space: normal; 64 | color: #c7254e; 65 | background-color: #f9f2f4; 66 | border-radius: 4px; 67 | padding: 2px 4px; 68 | } 69 | blockquote { 70 | background-color: rgba(102,128,153,0.05); 71 | border-top-right-radius: 5px; 72 | border-bottom-right-radius: 5px; 73 | padding: 15px 20px; 74 | border-left: 10px solid rgba(102,128,153,0.075); 75 | p{ 76 | margin: 0; 77 | } 78 | } 79 | ul{ 80 | padding-left: 40px; 81 | margin-bottom: 16px; 82 | li{ 83 | list-style: disc; 84 | } 85 | } 86 | .note-tags { 87 | a:hover{ 88 | text-decoration: none!important; 89 | .notebook{ 90 | background: rgba(44,63,81,0.3); 91 | color: #fff; 92 | } 93 | } 94 | .notebook { 95 | transition: background-color .2s ease-in-out , color .2s ease-in-out; 96 | border-radius: 0; 97 | padding: 2px 5px; 98 | background-color: rgba(102,128,153,0.175); 99 | color: rgba(44,63,81,0.5); 100 | margin-right: 6px; 101 | } 102 | } 103 | .highlight { 104 | margin: 1em 0; 105 | border-radius: 2px; 106 | line-height: 1.1em; 107 | background-color: #f8f8f8; 108 | -webkit-overflow-scrolling: touch; 109 | font-family: "Consolas","Courier New",Courier,mono,serif; 110 | } 111 | 112 | .highlight table{ 113 | display: block; 114 | overflow-x: auto; 115 | overflow-y: hidden; 116 | width: 100%; 117 | background-color: #23241f; 118 | } 119 | 120 | .highlight table,.highlight tr,.highlight td { 121 | width: 100%; 122 | border-collapse: collapse; 123 | padding: 0; 124 | margin: 0; 125 | border: none; 126 | } 127 | 128 | .highlight .gutter { 129 | display: none 130 | } 131 | 132 | .highlight .code pre { 133 | padding: 1.2em 1.4em; 134 | line-height: 1.5em; 135 | margin: 0; 136 | } 137 | 138 | pre { 139 | color: #f8f8f2; 140 | font-family: "Consolas","Courier New",Courier,mono,serif; 141 | -webkit-font-smoothing: auto; 142 | } 143 | 144 | pre .function .keyword,pre .constant { 145 | color: #66d9ef 146 | } 147 | 148 | pre .keyword,pre .attribute { 149 | color: #f92672 150 | } 151 | 152 | pre .number,pre .literal { 153 | color: #ae81ff 154 | } 155 | 156 | pre .tag,pre .tag .title,pre .change,pre .winutils,pre .flow,pre .lisp .title,pre .clojure .built_in,pre .nginx .title,pre .tex .special { 157 | color: #f92672 158 | } 159 | pre .tag{ 160 | color: #fff; 161 | } 162 | 163 | pre .class .title { 164 | color: #fff 165 | } 166 | 167 | pre .symbol,pre .symbol .string,pre .value,pre .regexp { 168 | color: #42b983 169 | } 170 | 171 | pre .title { 172 | color: #a6e22e 173 | } 174 | 175 | pre .tag .value,pre .string,pre .subst,pre .haskell .type,pre .preprocessor,pre .ruby .class .parent,pre .built_in,pre .sql .aggregate,pre .django .template_tag,pre .django .variable,pre .smalltalk .class,pre .javadoc,pre .django .filter .argument,pre .smalltalk .localvars,pre .smalltalk .array,pre .attr_selector,pre .pseudo,pre .addition,pre .stream,pre .envvar,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .prompt { 176 | color: #e6db74 177 | } 178 | 179 | pre .comment,pre .java .annotation,pre .python .decorator,pre .template_comment,pre .pi,pre .doctype,pre .shebang,pre .apache .sqbracket,pre .tex .formula { 180 | color: #75715e 181 | } 182 | 183 | pre .deletion { 184 | color: #BA4545 185 | } 186 | 187 | pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata { 188 | opacity: 0.5 189 | } 190 | } -------------------------------------------------------------------------------- /source/_css/include/_sidebar.scss: -------------------------------------------------------------------------------- 1 | body.side{ 2 | position: fixed; 3 | transform: translate3D($size_sidebar_normal,0,0); 4 | } 5 | #sidebar{ 6 | width: $size_sidebar_normal; 7 | height: 100%; 8 | position: fixed; 9 | left: 0; 10 | top: 0; 11 | background-color: $sidebar_back_color; 12 | overflow: auto; 13 | z-index: 1; 14 | -webkit-overflow-scrolling: touch; 15 | ul,li{ 16 | margin: 0; 17 | padding: 0; 18 | list-style: none; 19 | } 20 | .profile{ 21 | padding-top: 40px; 22 | padding-bottom: 10px; 23 | a,img{ 24 | width: $size_gravatar_normal; 25 | height: $size_gravatar_normal; 26 | border-radius: $size_gravatar_normal; 27 | overflow: hidden; 28 | } 29 | a{ 30 | display: block; 31 | margin: 0 auto; 32 | } 33 | span{ 34 | display: block; 35 | padding: 10px 0; 36 | font-size: 18px; 37 | color: $sidebar_font_color; 38 | text-align: center; 39 | } 40 | } 41 | .buttons{ 42 | margin: 0 0 20px; 43 | li{ 44 | display: block; 45 | width: 100%; 46 | height: 45px; 47 | line-height: 45px; 48 | font-size: 16px; 49 | a{ 50 | padding-left: 25px; 51 | display: block; 52 | color: $sidebar_font_color; 53 | transition: color .2s $curve; 54 | text-decoration: none; 55 | i,span{ 56 | display: inline-block; 57 | vertical-align: middle; 58 | } 59 | i{ 60 | font-size: 20px; 61 | width: 25px; 62 | height: 45px; 63 | line-height: 45px; 64 | text-align: center; 65 | margin-right: 20px; 66 | } 67 | &:hover{ 68 | color : $sidebar_hover_color; 69 | } 70 | } 71 | } 72 | } 73 | @include max-screen( 768px ){ 74 | &.behavior_1{ 75 | transform: translate3D( -$size_sidebar_normal , 0, 0 ); 76 | } 77 | &.behavior_2{ 78 | transform: translate3D( 0 , 0, 0 ); 79 | } 80 | &{ 81 | transition: transform .2s $curve; 82 | .profile{ 83 | padding-top: 20px; 84 | padding-bottom: 20px; 85 | a,img{ 86 | width: $size_gravatar_large; 87 | height: $size_gravatar_large; 88 | border-radius: $size_gravatar_large; 89 | } 90 | span{ 91 | display: none; 92 | } 93 | } 94 | } 95 | } 96 | 97 | @include screen( 769px , 1024px ){ 98 | &{ 99 | width: $size_sidebar_mini; 100 | .profile{ 101 | padding-top: 20px; 102 | a,img{ 103 | width: $size_gravatar_mini; 104 | height: $size_gravatar_mini; 105 | border-radius: $size_gravatar_mini; 106 | } 107 | span{ 108 | display: none; 109 | } 110 | } 111 | .buttons{ 112 | li{ 113 | a{ 114 | padding: 0; 115 | i{ 116 | font-size: 18px; 117 | display: block; 118 | margin: 0 auto; 119 | } 120 | span{ 121 | display: none; 122 | } 123 | } 124 | } 125 | } 126 | } 127 | } 128 | } 129 | #sidebar-mask{ 130 | position: absolute; 131 | left: 0; 132 | top: 0; 133 | right: 0; 134 | bottom: 0; 135 | z-index: 999; 136 | overflow: hidden; 137 | display: none; 138 | background-color: rgba(255,255,255,0); 139 | } -------------------------------------------------------------------------------- /source/_css/mixins/_query.scss: -------------------------------------------------------------------------------- 1 | @mixin screen($resMin, $resMax) 2 | { 3 | @media screen and (min-width: $resMin) and (max-width: $resMax) 4 | { 5 | @content; 6 | } 7 | } 8 | 9 | @mixin max-screen($res) 10 | { 11 | @media screen and (max-width: $res) 12 | { 13 | @content; 14 | } 15 | } 16 | 17 | @mixin min-screen($res) 18 | { 19 | @media screen and (min-width: $res) 20 | { 21 | @content; 22 | } 23 | } 24 | 25 | @mixin screen-height($resMin, $resMax) 26 | { 27 | @media screen and (min-height: $resMin) and (max-height: $resMax) 28 | { 29 | @content; 30 | } 31 | } 32 | 33 | @mixin max-screen-height($res) 34 | { 35 | @media screen and (max-height: $res) 36 | { 37 | @content; 38 | } 39 | } 40 | 41 | @mixin min-screen-height($res) 42 | { 43 | @media screen and (min-height: $res) 44 | { 45 | @content; 46 | } 47 | } 48 | 49 | 50 | // hdpi 51 | //----------------------------------------------------- 52 | 53 | // Based on bourbon hidpi-media-queries file (https://github.com/thoughtbot/bourbon/blob/master/app/assets/stylesheets/css3/_hidpi-media-query.scss) 54 | // HIDPI mixin. Default value set to 1.3 to target Google Nexus 7 (http://bjango.com/articles/min-device-pixel-ratio/) 55 | 56 | @mixin hdpi($ratio: 1.3) 57 | { 58 | @media only screen and (-webkit-min-device-pixel-ratio: $ratio), 59 | only screen and (min--moz-device-pixel-ratio: $ratio), 60 | only screen and (-o-min-device-pixel-ratio: #{$ratio}/1), 61 | only screen and (min-resolution: #{round($ratio*96)}dpi), 62 | only screen and (min-resolution: #{$ratio}dppx) 63 | { 64 | @content; 65 | } 66 | } 67 | 68 | // iphone 69 | //----------------------------------------------------- 70 | 71 | @mixin iphone3($orientation: all) 72 | { 73 | $deviceMinWidth: 320px; 74 | $deviceMaxWidth: 480px; 75 | $devicePixelRatio: 1; 76 | 77 | @if $orientation == all 78 | { 79 | @media only screen and (min-device-width: $deviceMinWidth) and (max-device-width: $deviceMaxWidth) 80 | and (-webkit-device-pixel-ratio: $devicePixelRatio) 81 | { 82 | @content; 83 | } 84 | } 85 | @else 86 | { 87 | @media only screen and (min-device-width: $deviceMinWidth) and (max-device-width: $deviceMaxWidth) 88 | and (-webkit-device-pixel-ratio: $devicePixelRatio) and (orientation:#{$orientation}) 89 | { 90 | @content; 91 | } 92 | } 93 | } 94 | 95 | // iphone-retina 96 | //----------------------------------------------------- 97 | 98 | @mixin iphone4($orientation: all) 99 | { 100 | $deviceMinWidth: 320px; 101 | $deviceMaxWidth: 480px; 102 | $devicePixelRatio: 2; 103 | $deviceAspectRatio: '2/3'; 104 | 105 | @if $orientation == all 106 | { 107 | @media only screen and (min-device-width: $deviceMinWidth) and (max-device-width: $deviceMaxWidth) 108 | and (-webkit-device-pixel-ratio: $devicePixelRatio) and (device-aspect-ratio: $deviceAspectRatio) 109 | { 110 | @content; 111 | } 112 | } 113 | @else 114 | { 115 | @media only screen and (min-device-width: $deviceMinWidth) and (max-device-width: $deviceMaxWidth) 116 | and (-webkit-device-pixel-ratio: $devicePixelRatio) and (device-aspect-ratio: 2/3) and (orientation:#{$orientation}) 117 | { 118 | @content; 119 | } 120 | } 121 | } 122 | 123 | // iphone-5 124 | //----------------------------------------------------- 125 | 126 | @mixin iphone5($orientation: all) 127 | { 128 | $deviceMinWidth: 320px; 129 | $deviceMaxWidth: 568px; 130 | $devicePixelRatio: 2; 131 | $deviceAspectRatio: '40/71'; 132 | 133 | @if $orientation == all 134 | { 135 | @media only screen and (min-device-width: $deviceMinWidth) and (max-device-width: $deviceMaxWidth) 136 | and (-webkit-device-pixel-ratio: $devicePixelRatio) and (device-aspect-ratio: $deviceAspectRatio) 137 | { 138 | @content; 139 | } 140 | } 141 | @else 142 | { 143 | @media only screen and (min-device-width: $deviceMinWidth) and (max-device-width: $deviceMaxWidth) 144 | and (-webkit-device-pixel-ratio: $devicePixelRatio) and (device-aspect-ratio: $deviceAspectRatio) and (orientation:#{$orientation}) 145 | { 146 | @content; 147 | } 148 | } 149 | } 150 | 151 | // ipads (all) 152 | //----------------------------------------------------- 153 | 154 | @mixin ipad($orientation: all) 155 | { 156 | $deviceMinWidth: 768px; 157 | $deviceMaxWidth: 1024px; 158 | 159 | @if $orientation == all 160 | { 161 | @media only screen and (min-device-width: $deviceMinWidth) and (max-device-width: $deviceMaxWidth) 162 | { 163 | @content; 164 | } 165 | } 166 | @else 167 | { 168 | @media only screen and (min-device-width: $deviceMinWidth) and (max-device-width: $deviceMaxWidth) 169 | and (orientation:#{$orientation}) 170 | { 171 | @content; 172 | } 173 | } 174 | } 175 | 176 | // ipad-retina 177 | //----------------------------------------------------- 178 | 179 | @mixin ipad-retina($orientation: all) 180 | { 181 | $deviceMinWidth: 768px; 182 | $deviceMaxWidth: 1024px; 183 | $devicePixelRatio: 2; 184 | 185 | @if $orientation == all 186 | { 187 | @media only screen and (min-device-width: $deviceMinWidth) and (max-device-width: $deviceMaxWidth) 188 | and (-webkit-device-pixel-ratio: $devicePixelRatio) 189 | { 190 | @content; 191 | } 192 | } 193 | @else 194 | { 195 | @media only screen and (min-device-width: $deviceMinWidth) and (max-device-width: $deviceMaxWidth) 196 | and (-webkit-device-pixel-ratio: $devicePixelRatio) and (orientation:#{$orientation}) 197 | { 198 | @content; 199 | } 200 | } 201 | } -------------------------------------------------------------------------------- /source/_css/mixins/_variables.scss: -------------------------------------------------------------------------------- 1 | $font_family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei'; 2 | 3 | 4 | 5 | /*============== default ==============*/ 6 | $color_light_black: #323436; 7 | $color_dark_black: #222; 8 | 9 | $color_light_grey: #f6f9fa; 10 | $color_grey_grey: #eee; 11 | $color_middle_grey: #999; 12 | $color_dark_grey: #666; 13 | 14 | $color_default: #fff; 15 | $color_main: #2479CC; 16 | /*============== default ==============*/ 17 | 18 | 19 | /*========= color for dev =========*/ 20 | 21 | $body_color: #fff; //正常颜色 22 | $body_mob_color: #eee; //小屏/mob下颜色 23 | 24 | $sidebar_back_color: #202020; //侧栏背景色,如果配置的背景图,则此项无效 25 | $sidebar_font_color: #999; //侧栏字体颜色 26 | $sidebar_hover_color: rgba($sidebar_font_color,.8); //字体hover颜色 27 | 28 | $header_back_color: #323436; //顶部背景色,小屏/mob下显示。 29 | $header_font_color: #999; //顶部网站标题颜色 30 | $header_btn_color: #999; //展开侧栏按钮颜色 31 | 32 | $post_title_color: #323436; //列表页标题颜色 33 | 34 | 35 | 36 | $size_sidebar_normal: 250px; 37 | $size_sidebar_mini: 75px; 38 | 39 | $size_gravatar_normal: 120px; 40 | $size_gravatar_large: 100px; 41 | $size_gravatar_mini: 40px; 42 | 43 | $curve: cubic-bezier(0.4, 0.01, 0.165, 0.99); -------------------------------------------------------------------------------- /source/_css/style.scss: -------------------------------------------------------------------------------- 1 | //mixins 2 | @import 'mixins/query'; 3 | 4 | 5 | @import 'mixins/variables'; 6 | 7 | 8 | @import 'include/iconfont'; 9 | @import 'include/markdown'; 10 | 11 | @import 'include/layout'; 12 | @import 'include/header'; 13 | @import 'include/sidebar'; 14 | @import 'include/main'; 15 | 16 | @import 'include/core'; -------------------------------------------------------------------------------- /source/_fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/_fonts/iconfont.eot -------------------------------------------------------------------------------- /source/_fonts/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Created by FontForge 20120731 at Wed Jan 6 18:45:42 2016 6 | By Ads 7 | 8 | 9 | 10 | 24 | 26 | 28 | 30 | 32 | 36 | 42 | 45 | 48 | 51 | 54 | 57 | 60 | 66 | 71 | 73 | 78 | 81 | 84 | 88 | 90 | 92 | 94 | 98 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /source/_fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/_fonts/iconfont.ttf -------------------------------------------------------------------------------- /source/_fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/_fonts/iconfont.woff -------------------------------------------------------------------------------- /source/_images/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/_images/cover.jpg -------------------------------------------------------------------------------- /source/_images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/_images/favicon.png -------------------------------------------------------------------------------- /source/_images/gravatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/_images/gravatar.jpg -------------------------------------------------------------------------------- /source/_js/meizi.js: -------------------------------------------------------------------------------- 1 | document.addEventListener( "DOMContentLoaded", function(){ 2 | 3 | var utils = { 4 | isMob : (function(){ 5 | var ua = navigator.userAgent.toLowerCase(); 6 | var agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; 7 | var result = false; 8 | for( var i = 0 ; i < agents.length; i++ ){ 9 | if( ua.indexOf( agents[i].toLowerCase() ) > -1){ 10 | result = true; 11 | } 12 | } 13 | return result; 14 | })() 15 | } 16 | 17 | 18 | if( utils.isMob ){ 19 | document.documentElement.className += ' mob'; 20 | }else{ 21 | document.documentElement.className += ' pc'; 22 | } 23 | 24 | 25 | var Meizi = { 26 | $sidebar : document.querySelector('#sidebar'), 27 | $main : document.querySelector('#main'), 28 | $sidebar_mask : document.querySelector('#sidebar-mask'), 29 | $body : document.body, 30 | $btn_side : document.querySelector('#header .btn-bar'), 31 | $article : document.querySelectorAll('.mob #page-index article'), 32 | 33 | init : function(){ 34 | this.bindEvent(); //绑定事件 35 | } 36 | }; 37 | 38 | Meizi.bindEvent = function(){ 39 | 40 | var _this = this, 41 | body_class_name = 'side', 42 | eventFirst = 'click', 43 | eventSecond = 'click'; 44 | 45 | if( utils.isMob ){ 46 | eventFirst = 'touchstart'; 47 | eventSecond = 'touchend'; 48 | } 49 | 50 | 51 | for( var i = 0 ; i < this.$article.length; i++ ){ 52 | this.$article[i].addEventListener( 'click' , function(){ 53 | var url = this.getAttribute('data-url'); 54 | window.location.href = url ; 55 | },false); 56 | } 57 | 58 | 59 | this.$btn_side.addEventListener( eventSecond ,function(){ 60 | 61 | if( _this.$body.className.indexOf( body_class_name ) > -1 ){ 62 | _this.$body.className = _this.$body.className.replace( body_class_name , ''); 63 | _this.$sidebar_mask.style.display = 'none'; 64 | }else{ 65 | _this.$body.className += (' ' + body_class_name); 66 | _this.$sidebar_mask.style.display = 'block'; 67 | } 68 | 69 | },false); 70 | 71 | this.$sidebar_mask.addEventListener( eventFirst , function( e ){ 72 | _this.$body.className = _this.$body.className.replace( body_class_name , ''); 73 | _this.$sidebar_mask.style.display = 'none'; 74 | e.preventDefault(); 75 | },false); 76 | 77 | 78 | window.addEventListener('resize',function(){ 79 | _this.$body.className = _this.$body.className.replace( body_class_name , ''); 80 | _this.$sidebar_mask.style.display = 'none'; 81 | },false); 82 | } 83 | 84 | Meizi.init(); 85 | 86 | }, false ); -------------------------------------------------------------------------------- /source/static/css/style.css: -------------------------------------------------------------------------------- 1 | .markdown .highlight,body{-webkit-overflow-scrolling:touch}#main .wrap,#page-index article .desc{word-wrap:break-word;word-break:break-all}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_1452077087_926792.eot);src:url(//at.alicdn.com/t/font_1452077087_926792.eot?#iefix) format("embedded-opentype"),url(data:application/x-font-woff;charset=utf-8;base64,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) format("woff"),url(//at.alicdn.com/t/font_1452077087_926792.ttf) format("truetype"),url(//at.alicdn.com/t/font_1452077087_926792.svg#iconfont) format("svg")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale}.markdown .highlight,.markdown code,.markdown pre{font-family:Consolas,"Courier New",Courier,mono,serif}.icon-weibo:before{content:"\e600"}.icon-archive:before{content:"\e601"}.icon-user:before{content:"\e602"}.icon-rss:before{content:"\e603"}.icon-tags:before{content:"\e604"}.icon-home:before{content:"\e605"}.icon-search:before{content:"\e606"}.icon-googleplus:before{content:"\e607"}.icon-weixin:before{content:"\e608"}.icon-mail:before{content:"\e609"}.icon-twitter:before{content:"\e60a"}.icon-linkedin:before{content:"\e60b"}.icon-stackoverflow:before{content:"\e60c"}.icon-github:before{content:"\e60d"}.icon-facebook:before{content:"\e60e"}.icon-right:before{content:"\e60f"}.icon-left:before{content:"\e610"}.icon-link:before{content:"\e611"}.icon-https:before{content:"\e612"}.markdown{line-height:1.6;color:#2c3f51!important}.markdown blockquote,.markdown p,.markdown pre,.markdown pre.prettyprint{margin:0 0 1.1em}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-weight:700;margin:1.2em 0 .6em}.markdown h1{font-size:2.4em}.markdown h2{font-size:2em}.markdown h3{font-size:1.5em}.markdown h4{font-size:1.25em}.markdown h5{font-size:1em}.markdown h6{font-size:.75em}.markdown hr{margin:2em 0;border:0;border-top:1px solid rgba(102,128,153,.1)}.markdown b,.markdown strong{font-weight:700}.markdown a{background-color:transparent;color:#1980e6!important;text-decoration:none}.markdown a:focus,.markdown a:hover{color:#0f4d8a!important;text-decoration:underline!important}.markdown table{border-collapse:collapse;border-spacing:0}.markdown table td,.markdown table th,.markdown table thead:first-child tr:first-child th{padding:.5em;border:1px solid #ddd;line-height:1.5}.markdown code{font-size:.9em;white-space:normal;color:#c7254e;background-color:#f9f2f4;border-radius:4px;padding:2px 4px}.markdown blockquote{background-color:rgba(102,128,153,.05);border-top-right-radius:5px;border-bottom-right-radius:5px;padding:15px 20px;border-left:10px solid rgba(102,128,153,.075)}.markdown blockquote p{margin:0}.markdown ul{padding-left:40px;margin-bottom:16px}.markdown ul li{list-style:disc}.markdown .note-tags a:hover{text-decoration:none!important}.markdown .note-tags a:hover .notebook{background:rgba(44,63,81,.3);color:#fff}.markdown .note-tags .notebook{-webkit-transition:background-color .2s ease-in-out,color .2s ease-in-out;transition:background-color .2s ease-in-out,color .2s ease-in-out;border-radius:0;padding:2px 5px;background-color:rgba(102,128,153,.175);color:rgba(44,63,81,.5);margin-right:6px}.markdown .highlight{margin:1em 0;border-radius:2px;line-height:1.1em;background-color:#f8f8f8}.markdown .highlight table{display:block;overflow-x:auto;overflow-y:hidden;background-color:#23241f}#header,.markdown .highlight .gutter{display:none}.markdown .highlight table,.markdown .highlight td,.markdown .highlight tr{width:100%;border-collapse:collapse;padding:0;margin:0;border:none}.markdown .highlight .code pre{padding:1.2em 1.4em;line-height:1.5em;margin:0}.markdown pre{color:#f8f8f2;-webkit-font-smoothing:auto}.markdown pre .constant,.markdown pre .function .keyword{color:#66d9ef}.markdown pre .attribute,.markdown pre .keyword{color:#f92672}.markdown pre .literal,.markdown pre .number{color:#ae81ff}.markdown pre .change,.markdown pre .clojure .built_in,.markdown pre .flow,.markdown pre .lisp .title,.markdown pre .nginx .title,.markdown pre .tag,.markdown pre .tag .title,.markdown pre .tex .special,.markdown pre .winutils{color:#f92672}.markdown pre .class .title,.markdown pre .tag{color:#fff}.markdown pre .regexp,.markdown pre .symbol,.markdown pre .symbol .string,.markdown pre .value{color:#42b983}.markdown pre .title{color:#a6e22e}.markdown pre .addition,.markdown pre .apache .cbracket,.markdown pre .apache .tag,.markdown pre .attr_selector,.markdown pre .built_in,.markdown pre .django .filter .argument,.markdown pre .django .template_tag,.markdown pre .django .variable,.markdown pre .envvar,.markdown pre .haskell .type,.markdown pre .javadoc,.markdown pre .preprocessor,.markdown pre .prompt,.markdown pre .pseudo,.markdown pre .ruby .class .parent,.markdown pre .smalltalk .array,.markdown pre .smalltalk .class,.markdown pre .smalltalk .localvars,.markdown pre .sql .aggregate,.markdown pre .stream,.markdown pre .string,.markdown pre .subst,.markdown pre .tag .value,.markdown pre .tex .command{color:#e6db74}.markdown pre .apache .sqbracket,.markdown pre .comment,.markdown pre .doctype,.markdown pre .java .annotation,.markdown pre .pi,.markdown pre .python .decorator,.markdown pre .shebang,.markdown pre .template_comment,.markdown pre .tex .formula{color:#75715e}.markdown pre .deletion{color:#BA4545}.markdown pre .coffeescript .javascript,.markdown pre .javascript .xml,.markdown pre .tex .formula,.markdown pre .xml .cdata,.markdown pre .xml .css,.markdown pre .xml .javascript,.markdown pre .xml .vbscript{opacity:.5}body{margin:0;padding:0;-webkit-text-size-adjust:none;-webkit-transition:-webkit-transform .2s cubic-bezier(.4,.01,.165,.99);transition:-webkit-transform .2s cubic-bezier(.4,.01,.165,.99);transition:transform .2s cubic-bezier(.4,.01,.165,.99);transition:transform .2s cubic-bezier(.4,.01,.165,.99),-webkit-transform .2s cubic-bezier(.4,.01,.165,.99);-webkit-tap-highlight-color:transparent;font-family:"Helvetica Neue",Arial,"Hiragino Sans GB",STHeiti,"Microsoft YaHei";-webkit-font-smoothing:antialiased}body,html{width:100%;height:100%}h1,h2,h3,h4,h5,h6{margin:0;padding:0;font-weight:400}a{text-decoration:none;color:#1980e6}a:hover{text-decoration:underline;color:#2479cc}*{-webkit-box-sizing:border-box;box-sizing:border-box}#header{width:100%;height:50px;line-height:50px;overflow:hidden;position:fixed;left:0;top:0;z-index:9;background-color:#323436}@media screen and (max-width:768px){#header{-webkit-transform:translate3D(0,0,0);-ms-transform:translate3D(0,0,0);transform:translate3D(0,0,0);-webkit-transition:all .2s cubic-bezier(.4,.01,.165,.99);transition:all .2s cubic-bezier(.4,.01,.165,.99);display:block}}body.side #header .btn-bar:before{width:24px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);top:25px}body.side #header .btn-bar:after{width:24px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);bottom:24px}body.side #header .btn-bar i{opacity:0}#header h1{text-align:center;font-size:16px}#header h1 a{color:#999}#header .btn-bar{width:50px;height:50px;position:absolute;left:0;top:0}#header .btn-bar i,#header .btn-bar:after,#header .btn-bar:before{width:22px;height:1px;position:absolute;left:14px;background-color:#999;-webkit-transition:all .2s cubic-bezier(.4,.01,.165,.99) .3s;transition:all .2s cubic-bezier(.4,.01,.165,.99) .3s}#main,#pagination{background-color:#fff}#header .btn-bar i{top:25px;opacity:1}#header .btn-bar:before{content:'';top:17px}#header .btn-bar:after{content:'';bottom:16px}#header a.me,#header a.me img{width:30px;height:30px;border-radius:30px;overflow:hidden}#header a.me{position:absolute;right:10px;top:10px}body.side{position:fixed;-webkit-transform:translate3D(250px,0,0);-ms-transform:translate3D(250px,0,0);transform:translate3D(250px,0,0)}#sidebar{width:250px;height:100%;position:fixed;left:0;top:0;background-color:#202020;overflow:auto;z-index:1;-webkit-overflow-scrolling:touch}#sidebar li,#sidebar ul{margin:0;padding:0;list-style:none}#sidebar .profile{padding-top:40px;padding-bottom:10px}#sidebar .profile a,#sidebar .profile img{width:120px;height:120px;border-radius:120px;overflow:hidden}#sidebar .profile a{display:block;margin:0 auto}#sidebar .profile span{display:block;padding:10px 0;font-size:18px;color:#999;text-align:center}#sidebar .buttons{margin:0 0 20px}#sidebar .buttons li{display:block;width:100%;height:45px;line-height:45px;font-size:16px}#sidebar .buttons li a{padding-left:25px;display:block;color:#999;-webkit-transition:color .2s cubic-bezier(.4,.01,.165,.99);transition:color .2s cubic-bezier(.4,.01,.165,.99);text-decoration:none}#sidebar .buttons li a i,#sidebar .buttons li a span{display:inline-block;vertical-align:middle}#sidebar .buttons li a i{font-size:20px;width:25px;height:45px;line-height:45px;text-align:center;margin-right:20px}#sidebar .buttons li a:hover{color:rgba(153,153,153,.8)}@media screen and (max-width:768px){#sidebar.behavior_1{-webkit-transform:translate3D(-250px,0,0);-ms-transform:translate3D(-250px,0,0);transform:translate3D(-250px,0,0)}#sidebar.behavior_2{-webkit-transform:translate3D(0,0,0);-ms-transform:translate3D(0,0,0);transform:translate3D(0,0,0)}#sidebar{-webkit-transition:-webkit-transform .2s cubic-bezier(.4,.01,.165,.99);transition:-webkit-transform .2s cubic-bezier(.4,.01,.165,.99);transition:transform .2s cubic-bezier(.4,.01,.165,.99);transition:transform .2s cubic-bezier(.4,.01,.165,.99),-webkit-transform .2s cubic-bezier(.4,.01,.165,.99)}#sidebar .profile{padding-top:20px;padding-bottom:20px}#sidebar .profile a,#sidebar .profile img{width:100px;height:100px;border-radius:100px}#sidebar .profile span{display:none}}@media screen and (min-width:769px) and (max-width:1024px){#sidebar{width:75px}#sidebar .profile{padding-top:20px}#sidebar .profile a,#sidebar .profile img{width:40px;height:40px;border-radius:40px}#sidebar .profile span{display:none}#sidebar .buttons li a{padding:0}#sidebar .buttons li a i{font-size:18px;display:block;margin:0 auto}#sidebar .buttons li a span{display:none}}#sidebar-mask{position:absolute;left:0;top:0;right:0;bottom:0;z-index:999;overflow:hidden;display:none;background-color:rgba(255,255,255,0)}#main{padding-left:250px;-webkit-overflow-scrolling:touch}#main .wrap{max-width:980px;margin:0 auto}@media screen and (min-width:768px) and (max-width:1024px){#main{padding-left:75px}}@media screen and (max-width:769px){#main{width:100%;padding-left:0;background-color:#eee;min-height:100%;padding-top:50px}}#page-index h1.search{padding:20px 30px;background-color:#f6f9fa;text-align:center;color:#999}#page-index h1.search b{color:#2479CC;padding:0 5px}#page-index article{border-bottom:1px solid #f6f9fa;border-top:1px solid #fff;padding:30px 30px 20px;position:relative}#page-index article a{color:#323436;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.4,.01,.165,.99);transition:color .2s cubic-bezier(.4,.01,.165,.99)}#page-index article a:hover{color:#2479CC}#page-index article .meta{position:relative;float:right;text-align:right;font-size:14px;line-height:14px;color:#555}#page-index article .meta .tags{padding-top:10px}#page-index article .meta .tags a{color:#666}#page-index article .meta .tags a:hover{color:#2479CC}#page-index article h1{font-size:24px;line-height:24px;font-weight:700;margin:0 0 25px}#page-index article .desc{font-size:16px;line-height:1.8;color:#999}#page-index article p.more{margin:15px 0 0;text-align:right}#page-index article p.more a{color:#2479CC}#page-index article p.more a:hover{text-decoration:underline}@media screen and (max-width:769px){#page-index h1.search{padding:10px;font-size:18px;background-color:#fff;margin-bottom:5px}#page-index article{margin:5px 5px 0;background-color:#fff;padding:10px}#page-index article .meta{display:none}#page-index article h1{font-size:22px;padding:5px 0 10px;margin:0}#page-index article .desc{color:#999;font-size:14px}#page-index article p.more{font-size:14px;margin:5px 0}}#pagination{height:70px;line-height:40px;padding:15px 20px;margin:0 auto;max-width:960px}#pagination li,#pagination ul{height:40px;margin:0;padding:0;list-style:none}#pagination li.prev{float:left}#pagination li.next{float:right}#pagination a{display:block;-webkit-transition:color .2s cubic-bezier(.4,.01,.165,.99),border .2s cubic-bezier(.4,.01,.165,.99);transition:color .2s cubic-bezier(.4,.01,.165,.99),border .2s cubic-bezier(.4,.01,.165,.99);border:1px solid #666;color:#666;text-decoration:none;padding:0 15px;border-radius:4px;text-align:center}#pagination a:hover{border-color:#323436;color:#222}@media screen and (max-width:769px){#pagination{height:50px;padding:5px 0;margin-top:5px}#pagination li{width:50%}#pagination a{width:100%;border-radius:0;border:none}#pagination a:first-child{border-right:1px solid #f6f9fa}}#page-archive{padding:0 30px}#page-archive section{position:relative}#page-archive section h1.year{border-top:1px solid #fff;line-height:35px;padding-top:15px;font-size:30px;color:#999;position:absolute;top:0;width:200px}#page-archive section h1.year::before{border-top:1px solid #eee;content:"";position:absolute;top:-2px;width:100%}#page-archive section article{margin-left:200px;padding:15px 0;border-bottom:1px solid #eee;border-top:1px solid #fff;position:relative}#page-archive section article h1{font-size:16px;line-height:35px;font-weight:400}#page-archive section article h1 a{color:#222;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.4,.01,.165,.99);transition:color .2s cubic-bezier(.4,.01,.165,.99)}#page-archive section article h1 a:hover{color:#2479CC}#page-archive section article .meta{color:#222;float:right;font-size:13px;line-height:35px;position:relative;text-align:right;width:auto}#page-archive section article .meta .time{margin-right:5px}#page-archive section article .meta a{color:#666;text-decoration:none}#page-archive section article .meta a:hover,#page-post article a:hover{color:#2479CC}@media screen and (max-width:769px){#page-archive{margin:0;padding:0}#page-archive section{margin:5px;background-color:#fff}#page-archive section h1.year{width:100%;position:static;font-size:24px;height:50px;line-height:50px;padding:0;text-align:center;border-bottom:1px solid #f6f9fa}#page-archive section h1.year::before{border:none}#page-archive section article{padding:5px;margin:0 10px 5px;border-bottom:1px solid #f6f9fa}#page-archive section article .meta{display:none}#page-archive section article h1{font-size:14px}}#page-about,#page-about section,#page-post,#page-tags{padding:30px}#page-tags{color:#222}#page-about h1,#page-tags h1{color:#999;margin-bottom:10px}#page-tags section{padding:5px 5px 0}#page-tags section a{display:inline-block;font-size:14px;padding:0 15px;height:40px;line-height:40px;color:rgba(36,121,204,.8);border:1px solid rgba(36,121,204,.8);border-radius:4px;margin:0 15px 10px 0;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.4,.01,.165,.99),border .2s cubic-bezier(.4,.01,.165,.99);transition:color .2s cubic-bezier(.4,.01,.165,.99),border .2s cubic-bezier(.4,.01,.165,.99)}#page-tags section a:hover{color:#2479CC;border-color:#2479CC}@media screen and (max-width:769px){#page-tags{padding:0;margin:5px;background-color:#fff;min-height:-webkit-calc(100% - 10px);min-height:calc(100% - 10px)}#page-about h1,#page-tags h1{font-size:24px;height:50px;line-height:50px;text-align:center;margin:0;border-bottom:1px solid #f6f9fa}#page-tags section{padding:10px 10px 0}#page-about{margin:5px;padding:0;background-color:#fff;min-height:-webkit-calc(100% - 10px);min-height:calc(100% - 10px)}#page-about section{padding:10px}}#page-post article{padding-bottom:20px;border-bottom:1px solid #eee;position:relative}#page-post article img{max-width:100%}#page-post article a{color:#222;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.4,.01,.165,.99);transition:color .2s cubic-bezier(.4,.01,.165,.99)}#page-post article .meta{position:relative;float:right;text-align:right;font-size:14px;line-height:14px;color:#555}#page-post article .meta .tags{padding-top:10px}#page-post article .meta .tags a{color:#666}#page-post article .meta .tags a:hover{color:#2479CC}#page-post article h1{margin-top:0;margin-bottom:25px}#page-post article .post-info{padding:20px 20px 10px;border:1px solid #dedede;background-color:#f6f9fa;font-size:14px}#page-post article .post-info i{color:#999}@media screen and (max-width:769px){#page-post{margin:5px;padding:10px;background-color:#fff}#page-post article .meta{display:none}#page-post article h1{font-size:24px;margin-bottom:10px}}#page-links,#page-links section{padding:30px}#page-links h1{color:#999;margin-bottom:10px}#page-links ul li{line-height:2}#page-links ul li i{display:inline-block;vertical-align:top;margin-right:5px;color:#5ab300}@media screen and (max-width:769px){#page-links{margin:5px;padding:0;background-color:#fff;min-height:-webkit-calc(100% - 10px);min-height:calc(100% - 10px)}#page-links h1{font-size:24px;height:50px;line-height:50px;text-align:center;margin:0;border-bottom:1px solid #f6f9fa}#page-links section{padding:10px}}#comments{color:#666}#comments h2{padding:10px 0} -------------------------------------------------------------------------------- /source/static/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/static/fonts/iconfont.eot -------------------------------------------------------------------------------- /source/static/fonts/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Created by FontForge 20120731 at Wed Jan 6 18:45:42 2016 6 | By Ads 7 | 8 | 9 | 10 | 24 | 26 | 28 | 30 | 32 | 36 | 42 | 45 | 48 | 51 | 54 | 57 | 60 | 66 | 71 | 73 | 78 | 81 | 84 | 88 | 90 | 92 | 94 | 98 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /source/static/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/static/fonts/iconfont.ttf -------------------------------------------------------------------------------- /source/static/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/static/fonts/iconfont.woff -------------------------------------------------------------------------------- /source/static/images/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/static/images/cover.jpg -------------------------------------------------------------------------------- /source/static/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/static/images/favicon.png -------------------------------------------------------------------------------- /source/static/images/gravatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imochen/hexo-theme-meizi/3dbc59f7b9527ab8274592ebb5e85e73320cea98/source/static/images/gravatar.jpg -------------------------------------------------------------------------------- /source/static/js/meizi.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded",function(){var e={isMob:function(){for(var e=navigator.userAgent.toLowerCase(),t=["Android","iPhone","SymbianOS","Windows Phone","iPad","iPod"],n=!1,a=0;a-1&&(n=!0);return n}()};e.isMob?document.documentElement.className+=" mob":document.documentElement.className+=" pc";var t={$sidebar:document.querySelector("#sidebar"),$main:document.querySelector("#main"),$sidebar_mask:document.querySelector("#sidebar-mask"),$body:document.body,$btn_side:document.querySelector("#header .btn-bar"),$article:document.querySelectorAll(".mob #page-index article"),init:function(){this.bindEvent()}};t.bindEvent=function(){var t=this,n="side",a="click",i="click";e.isMob&&(a="touchstart",i="touchend");for(var s=0;s-1?(t.$body.className=t.$body.className.replace(n,""),t.$sidebar_mask.style.display="none"):(t.$body.className+=" "+n,t.$sidebar_mask.style.display="block")},!1),this.$sidebar_mask.addEventListener(a,function(e){t.$body.className=t.$body.className.replace(n,""),t.$sidebar_mask.style.display="none",e.preventDefault()},!1),window.addEventListener("resize",function(){t.$body.className=t.$body.className.replace(n,""),t.$sidebar_mask.style.display="none"},!1)},t.init()},!1); --------------------------------------------------------------------------------