├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── README.zhCN.md ├── _config.yml ├── gulpfile.js ├── languages ├── en-us.yml └── zh-hans.yml ├── layout ├── _partial │ ├── _page.ejs │ ├── _post.ejs │ ├── archive.ejs │ ├── comments.ejs │ ├── footer.ejs │ ├── head.ejs │ ├── leftMenu.ejs │ └── middleCover.ejs ├── _widget │ ├── ads │ │ ├── adSense-scripts.ejs │ │ ├── adSense.ejs │ │ └── adaptive-unit.ejs │ ├── category-items.ejs │ ├── common-article.ejs │ ├── search-bar.ejs │ ├── sns-entry.ejs │ ├── third-scripts.ejs │ └── user-entry.ejs ├── archive.ejs ├── category.ejs ├── index.ejs ├── layout.ejs ├── page.ejs ├── post.ejs ├── tag.ejs └── tags.ejs ├── package.json ├── pnpm-lock.yaml └── source ├── 404.html ├── css ├── JSimple.css ├── JSimple.min.css ├── atom-one-dark.min.css ├── atom-one-light.min.css ├── default.min.css ├── fonts │ ├── FontAwesome.otf │ ├── FontModule.css │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── github-dark.min.css ├── github-light.min.css ├── highlight │ ├── atom-one-dark.css │ ├── atom-one-light.css │ ├── default.css │ ├── github-dark.css │ ├── github-light.css │ ├── one-dark.css │ ├── one-light.css │ ├── solarized-dark.css │ ├── solarized-light.css │ ├── tokyo-night-dark.css │ └── tokyo-night-light.css ├── one-dark.min.css ├── one-light.min.css ├── solarized-dark.min.css ├── solarized-light.min.css ├── tokyo-night-dark.min.css └── tokyo-night-light.min.css ├── images ├── 404-bg.webp ├── JSimple-Desktop-With-LocalSearch.png ├── JSimple-Desktop.png ├── avatar.webp ├── cover-day.webp ├── cover-night.webp ├── favicon.png ├── favicon.svg ├── logo.webp ├── pagespeed-test.png ├── rssFeed-bg.webp └── tags-bg.webp ├── js ├── SimpleCore.min.js └── lib │ ├── SimpleCore.js │ └── zepto.min.js └── warn.html /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Thumbs.db 3 | *.log 4 | node_modules/ 5 | 6 | ## Directory-based project format: 7 | .idea/ 8 | .vscode/ 9 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "12.20.0" 4 | install: 5 | npm install 6 | script: 7 | npm test && npm run build -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | #### I decide to make a change log for this project from 2019. Just want remember all of us's coding footprint. 2 | 3 | 4 | 5 | v1.1.0 - Aug 9, 2024 6 | 7 | > Long time no see, this version brings many updates and optimizations. Maybe it's the last update, use it and cherish it! 8 | 9 | * remove all those unnecessary configrations, keep it simpify, optimization and re-optimization 10 | * updated a lot of styles for home-page and post-page, even on mobile 11 | * use webp files insted of png which were default use under the theme images 12 | * added common highlight css themes for coding posts 13 | * accelerated website access, especially improved SEO performance. Now analyzed using the [pagespeed](https://pagespeed.web.dev) test with a score of 95 or higher 14 | * gulp support, that means we could use the best source files support 15 | 16 | 17 | v1.0.2 - May 18, 2021 18 | 19 | * optimize code line number width 20 | * fixed nav menu active background style 21 | * upgrade tag cloud, see: https://github.com/D0n9X1n/hexo-tag-cloud 22 | * update 404 default page styles 23 | 24 | v1.0.1 - Jua 16, 2021 25 | 26 | * optimize source loading time 27 | * optimize cover image loading 28 | * forbidden busuanzi fetch in homepage 29 | * fixed mathjax display problems 30 | 31 | v1.0.0 - July 26, 2020 32 | 33 | * combine and compress js & css 34 | 35 | 36 | v0.0.9.2 - July 25, 2020 37 | 38 | * Sns information update 39 | * Upgrade gitTalk js lib 40 | 41 | 42 | v0.0.9 - July 9, 2020 43 | 44 | * Cover image bugfix, see [issues-52](https://github.com/tangkunyin/hexo-theme-jsimple/issues/52) 45 | * Fix wrong guide url in readme. 46 | * Replace JQuery with Zepto which made lib size reduce to 9.7kb. 47 | * Remove lazyload image code. You can use this: https://www.npmjs.com/package/hexo-lazyload-image 48 | 49 | 50 | v0.0.8 - Mar 3, 2019 51 | 52 | * Gitalk support by pr [pr-36](https://github.com/tangkunyin/hexo-theme-jsimple/pull/36) 53 | * Default reading mode support [issues-37](https://github.com/tangkunyin/hexo-theme-jsimple/issues/37) 54 | * Code line number style error fixed [issues-32](https://github.com/tangkunyin/hexo-theme-jsimple/issues/32) 55 | * Hexo server error when local-search not been set [issues-34](https://github.com/tangkunyin/hexo-theme-jsimple/issues/34) 56 | * Baidu auto push support 57 | * Remove archive author when always you 58 | * Mathjax support 59 | 60 | v0.0.7 - Jau 12, 2019 61 | 62 | * Some `colors`、`font styles`、`body styles` optimized 63 | * Fixed the code-highlight-style spaces defects in night model 64 | * Make copyright year text to configurable 65 | * Update default donate qrcode and some tips 66 | * Update csp model field and 404 page description 67 | * Analytics now only support google 68 | * Google AdSense now support 69 | * Replace search module with `hexo-generator-search` 70 | * Image lazy-load support 71 | * ScrollBar hidden and go2Top bug fixed in Chrome 72 | * I18N optimized(English Only) 73 | * Post sticky top support 74 | 75 | 76 | v0.0.6 - Nov 5, 2018 77 | 78 | ... 79 | 80 | v0.0.5 - Jan 20, 2018 81 | 82 | ... 83 | 84 | v0.0.4 - Sep 3, 2017 85 | 86 | ... 87 | 88 | v0.0.3 - Sep 3, 2017 89 | 90 | ... 91 | 92 | v0.0.2 - Mar 5, 2017 93 | 94 | ... 95 | 96 | v0.0.1 - Feb 22, 2017 97 | 98 | * `JSimple` was born at the end of 2016. Feb 22, 2017, the first version was released. 99 | 100 | 101 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Mr.Seven 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JSimple 2 | 3 | > The style of this theme is inspired by the earlier stage of Jianshu.com 4 | 5 | **JSimple is a responsive blog theme for Hexo, including local search, day-night mode, article view count, etc.**. 6 | 7 | - [**☞ Preview Demo**](https://tomartisan.com) | [**For Chinese click here**](https://github.com/tangkunyin/hexo-theme-jsimple/blob/master/README.zhCN.md) 8 | 9 | ![JSimple-Desktop](/source/images/JSimple-Desktop.png) 10 | 11 | 12 | ## Usage 13 | 14 | ### 1. Download it to the theme folder of Hexo site 15 | 16 | ```bash 17 | cd themes 18 | 19 | git clone https://github.com/tangkunyin/hexo-theme-jsimple 20 | ``` 21 | 22 | ### 2. Add dependencies for runtime 23 | 24 | ```bash 25 | yarn add hexo-generator-search hexo-generator-sitemap 26 | ``` 27 | 28 | ### 3. Configurations for site and theme 29 | 30 | 1. Enable new theme: `theme: hexo-theme-jsimple` 31 | 2. Configure categories, local-search, site-map 32 | 33 | #### Config Details 34 | 35 | ##### For Site 36 | 37 | ```yml 38 | # Enable theme 39 | theme: hexo-theme-jsimple 40 | 41 | # Enable local search, you must do this, otherwise it will not work for search(when press 'Shift' key) 42 | search: 43 | path: search.json 44 | field: all 45 | content: true 46 | 47 | 48 | # Sitemap config. It's not necessary. 49 | ## Doc: https://github.com/hexojs/hexo-generator-sitemap#readme 50 | sitemap: 51 | rel: true 52 | tags: true 53 | categories: true 54 | path: 55 | - sitemap.xml 56 | - sitemap.txt 57 | 58 | # Category settings, need to correspond one-to-one in the theme settings. It is not recommended to have too many article categories 59 | default_category: top1 60 | category_map: 61 | 顶部菜单1: top1 62 | 顶部菜单2: top2 63 | 顶部菜单3: top3 64 | 顶部菜单4: top4 65 | ``` 66 | 67 | 68 | ##### For theme 69 | 70 | Config file under the theme folder, also named `_config.yml`. We can put site info, and third extensions in it. 71 | 72 | **Note: For site statistics and comments, only Google and Disqus are supported, and since there is no intention to support anything else, please do not submit PRs or ISSUES for this**, if you need other features, just do it yourself. 73 | 74 | > PS: The current version brings many updates and optimizations, enough to cover most application scenarios. so use it and cherish it, maybe the last update. 75 | 76 | ![JSimple-Desktop](/source/images/pagespeed-test.png) 77 | 78 | ## Other notes 79 | 80 | #### Local Search 81 | 82 | ![JSimple-Desktop](/source/images/JSimple-Desktop-With-LocalSearch.png) 83 | 84 | Because the search in the previous version didn't work well. Such as highlighting content, and responsive problems on small screens. 85 | 86 | So I replace it with `hexo-generator-search`. Thanks for [Next](https://github.com/theme-next/hexo-theme-next) theme. 87 | 88 | There are two Chinese articles that told how to create local-search in Hexo. 89 | 90 | - [hexo-generator-search](https://github.com/wzpan/hexo-generator-search) 91 | - [为 Hexo 博客创建本地搜索引擎](https://liam.page/2017/09/21/local-search-engine-in-Hexo-site/) 92 | 93 | 94 | #### AdSence 95 | 96 | From version `0.0.7`. Google AdSense has been added. If you don't need this, just close it. 97 | 98 | 99 | #### Something about Hexo optimizations 100 | 101 | > I have written some posts for optimizing Hexo usage, if need please refer below articles 102 | 103 | - [JSimple主题用户指南](https://tomartisan.com/groceries/jsimple-usage/) 104 | - [在hexo博客中打造相对完美的URL](https://tomartisan.com/groceries/hexo-perfect-link/) 105 | - [将Hexo博客url优化进行到底](https://tomartisan.com/groceries/permalink-optimize-hexo/) 106 | - [Update-for-JSimple-in-Early2019](https://tomartisan.com/groceries/the-update-for-jsimple-in-early2019/) 107 | 108 | ## Browser support 109 | 110 | ![](https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hipaper/master/source/preview/browser-support.png?raw=true) 111 | 112 | 113 | ## Contributing 114 | 115 | All kinds of contributions (enhancements, new features, documentation & code improvements, issues & bugs reporting) are welcome. 116 | 117 | Looking forward to your pull request. 118 | 119 | > Special thanks to iTimeTraveler and jiangmuzi, who designed the theme [Hipaper](https://github.com/iTimeTraveler/hexo-theme-hipaper) and [JianShu](https://github.com/jiangmuzi/jianshu). 120 | 121 | 122 | ## License 123 | 124 | JSimple is under the MIT license. See the [LICENSE](https://github.com/tangkunyin/hexo-theme-jsimple/blob/master/LICENSE) file for details. 125 | 126 | ## Thanks 127 | 128 | [Hexo](https://hexo.io) 129 | [Font Awesome](http://fontawesome.io) 130 | 131 | 132 | -------------------------------------------------------------------------------- /README.zhCN.md: -------------------------------------------------------------------------------- 1 | # JSimple 2 | 3 | > 主题样式参考简书早期时候的风格 4 | 5 | **适用于Hexo的三栏式主题。支持响应式、站内搜索、主流评论系统、文章浏览统计以及白天和夜间模式**. 6 | 7 | [**☞ 一睹为快**](https://tomartisan.com) | [**For English Document click here**](https://github.com/tangkunyin/hexo-theme-jsimple/blob/master/README.md) 8 | 9 | ![JSimple-Desktop](/source/images/JSimple-Desktop.png) 10 | 11 | ## 使用简介 12 | 13 | ### 1. 下载代码到hexo站点的theme文件夹 14 | 15 | ```bash 16 | cd themes 17 | 18 | git clone https://github.com/tangkunyin/hexo-theme-jsimple 19 | ``` 20 | 21 | ### 2. 添加必要的依赖 22 | 23 | ```bash 24 | yarn add hexo-generator-search hexo-generator-sitemap 25 | ``` 26 | 27 | ### 3. 站点配置文件,更新主题设置和主题必须的配置 28 | 29 | 1. 启用新主题:`theme: hexo-theme-jsimple` 30 | 2. 配置分类、搜索、站点地图等设置项(下文详述) 31 | 32 | 33 | ### 4. 运行测试 34 | 35 | ```bash 36 | yarn run server 37 | 38 | or 39 | 40 | hexo s 41 | ``` 42 | 43 | 44 | ## 配置说明 45 | 46 | ### 站点配置 47 | 48 | ```yml 49 | # 启用主题 50 | theme: hexo-theme-jsimple 51 | 52 | # 本地搜索配置,如果此项不配置。主题则无法使用搜索功能 53 | search: 54 | path: search.json 55 | field: all 56 | content: true 57 | 58 | 59 | # 网站地图配置 60 | ## Doc: https://github.com/hexojs/hexo-generator-sitemap#readme 61 | sitemap: 62 | rel: true 63 | tags: true 64 | categories: true 65 | path: 66 | - sitemap.xml 67 | - sitemap.txt 68 | 69 | # 分类配置,此处需要和主题中一一对应。文章分类不建议设置过多 70 | default_category: top1 71 | category_map: 72 | 顶部菜单1: top1 73 | 顶部菜单2: top2 74 | 顶部菜单3: top3 75 | 顶部菜单4: top4 76 | ``` 77 | 78 | ### 主题配置 79 | 80 | 在主题目录下的`_config.yml`中,设置站点信息、三方功能增强等。 81 | 由于 [_config.yml](https://github.com/tangkunyin/hexo-theme-jsimple/blob/master/_config.yml) 文件每一项头部均有说明,配置一看就明白了,此处就不再赘述。 82 | 83 | **要注意的是:对于站点统计和评论,仅支持Google和Disqus。因为就不打算支持别的,所以请勿提交这方面的PR或ISSUES**,像国内的备案号或其他模块更不会支持,有需要的朋友请自行解决。 84 | 85 | > PS:目前支持的功能基本上能完美覆盖正常使用,因此这或许是继上一次以来的最后一波更新。且用,且珍惜! 86 | 87 | ![JSimple-Desktop](/source/images/pagespeed-test.png) 88 | 89 | ### 其他 90 | 91 | #### 搜索模块 92 | 93 | ![JSimple-Desktop](/source/images/JSimple-Desktop-With-LocalSearch.png) 94 | 95 | 鉴于旧版本搜索有样式问题,另外检索词并不能匹配文章,也不能突出颜色。所以新版直接换成了`hexo-generator-search` 96 | 97 | - [hexo-generator-search](https://github.com/wzpan/hexo-generator-search) 98 | - [为 Hexo 博客创建本地搜索引擎](https://liam.page/2017/09/21/local-search-engine-in-Hexo-site/) 99 | 100 | 101 | #### AdSence广告 102 | 103 | 从`0.0.7`版本开始,新增了广告位。为什么是AdSence?第一,无需备案;第二,覆盖范围广。此功能需要申请账户。具体谷歌解决 104 | 105 | 106 | #### 主题配置指南相关 107 | 108 | 其中关于配置分类别名以及自定义文章链接,请看如下文章操作: 109 | 110 | - [JSimple主题用户指南](https://tomartisan.com/groceries/jsimple-usage/) 111 | - [在hexo博客中打造相对完美的URL](https://tomartisan.com/groceries/hexo-perfect-link/) 112 | - [将Hexo博客url优化进行到底](https://tomartisan.com/groceries/permalink-optimize-hexo/) 113 | - [Update-for-JSimple-in-Early2019](https://tomartisan.com/groceries/the-update-for-jsimple-in-early2019/) 114 | 115 | ## 浏览器支持 116 | 117 | ![](https://raw.githubusercontent.com/iTimeTraveler/hexo-theme-hipaper/master/source/preview/browser-support.png?raw=true) 118 | 119 | 120 | ## 贡献 121 | 122 | 啥都不说了,喜欢就点赞。欢迎`PR`。已知代码高亮不是太完美,强迫症可以试试下边的主题... 123 | 124 | > 特别感谢 `iTimeTraveler` 和 `jiangmuzi`, 他们提供了原型 [Hipaper](https://github.com/iTimeTraveler/hexo-theme-hipaper)、 [JianShu](https://github.com/jiangmuzi/jianshu). 125 | 126 | 127 | ## 鸣谢 128 | 129 | [Hexo](https://hexo.io) 130 | [Font Awesome](http://fontawesome.io) 131 | 132 | ## License 133 | 134 | JSimple is under the MIT license. See the [LICENSE](https://github.com/tangkunyin/hexo-theme-jsimple/blob/master/LICENSE) file for details. 135 | 136 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # 站点名称、简称 2 | site_name: JSimple 3 | short_name: JSM 4 | 5 | 6 | # 站长基本信息 7 | authorInfo: 8 | name: 托码斯 9 | home: https://bento.me/tomartisan 10 | desc: 一个爱吃苹果的「小黄人」 11 | avatar: /images/avatar.webp 12 | 13 | # 默认主题:浅色(day),深色(night) 14 | read_mode: day 15 | 16 | # 首页文章排序方式: 最新在前(-1),最老在前(1) 17 | home_page_sort: -1 18 | # 首页展示多少篇文章 19 | home_article_shown: 10 20 | 21 | # 代码高亮配置,采用 hightlight,样式在 css/hightlight/* 定义 22 | highlight_theme: atom-one 23 | 24 | 25 | # 顶部导航菜单名称和别名配置 26 | ## 此处申明的菜单条目,需要和站点根目录下"_config.yml"中分类的配置对应,建议不超过4个。如: 27 | ### default_category: top1 28 | ### category_map: 29 | ### 顶部菜单1: top1 30 | ### 顶部菜单2: top2 31 | ### 顶部菜单3: top3 32 | ### 顶部菜单4: top4 33 | menu: 34 | 顶部菜单1: top1 35 | 顶部菜单2: top2 36 | 顶部菜单3: top3 37 | 顶部菜单4: top4 38 | 39 | # 最左侧常驻的导航菜单,一般指向 /about 即可 40 | left_nav_menus: 41 | - uri: about 42 | title: About 43 | faName: fa-question-circle 44 | 45 | 46 | # 中间封面信息 47 | middleCover: 48 | title: 用代码摇滚这个世界 49 | description: 一个关注科技与人文的技术博客 50 | # 中间封面社交连接 51 | sns: 52 | github: https://github.com/tangkunyin 53 | youtube: https://www.youtube.com/@itomartisan 54 | 55 | 56 | # 站点互动信息连接,如聊天室和捐赠地址 57 | chatLink: https://t.me/itomartisan 58 | donateLink: https://buymeacoffee.com/tomartisan 59 | 60 | 61 | # 文章内容申明 62 | post_declare: 63 | enable: true 64 | desc: 本文内容由XXX创作整理,读者若需转载,请保留出处,谢谢! 65 | 66 | # 站点创建时间,用于页底动态展示:成立X天 67 | site_creation: 68 | year: 2020 69 | fulltime: 08/08/2024 70 | 71 | # 托管商信息 72 | serveInfo: 73 | name: github 74 | url: https://pages.github.com 75 | 76 | 77 | # 本地搜索 78 | # 依赖库: https://github.com/theme-next/hexo-generator-searchdb 79 | local_search: 80 | # if auto, trigger search by changing input 81 | # if manual, trigger search by pressing enter key or search button 82 | trigger: auto 83 | # show top n results per article, show all results by setting to -1 84 | top_n_per_article: 1 85 | # unescape html strings to the readable one 86 | unescape: false 87 | 88 | ## 网站统计,仅支持Google。需要别的自行修改源码 89 | analytics: 90 | enable: false 91 | shortname: tomax 92 | 93 | ## 网站评论,仅支持Disqus。需要别的自行修改源码 94 | comments: 95 | enable: false 96 | configId: 12345 97 | 98 | ## 微软的clarity服务 99 | clarity: 100 | enable: false 101 | configId: 54321 102 | 103 | ## Google AdSense. 104 | adsense: 105 | auto: false 106 | client_id: 107 | page_tb_id: 108 | archive_id: 109 | tags_id: 110 | post_inner_id: 111 | post_left_id: 112 | post_right_id: 113 | 114 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | import gulp from "gulp"; 2 | import babel from "gulp-babel"; 3 | import minifycss from "gulp-clean-css"; 4 | import uglify from "gulp-uglify"; 5 | import rename from "gulp-rename"; 6 | import concat from "gulp-concat"; 7 | 8 | process.on('unhandledRejection', error => { 9 | console.error('unhandledRejection', error); 10 | process.exit(1); 11 | }); 12 | 13 | const CleanCssOps = { 14 | level: { 15 | 1: { 16 | specialComments: 0 17 | }, 18 | 2: { 19 | all: true 20 | } 21 | } 22 | } 23 | 24 | const cssLib = ["./source/css/fonts/FontModule.css"]; 25 | gulp.task('build-theme-minifyCss', async function () { 26 | await gulp 27 | .src(cssLib.concat('./source/css/JSimple.css')) 28 | .pipe(minifycss(CleanCssOps)) 29 | .pipe(concat("./source/css/JSimple.min.css")) 30 | .pipe(gulp.dest('./')); 31 | }); 32 | gulp.task("build-highlight-minifyCss", async function () { 33 | await gulp 34 | .src("./source/css/highlight/*.css") 35 | .pipe(minifycss(CleanCssOps)) 36 | .pipe(rename({ extname: ".min.css" })) 37 | .pipe(gulp.dest("./source/css")); 38 | }); 39 | 40 | 41 | const jsLib = ["./source/js/lib/zepto.min.js"]; 42 | gulp.task('build-minifyJs', async function () { 43 | await gulp 44 | .src(jsLib.concat('./source/js/lib/SimpleCore.js')) 45 | .pipe( 46 | babel({ 47 | ignore: jsLib, 48 | presets: ['@babel/preset-env'] 49 | }) 50 | ) 51 | .pipe(uglify()) 52 | .pipe(concat('./source/js/SimpleCore.min.js')) 53 | .pipe(gulp.dest('./')); 54 | }); 55 | 56 | 57 | gulp.task( 58 | "build-minifyCss", 59 | gulp.parallel("build-theme-minifyCss", "build-highlight-minifyCss", function (done) { 60 | done(); 61 | }) 62 | ); 63 | 64 | 65 | gulp.task( 66 | 'default', 67 | gulp.parallel('build-minifyCss', 'build-minifyJs', function (done) { 68 | done(); 69 | }) 70 | ); 71 | -------------------------------------------------------------------------------- /languages/en-us.yml: -------------------------------------------------------------------------------- 1 | home: Home 2 | archives: Archives 3 | about: About 4 | app: App 5 | map: SiteMap 6 | categories: Categories 7 | search: Search 8 | search_tip: Press Shift to Search 9 | search_placeholder: Input query keywords here... 10 | tags: Tags 11 | tagcloud: Tag Cloud 12 | prev: Prev 13 | next: Next 14 | comment: Comments 15 | page: Page %d 16 | recent_posts: Latest 17 | newer: Newer 18 | older: Older 19 | share: Share 20 | category: Category 21 | tag: Tag 22 | connect: 'Connect With Us' 23 | post_total_count: Nice 🥳 %d posts in total. Keep on posting. 24 | tag_total_count: There are %d tags so far. 25 | read_more: Continue Reading → 26 | contents: Contents 27 | none: None 28 | donate: Buymeacoffee 29 | buildTip: Has been established 30 | day: Days 31 | based_on: Based on 32 | theme_by: Theme by 33 | author: Author 34 | hosted: Hosted 35 | last_edited: Last edited at 36 | post_words_count: emm... %d words in the article 37 | post_view_count_prefix: you are the 38 | post_view_count_subfix: th visited person 39 | post_declare: Warning 40 | sticky: Stickied 41 | -------------------------------------------------------------------------------- /languages/zh-hans.yml: -------------------------------------------------------------------------------- 1 | home: 首页 2 | archives: 归档 3 | about: 关于 4 | app: 应用 5 | map: 网站地图 6 | categories: 分类 7 | search: 搜索 8 | search_tip: 按Shift启动搜索 9 | search_placeholder: 请输入查询关键词 10 | tags: 标签 11 | tagcloud: 标签云 12 | prev: 上一页 13 | next: 下一页 14 | comment: 留言 15 | page: 第 %d 页 16 | recent_posts: 最新 17 | newer: 上一篇 18 | older: 下一篇 19 | share: 分享 20 | category: 类目 21 | tag: 标签 22 | connect: '联系我们' 23 | post_total_count: 截止目前,本站累计发布文章%d篇,创作仍在继续... 24 | tag_total_count: 总的来说,本站目前涉及%d个细分领域,请继续保持关注... 25 | read_more: '阅读全文' 26 | contents: 文章目录 27 | none: 无 28 | donate: 赞赏 29 | buildTip: 本站已建立 30 | day: 天 31 | based_on: 基于 32 | theme_by: 主题采用 33 | author: 作者 34 | hosted: 托管于 35 | last_edited: 最后编辑于 36 | post_words_count: 本文共计%d个字 37 | post_view_count_prefix: 你是第 38 | post_view_count_subfix: 位到访读者 39 | post_declare: 声明 40 | sticky: 置顶 41 | -------------------------------------------------------------------------------- /layout/_partial/_page.ejs: -------------------------------------------------------------------------------- 1 |
2 | 6 |
7 | <%- partial('_widget/common-article', {post: post}) %> 8 | -------------------------------------------------------------------------------- /layout/_partial/_post.ejs: -------------------------------------------------------------------------------- 1 |
2 | 15 |
16 | <%- partial('_widget/common-article', {post: post}) %> 17 | -------------------------------------------------------------------------------- /layout/_partial/archive.ejs: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 |
15 | 16 | <% page.posts.sort('date', theme.home_page_sort).limit(theme.home_article_shown).each(function(post){ %> 17 | <%- partial('_widget/category-items', {post: post}) %> 18 | <% }) %> 19 |
20 | <% if (page.total > 1){ %> 21 |
22 | <% var prev_text = __('prev');var next_text = __('next') %> 23 | <%- paginator({ 24 | prev_text: prev_text, 25 | next_text: next_text 26 | }) %> 27 |
28 | <% } %> 29 | <%- partial('_widget/ads/adSense') %> -------------------------------------------------------------------------------- /layout/_partial/comments.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.comments.enable){ %> 2 | <% if (theme.comments.shortname) { %> 3 |
4 | 18 | 19 | <% } %> 20 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/footer.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/_partial/head.ejs: -------------------------------------------------------------------------------- 1 | 4 | <% 5 | var siteTitle = page.title; 6 | var keywords = page.keywords ? page.keywords : config.keywords; 7 | var description = ""; 8 | 9 | 10 | if (is_archive()) { 11 | siteTitle = __('archives'); 12 | if (is_month()) { 13 | siteTitle += ' | ' + page.year + '/' + page.month; 14 | } else if (is_year()) { 15 | siteTitle += ' | ' + page.year; 16 | } 17 | } else if (is_category()) { 18 | siteTitle = __('categories') + ' | ' + page.category; 19 | } else if (is_tag()) { 20 | siteTitle = __('tags') + ' | ' + page.tag; 21 | } 22 | 23 | 24 | if (page.description) { 25 | description = page.description; 26 | } else if (page.content) { 27 | description = strip_html(page.content); 28 | } else { 29 | description = config.description; 30 | } 31 | description = description.substring(0, 200).replace(/^\s+|\s+$/g, ''); 32 | %> 33 | 34 | <% if (siteTitle){ %><%= __(siteTitle.toLowerCase()) %> | <% } %><%= config.title %><% if (is_home()){ %> | <%= config.subtitle %><% } %> 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | <% if (is_post() || is_page()) { %> 54 | 55 | 56 | <% } %> 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /layout/_partial/leftMenu.ejs: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /layout/_partial/middleCover.ejs: -------------------------------------------------------------------------------- 1 |
2 | cover-img 3 |
4 | avatar 5 |

<%= theme.site_name %>

6 |

<%= theme.middleCover.title %>

7 |

<%= theme.middleCover.description %>

8 |
9 | <%- partial('_widget/sns-entry') %> 10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /layout/_widget/ads/adSense-scripts.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/_widget/ads/adSense.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.adsense.client_id){ %> 2 | <% if (is_archive()){ %> 3 |

4 | <%- partial('adaptive-unit', {format: 'auto', slotId: theme.adsense.archive_id, adStyles: 'display:block'}) %> 5 |

6 | <% } else if ('tags' === page.layout) { %> 7 |

8 | <%- partial('adaptive-unit', {format: 'auto', slotId: theme.adsense.tags_id, adStyles: 'display:block'}) %> 9 |

10 | <% } else if (is_post()) { %> 11 |
12 | <%- partial('adaptive-unit', {format: 'fixed', slotId: theme.adsense.post_left_id, adStyles: 'display:inline-block;width:160px;height:600px'}) %> 13 |
14 |
15 | <%- partial('adaptive-unit', {format: 'fixed', slotId: theme.adsense.post_right_id, adStyles: 'display:inline-block;width:160px;height:600px'}) %> 16 |
17 |

18 | <%- partial('adaptive-unit', {format: 'fluid', slotId: theme.adsense.post_inner_id, adStyles: 'display:block; text-align:center;'}) %> 19 |

20 | <% } else if (is_page()) { %> 21 |
22 | <%- partial('adaptive-unit', {format: 'fixed', slotId: theme.adsense.post_right_id, adStyles: 'display:inline-block;width:160px;height:600px'}) %> 23 |
24 |

25 | <%- partial('adaptive-unit', {format: 'auto', slotId: theme.adsense.page_tb_id, adStyles: 'display:block'}) %> 26 |

27 | <% } %> 28 | <% if (is_archive() || 'tags' === page.layout || is_page() || is_post()) { %> 29 | <%- partial('adSense-scripts', {type: 'custom'}) %> 30 | <% } else if (theme.adsense.auto && (is_home() || is_category() || is_tag())) { %> 31 | <%- partial('adSense-scripts', {type: 'auto'}) %> 32 | <% } %> 33 | <% } %> -------------------------------------------------------------------------------- /layout/_widget/ads/adaptive-unit.ejs: -------------------------------------------------------------------------------- 1 | <% if (format === 'auto') { %> 2 | 8 | <% } else if (format === 'fluid') { %> 9 | 15 | <% } else { %> 16 | 20 | <% } %> -------------------------------------------------------------------------------- /layout/_widget/category-items.ejs: -------------------------------------------------------------------------------- 1 | <% var external_link = config.external_link ? '_blank' : '_self'; %> 2 |
3 | <% if (post.photos && post.photos.length){ %> 4 | 5 |
6 | <%= post.title %>-<%= theme.site_name %> 7 |
8 | <% } %> 9 |
10 | 19 |

20 | <%= post.title %> 21 |

22 | 29 |
30 |
31 | <%= post.description || post.title %> 32 |
33 |
34 | 35 | 36 | -------------------------------------------------------------------------------- /layout/_widget/common-article.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 14 |

15 | <%- post.title %> 16 |

17 | 23 |
24 |
25 | <%- post.content %> 26 | <% if(post.layout && post.layout === 'post') { %> 27 | <%- partial('_widget/ads/adSense', null, { cache: false }) %> 28 | <% } %> 29 |
30 | 31 | <% if (theme.donateLink){ %> 32 |
33 | 34 | <%= __('donate') %> 35 | 36 |
37 | <% } %> 38 | 39 | <% if (post.tags){ %> 40 | 45 | <% } %> 46 |
47 | <% if(post.layout && post.layout === 'post' && theme.post_declare) { %> 48 |

<%= __('post_declare') %>: <%= theme.post_declare.desc %>

49 | <% } %> 50 | <% if(post.layout && post.layout !== 'post') { %> 51 | <%- partial('_widget/ads/adSense', null, { cache: false }) %> 52 | <% } %> 53 | <%- partial('_partial/comments', null, { cache: false }) %> 54 |
-------------------------------------------------------------------------------- /layout/_widget/search-bar.ejs: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /layout/_widget/sns-entry.ejs: -------------------------------------------------------------------------------- 1 | <% for (let snsKey in theme.middleCover.sns){ %> 2 |
3 | 4 | 5 | 6 |
7 | <% } %> 8 | -------------------------------------------------------------------------------- /layout/_widget/third-scripts.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <% if (is_post() || is_page()) { %> 5 | <% if (theme.comments.enable){ %> 6 | 7 | <% } %> 8 | <% } %> 9 | 10 | 11 | <% if (theme.analytics.enable){ %> 12 | 13 | 19 | <% } %> 20 | 21 | 22 | <% if (theme.clarity.enable){ %> 23 | 30 | <% } %> -------------------------------------------------------------------------------- /layout/_widget/user-entry.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/archive.ejs: -------------------------------------------------------------------------------- 1 |
2 | 7 |
8 |
9 |
10 |
11 |

<%= __('post_total_count', site.posts.length) %>

12 |
13 | <%- partial('_widget/ads/adSense') %> 14 |
15 |
16 | <% var lastDate; %> 17 | <% site.posts.sort('date', theme.home_page_sort).each(function(post, i){ %> 18 | <% var currentDate = parseInt(date(post.date, 'YYYYMM')); %> 19 | <% if (lastDate != currentDate){ %> 20 | <% lastDate = currentDate; %> 21 |
22 |

<%= date(post.date, 'YYYY') %>年<%= date(post.date, 'MM') %>月

23 |
    24 | <% } %> 25 |
  • 26 | 27 | <%= post.title %> 28 | <% if(post.author && theme.authorInfo.name && post.author != theme.authorInfo.name) { %> 29 | ,作者 32 | <% } %> 33 |

  • 34 | <% if (!site.posts.sort('date', theme.home_page_sort).eq(i + 1) || currentDate != parseInt(date(site.posts.sort('date', theme.home_page_sort).eq(i + 1).date, 'YYYYMM'))){ %> 35 |
36 |
37 | <% } %> 38 | <% }) %> 39 |
40 |
41 |
42 |
43 | -------------------------------------------------------------------------------- /layout/category.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive', {pagination: config.category, index: true}) %> -------------------------------------------------------------------------------- /layout/index.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive', {pagination: 2, index: true}) %> -------------------------------------------------------------------------------- /layout/layout.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <%- partial('_partial/head') %> 5 | 6 | 7 | <%- partial('_partial/leftMenu') %> 8 | <%- partial('_widget/user-entry') %> 9 |
10 |
11 |
12 | <%- partial('_partial/middleCover') %> 13 | <%- body %> 14 |
15 |
16 | <%- partial('_partial/footer') %> 17 |
18 | 19 | 37 |
38 | 39 |
40 | 41 | <%- partial('_widget/third-scripts', null, { cache: false }) %> 42 | 43 | -------------------------------------------------------------------------------- /layout/page.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/_page', {post: page, index: false}) %> -------------------------------------------------------------------------------- /layout/post.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/_post', {post: page, index: false}) %> -------------------------------------------------------------------------------- /layout/tag.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive', {pagination: config.tag, index: true}) %> -------------------------------------------------------------------------------- /layout/tags.ejs: -------------------------------------------------------------------------------- 1 |
2 | 7 |
8 |
9 |
10 |
11 |

<%= __('tag_total_count', site.tags.length) %>

12 |
13 |

tags-bg

14 |
15 | 24 |
25 |
26 | <%- partial('_widget/ads/adSense') %> 27 |
28 |
29 |
-------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-theme-jsimple", 3 | "version": "1.1.0", 4 | "description": "Simple three column theme for Hexo.Inspired by JianShu.com", 5 | "license": "MIT", 6 | "keywords": [ 7 | "Simple", 8 | "Three Column", 9 | "Jian Shu", 10 | "Hexo" 11 | ], 12 | "author": { 13 | "name": "Thomas Tang", 14 | "url": "https://tomartisan.com", 15 | "email": "hello@tangkunyin.com" 16 | }, 17 | "scripts": { 18 | "lint": "ejslint ./layout/*", 19 | "build:css": "gulp build-minifyCss", 20 | "build:all": "gulp", 21 | "publish": "pnpm run lint && pnpm run build:all" 22 | }, 23 | "type": "module", 24 | "packageManager": "pnpm@9.4.0", 25 | "devDependencies": { 26 | "ejs-lint": "^2.0.0", 27 | "@babel/core": "^7.23.9", 28 | "@babel/preset-env": "^7.23.9", 29 | "gulp": "^4.0.2", 30 | "gulp-babel": "^8.0.0", 31 | "gulp-clean-css": "^4.3.0", 32 | "gulp-concat": "^2.6.1", 33 | "gulp-rename": "^2.0.0", 34 | "gulp-uglify": "^3.0.2" 35 | }, 36 | "repository": { 37 | "type": "git", 38 | "url": "git+https://github.com/tangkunyin/hexo-theme-jsimple.git" 39 | }, 40 | "bugs": { 41 | "url": "https://github.com/tangkunyin/hexo-theme-jsimple/issues" 42 | }, 43 | "engines": { 44 | "node": ">=18" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /source/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 404 - Not Found 6 | 7 | 53 | 65 | 66 | 67 | 68 |
69 | 70 |
71 |
72 |
73 |

404 !

74 |

Page not found...

75 |

Return to home page afterseconds

76 |
77 | 78 | 79 | -------------------------------------------------------------------------------- /source/css/atom-one-dark.min.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline} -------------------------------------------------------------------------------- /source/css/atom-one-light.min.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#c18401}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline} -------------------------------------------------------------------------------- /source/css/default.min.css: -------------------------------------------------------------------------------- 1 | .markdown-body .gist,.markdown-body .highlight,.markdown-body pre{border-style:solid;border-color:#eef1f8;border-width:1px 0;background:#f8f8f8}.markdown-body .gist .gist-file,.markdown-body code,.markdown-body pre{font-family:"Source Code Pro",Consolas,Monaco,Menlo,Consolas,monospace}.markdown-body .highlight,.markdown-body pre{margin:10px 0;padding:5px;overflow:auto;color:#4d4d4c;line-height:22px}.markdown-body .gist .gist-file .gist-data .line-numbers,.markdown-body .highlight .gutter pre{color:#666;font-size:.85em}.markdown-body code{background:rgba(208,211,248,.2);color:#333;padding:0 .3em}.markdown-body pre code{background:0 0;text-shadow:none;padding:0}.markdown-body .highlight pre{border:none;margin:0}.markdown-body .highlight table{margin:0;width:auto;border:none}.markdown-body .highlight tbody{margin:0;display:flex}.markdown-body .highlight td{border:none;padding:0}.markdown-body .highlight figcaption{font-size:.85em;color:#8e908c;line-height:1em;margin-bottom:1em}.markdown-body .highlight figcaption:after,.markdown-body .highlight figcaption:before{content:"";display:table}.markdown-body .highlight figcaption:after{clear:both}.markdown-body .highlight figcaption a{float:right}.markdown-body .highlight .gutter{width:50px}.markdown-body .highlight .code{flex:1}.markdown-body .highlight .gutter pre{text-align:center}.markdown-body .highlight .line{height:22px}.markdown-body .highlight .line.marked{background:#d6d6d6}.markdown-body .gist{margin:0 -20px;padding:15px 20px 15px 0}.markdown-body .gist .gist-file{border:none;margin:0}.markdown-body .gist .gist-file .gist-data{background:0 0;border:none}.markdown-body .gist .gist-file .gist-data .line-numbers{background:0 0;border:none;padding:0 20px 0 0}.markdown-body .gist .gist-file .gist-data .line-data{padding:0!important}.markdown-body .gist .gist-file .highlight{margin:0;padding:0;border:none}.markdown-body .gist .gist-file .gist-meta{background:#f8f8f8;color:#8e908c;font:.85em -apple-system,Arial,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;text-shadow:0 0;padding:0;margin-top:1em;margin-left:20px}.markdown-body .gist .gist-file .gist-meta a{color:color-link;font-weight:400}.markdown-body .gist .gist-file .gist-meta a:hover{text-decoration:underline}.markdown-body figure td.code pre{white-space:pre!important}.markdown-body figure table tr{display:flex!important;justify-content:flex-start!important}pre .attribute,pre .css .class,pre .css .id,pre .css .pseudo,pre .html .doctype,pre .regexp,pre .ruby .constant,pre .tag,pre .variable,pre .xml .doctype,pre .xml .pi,pre .xml .tag .title{color:#c82829}pre .built_in,pre .constant,pre .literal,pre .number,pre .params,pre .preprocessor{color:#fb6d19}pre .class,pre .css .rules .attribute,pre .header,pre .inheritance,pre .ruby .class .title,pre .ruby .symbol,pre .string,pre .value,pre .xml .cdata{color:#718c00}pre .css .hexcolor{color:#3e999f}pre .coffeescript .title,pre .function,pre .javascript .title,pre .perl .sub,pre .python .decorator,pre .python .title,pre .ruby .function .title,pre .ruby .title .keyword{color:#4271ae}pre .javascript .function,pre .keyword{color:#8959a8}pre{color:#525252}pre .constant,pre .function .keyword{color:#0092db}pre .attribute,pre .keyword{color:#e96900}pre .literal,pre .number{color:#ae81ff}pre .change,pre .clojure .built_in,pre .flow,pre .lisp .title,pre .nginx .title,pre .tag,pre .tag .title,pre .tex .special,pre .winutils{color:#2973b7}pre .addition,pre .apache .cbracket,pre .apache .tag,pre .attr_selector,pre .built_in,pre .django .filter .argument,pre .django .template_tag,pre .django .variable,pre .envvar,pre .haskell .type,pre .javadoc,pre .preprocessor,pre .prompt,pre .pseudo,pre .regexp,pre .ruby .class .parent,pre .smalltalk .array,pre .smalltalk .class,pre .smalltalk .localvars,pre .sql .aggregate,pre .stream,pre .string,pre .subst,pre .symbol,pre .symbol .string,pre .tag .value,pre .tex .command,pre .value{color:#42b983}pre .title{color:#83b917}pre .apache .sqbracket,pre .comment,pre .doctype,pre .java .annotation,pre .pi,pre .python .decorator,pre .shebang,pre .template_comment,pre .tex .formula{color:#b3b3b3}pre .deletion{color:#ba4545}pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .cdata,pre .xml .css,pre .xml .javascript,pre .xml .vbscript{opacity:.5}.night-mode blockquote,.night-mode code,.night-mode pre{background-color:#333!important;border-color:#2f2f2f;color:#f3f3f3} -------------------------------------------------------------------------------- /source/css/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/css/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /source/css/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/css/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /source/css/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/css/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /source/css/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/css/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /source/css/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/css/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /source/css/github-dark.min.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c} -------------------------------------------------------------------------------- /source/css/github-light.min.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0} -------------------------------------------------------------------------------- /source/css/highlight/atom-one-dark.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: 1em 5 | } 6 | 7 | code.hljs { 8 | padding: 3px 5px 9 | } 10 | 11 | /* 12 | 13 | Atom One Dark by Daniel Gamage 14 | Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax 15 | 16 | base: #282c34 17 | mono-1: #abb2bf 18 | mono-2: #818896 19 | mono-3: #5c6370 20 | hue-1: #56b6c2 21 | hue-2: #61aeee 22 | hue-3: #c678dd 23 | hue-4: #98c379 24 | hue-5: #e06c75 25 | hue-5-2: #be5046 26 | hue-6: #d19a66 27 | hue-6-2: #e6c07b 28 | 29 | */ 30 | 31 | .hljs { 32 | color: #abb2bf; 33 | background: #282c34; 34 | } 35 | 36 | .hljs-comment, 37 | .hljs-quote { 38 | color: #5c6370; 39 | font-style: italic; 40 | } 41 | 42 | .hljs-doctag, 43 | .hljs-keyword, 44 | .hljs-formula { 45 | color: #c678dd; 46 | } 47 | 48 | .hljs-section, 49 | .hljs-name, 50 | .hljs-selector-tag, 51 | .hljs-deletion, 52 | .hljs-subst { 53 | color: #e06c75; 54 | } 55 | 56 | .hljs-literal { 57 | color: #56b6c2; 58 | } 59 | 60 | .hljs-string, 61 | .hljs-regexp, 62 | .hljs-addition, 63 | .hljs-attribute, 64 | .hljs-meta .hljs-string { 65 | color: #98c379; 66 | } 67 | 68 | .hljs-attr, 69 | .hljs-variable, 70 | .hljs-template-variable, 71 | .hljs-type, 72 | .hljs-selector-class, 73 | .hljs-selector-attr, 74 | .hljs-selector-pseudo, 75 | .hljs-number { 76 | color: #d19a66; 77 | } 78 | 79 | .hljs-symbol, 80 | .hljs-bullet, 81 | .hljs-link, 82 | .hljs-meta, 83 | .hljs-selector-id, 84 | .hljs-title { 85 | color: #61aeee; 86 | } 87 | 88 | .hljs-built_in, 89 | .hljs-title.class_, 90 | .hljs-class .hljs-title { 91 | color: #e6c07b; 92 | } 93 | 94 | .hljs-emphasis { 95 | font-style: italic; 96 | } 97 | 98 | .hljs-strong { 99 | font-weight: bold; 100 | } 101 | 102 | .hljs-link { 103 | text-decoration: underline; 104 | } -------------------------------------------------------------------------------- /source/css/highlight/atom-one-light.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: 1em 5 | } 6 | 7 | code.hljs { 8 | padding: 3px 5px 9 | } 10 | 11 | /* 12 | 13 | Atom One Light by Daniel Gamage 14 | Original One Light Syntax theme from https://github.com/atom/one-light-syntax 15 | 16 | base: #fafafa 17 | mono-1: #383a42 18 | mono-2: #686b77 19 | mono-3: #a0a1a7 20 | hue-1: #0184bb 21 | hue-2: #4078f2 22 | hue-3: #a626a4 23 | hue-4: #50a14f 24 | hue-5: #e45649 25 | hue-5-2: #c91243 26 | hue-6: #986801 27 | hue-6-2: #c18401 28 | 29 | */ 30 | 31 | .hljs { 32 | color: #383a42; 33 | background: #fafafa; 34 | } 35 | 36 | .hljs-comment, 37 | .hljs-quote { 38 | color: #a0a1a7; 39 | font-style: italic; 40 | } 41 | 42 | .hljs-doctag, 43 | .hljs-keyword, 44 | .hljs-formula { 45 | color: #a626a4; 46 | } 47 | 48 | .hljs-section, 49 | .hljs-name, 50 | .hljs-selector-tag, 51 | .hljs-deletion, 52 | .hljs-subst { 53 | color: #e45649; 54 | } 55 | 56 | .hljs-literal { 57 | color: #0184bb; 58 | } 59 | 60 | .hljs-string, 61 | .hljs-regexp, 62 | .hljs-addition, 63 | .hljs-attribute, 64 | .hljs-meta .hljs-string { 65 | color: #50a14f; 66 | } 67 | 68 | .hljs-attr, 69 | .hljs-variable, 70 | .hljs-template-variable, 71 | .hljs-type, 72 | .hljs-selector-class, 73 | .hljs-selector-attr, 74 | .hljs-selector-pseudo, 75 | .hljs-number { 76 | color: #986801; 77 | } 78 | 79 | .hljs-symbol, 80 | .hljs-bullet, 81 | .hljs-link, 82 | .hljs-meta, 83 | .hljs-selector-id, 84 | .hljs-title { 85 | color: #4078f2; 86 | } 87 | 88 | .hljs-built_in, 89 | .hljs-title.class_, 90 | .hljs-class .hljs-title { 91 | color: #c18401; 92 | } 93 | 94 | .hljs-emphasis { 95 | font-style: italic; 96 | } 97 | 98 | .hljs-strong { 99 | font-weight: bold; 100 | } 101 | 102 | .hljs-link { 103 | text-decoration: underline; 104 | } -------------------------------------------------------------------------------- /source/css/highlight/default.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * 扩展主题,使其支持行号和暗黑模式 3 | * 提示:当 line_number 和 wrap 为 false,hljs 为 true 的时候,本样式无效 4 | */ 5 | .markdown-body pre, 6 | .markdown-body .highlight { 7 | background: #f8f8f8; 8 | margin: 10px 0; 9 | padding: 5px; 10 | border-style: solid; 11 | border-color: #eef1f8; 12 | border-width: 1px 0; 13 | overflow: auto; 14 | color: #4d4d4c; 15 | line-height: 22px; 16 | } 17 | 18 | .markdown-body .highlight .gutter pre, 19 | .markdown-body .gist .gist-file .gist-data .line-numbers { 20 | color: #666; 21 | font-size: 0.85em; 22 | } 23 | 24 | .markdown-body pre, 25 | .markdown-body code { 26 | font-family: "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace; 27 | } 28 | 29 | .markdown-body code { 30 | background: rgba(208, 211, 248, 0.2); 31 | color: #333; 32 | padding: 0 0.3em; 33 | } 34 | 35 | .markdown-body pre code { 36 | background: none; 37 | text-shadow: none; 38 | padding: 0; 39 | } 40 | 41 | .markdown-body .highlight pre { 42 | border: none; 43 | margin: 0; 44 | } 45 | 46 | .markdown-body .highlight table { 47 | margin: 0; 48 | width: auto; 49 | border: none; 50 | } 51 | 52 | .markdown-body .highlight tbody { 53 | margin: 0; 54 | display: flex; 55 | } 56 | 57 | .markdown-body .highlight td { 58 | border: none; 59 | padding: 0; 60 | } 61 | 62 | .markdown-body .highlight figcaption { 63 | font-size: 0.85em; 64 | color: #8e908c; 65 | line-height: 1em; 66 | margin-bottom: 1em; 67 | } 68 | 69 | .markdown-body .highlight figcaption:before, 70 | .markdown-body .highlight figcaption:after { 71 | content: ""; 72 | display: table; 73 | } 74 | 75 | .markdown-body .highlight figcaption:after { 76 | clear: both; 77 | } 78 | 79 | .markdown-body .highlight figcaption a { 80 | float: right; 81 | } 82 | 83 | .markdown-body .highlight .gutter { 84 | width: 50px; 85 | } 86 | 87 | .markdown-body .highlight .code { 88 | flex: 1; 89 | } 90 | 91 | .markdown-body .highlight .gutter pre { 92 | text-align: center; 93 | } 94 | 95 | .markdown-body .highlight .line { 96 | height: 22px; 97 | } 98 | 99 | .markdown-body .highlight .line.marked { 100 | background: #d6d6d6; 101 | } 102 | 103 | .markdown-body .gist { 104 | margin: 0 -20px; 105 | border-style: solid; 106 | border-color: #eef1f8; 107 | border-width: 1px 0; 108 | background: #f8f8f8; 109 | padding: 15px 20px 15px 0; 110 | } 111 | 112 | .markdown-body .gist .gist-file { 113 | border: none; 114 | font-family: "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace; 115 | margin: 0; 116 | } 117 | 118 | .markdown-body .gist .gist-file .gist-data { 119 | background: none; 120 | border: none; 121 | } 122 | 123 | .markdown-body .gist .gist-file .gist-data .line-numbers { 124 | background: none; 125 | border: none; 126 | padding: 0 20px 0 0; 127 | } 128 | 129 | .markdown-body .gist .gist-file .gist-data .line-data { 130 | padding: 0 !important; 131 | } 132 | 133 | .markdown-body .gist .gist-file .highlight { 134 | margin: 0; 135 | padding: 0; 136 | border: none; 137 | } 138 | 139 | .markdown-body .gist .gist-file .gist-meta { 140 | background: #f8f8f8; 141 | color: #8e908c; 142 | font: 0.85em -apple-system, "Arial", BlinkMacSystemFont, "Segoe UI", 143 | "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", 144 | "Helvetica Neue", sans-serif; 145 | text-shadow: 0 0; 146 | padding: 0; 147 | margin-top: 1em; 148 | margin-left: 20px; 149 | } 150 | 151 | .markdown-body .gist .gist-file .gist-meta a { 152 | color: color-link; 153 | font-weight: normal; 154 | } 155 | 156 | .markdown-body .gist .gist-file .gist-meta a:hover { 157 | text-decoration: underline; 158 | } 159 | 160 | .markdown-body figure td.code pre { 161 | white-space: pre !important; 162 | } 163 | 164 | .markdown-body figure table tr { 165 | display: flex !important; 166 | justify-content: flex-start !important; 167 | } 168 | 169 | pre .comment, 170 | pre .title { 171 | color: #8e908c; 172 | } 173 | 174 | pre .variable, 175 | pre .attribute, 176 | pre .tag, 177 | pre .regexp, 178 | pre .ruby .constant, 179 | pre .xml .tag .title, 180 | pre .xml .pi, 181 | pre .xml .doctype, 182 | pre .html .doctype, 183 | pre .css .id, 184 | pre .css .class, 185 | pre .css .pseudo { 186 | color: #c82829; 187 | } 188 | 189 | pre .number, 190 | pre .preprocessor, 191 | pre .built_in, 192 | pre .literal, 193 | pre .params, 194 | pre .constant { 195 | color: #fb6d19; 196 | } 197 | 198 | pre .class, 199 | pre .ruby .class .title, 200 | pre .css .rules .attribute { 201 | color: #718c00; 202 | } 203 | 204 | pre .string, 205 | pre .value, 206 | pre .inheritance, 207 | pre .header, 208 | pre .ruby .symbol, 209 | pre .xml .cdata { 210 | color: #718c00; 211 | } 212 | 213 | pre .css .hexcolor { 214 | color: #3e999f; 215 | } 216 | 217 | pre .function, 218 | pre .python .decorator, 219 | pre .python .title, 220 | pre .ruby .function .title, 221 | pre .ruby .title .keyword, 222 | pre .perl .sub, 223 | pre .javascript .title, 224 | pre .coffeescript .title { 225 | color: #4271ae; 226 | } 227 | 228 | pre .keyword, 229 | pre .javascript .function { 230 | color: #8959a8; 231 | } 232 | 233 | pre { 234 | color: #525252; 235 | } 236 | 237 | pre .function .keyword, 238 | pre .constant { 239 | color: #0092db; 240 | } 241 | 242 | pre .keyword, 243 | pre .attribute { 244 | color: #e96900; 245 | } 246 | 247 | pre .number, 248 | pre .literal { 249 | color: #ae81ff; 250 | } 251 | 252 | pre .tag, 253 | pre .tag .title, 254 | pre .change, 255 | pre .winutils, 256 | pre .flow, 257 | pre .lisp .title, 258 | pre .clojure .built_in, 259 | pre .nginx .title, 260 | pre .tex .special { 261 | color: #2973b7; 262 | } 263 | 264 | pre .symbol, 265 | pre .symbol .string, 266 | pre .value, 267 | pre .regexp { 268 | color: #42b983; 269 | } 270 | 271 | pre .title { 272 | color: #83b917; 273 | } 274 | 275 | pre .tag .value, 276 | pre .string, 277 | pre .subst, 278 | pre .haskell .type, 279 | pre .preprocessor, 280 | pre .ruby .class .parent, 281 | pre .built_in, 282 | pre .sql .aggregate, 283 | pre .django .template_tag, 284 | pre .django .variable, 285 | pre .smalltalk .class, 286 | pre .javadoc, 287 | pre .django .filter .argument, 288 | pre .smalltalk .localvars, 289 | pre .smalltalk .array, 290 | pre .attr_selector, 291 | pre .pseudo, 292 | pre .addition, 293 | pre .stream, 294 | pre .envvar, 295 | pre .apache .tag, 296 | pre .apache .cbracket, 297 | pre .tex .command, 298 | pre .prompt { 299 | color: #42b983; 300 | } 301 | 302 | pre .comment, 303 | pre .java .annotation, 304 | pre .python .decorator, 305 | pre .template_comment, 306 | pre .pi, 307 | pre .doctype, 308 | pre .shebang, 309 | pre .apache .sqbracket, 310 | pre .tex .formula { 311 | color: #b3b3b3; 312 | } 313 | 314 | pre .deletion { 315 | color: #ba4545; 316 | } 317 | 318 | pre .coffeescript .javascript, 319 | pre .javascript .xml, 320 | pre .tex .formula, 321 | pre .xml .javascript, 322 | pre .xml .vbscript, 323 | pre .xml .css, 324 | pre .xml .cdata { 325 | opacity: 0.5; 326 | } 327 | 328 | .night-mode pre, 329 | .night-mode code, 330 | .night-mode blockquote { 331 | background-color: #333 !important; 332 | border-color: #2f2f2f; 333 | color: #f3f3f3; 334 | } -------------------------------------------------------------------------------- /source/css/highlight/github-dark.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: 1em 5 | } 6 | 7 | code.hljs { 8 | padding: 3px 5px 9 | } 10 | 11 | /*! 12 | Theme: GitHub Dark 13 | Description: Dark theme as seen on github.com 14 | Author: github.com 15 | Maintainer: @Hirse 16 | Updated: 2021-05-15 17 | 18 | Outdated base version: https://github.com/primer/github-syntax-dark 19 | Current colors taken from GitHub's CSS 20 | */ 21 | .hljs { 22 | color: #c9d1d9; 23 | background: #0d1117 24 | } 25 | 26 | .hljs-doctag, 27 | .hljs-keyword, 28 | .hljs-meta .hljs-keyword, 29 | .hljs-template-tag, 30 | .hljs-template-variable, 31 | .hljs-type, 32 | .hljs-variable.language_ { 33 | /* prettylights-syntax-keyword */ 34 | color: #ff7b72 35 | } 36 | 37 | .hljs-title, 38 | .hljs-title.class_, 39 | .hljs-title.class_.inherited__, 40 | .hljs-title.function_ { 41 | /* prettylights-syntax-entity */ 42 | color: #d2a8ff 43 | } 44 | 45 | .hljs-attr, 46 | .hljs-attribute, 47 | .hljs-literal, 48 | .hljs-meta, 49 | .hljs-number, 50 | .hljs-operator, 51 | .hljs-variable, 52 | .hljs-selector-attr, 53 | .hljs-selector-class, 54 | .hljs-selector-id { 55 | /* prettylights-syntax-constant */ 56 | color: #79c0ff 57 | } 58 | 59 | .hljs-regexp, 60 | .hljs-string, 61 | .hljs-meta .hljs-string { 62 | /* prettylights-syntax-string */ 63 | color: #a5d6ff 64 | } 65 | 66 | .hljs-built_in, 67 | .hljs-symbol { 68 | /* prettylights-syntax-variable */ 69 | color: #ffa657 70 | } 71 | 72 | .hljs-comment, 73 | .hljs-code, 74 | .hljs-formula { 75 | /* prettylights-syntax-comment */ 76 | color: #8b949e 77 | } 78 | 79 | .hljs-name, 80 | .hljs-quote, 81 | .hljs-selector-tag, 82 | .hljs-selector-pseudo { 83 | /* prettylights-syntax-entity-tag */ 84 | color: #7ee787 85 | } 86 | 87 | .hljs-subst { 88 | /* prettylights-syntax-storage-modifier-import */ 89 | color: #c9d1d9 90 | } 91 | 92 | .hljs-section { 93 | /* prettylights-syntax-markup-heading */ 94 | color: #1f6feb; 95 | font-weight: bold 96 | } 97 | 98 | .hljs-bullet { 99 | /* prettylights-syntax-markup-list */ 100 | color: #f2cc60 101 | } 102 | 103 | .hljs-emphasis { 104 | /* prettylights-syntax-markup-italic */ 105 | color: #c9d1d9; 106 | font-style: italic 107 | } 108 | 109 | .hljs-strong { 110 | /* prettylights-syntax-markup-bold */ 111 | color: #c9d1d9; 112 | font-weight: bold 113 | } 114 | 115 | .hljs-addition { 116 | /* prettylights-syntax-markup-inserted */ 117 | color: #aff5b4; 118 | background-color: #033a16 119 | } 120 | 121 | .hljs-deletion { 122 | /* prettylights-syntax-markup-deleted */ 123 | color: #ffdcd7; 124 | background-color: #67060c 125 | } 126 | 127 | .hljs-char.escape_, 128 | .hljs-link, 129 | .hljs-params, 130 | .hljs-property, 131 | .hljs-punctuation, 132 | .hljs-tag { 133 | /* purposely ignored */ 134 | 135 | } -------------------------------------------------------------------------------- /source/css/highlight/github-light.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: 1em 5 | } 6 | 7 | code.hljs { 8 | padding: 3px 5px 9 | } 10 | 11 | /*! 12 | Theme: GitHub 13 | Description: Light theme as seen on github.com 14 | Author: github.com 15 | Maintainer: @Hirse 16 | Updated: 2021-05-15 17 | 18 | Outdated base version: https://github.com/primer/github-syntax-light 19 | Current colors taken from GitHub's CSS 20 | */ 21 | .hljs { 22 | color: #24292e; 23 | background: #ffffff 24 | } 25 | 26 | .hljs-doctag, 27 | .hljs-keyword, 28 | .hljs-meta .hljs-keyword, 29 | .hljs-template-tag, 30 | .hljs-template-variable, 31 | .hljs-type, 32 | .hljs-variable.language_ { 33 | /* prettylights-syntax-keyword */ 34 | color: #d73a49 35 | } 36 | 37 | .hljs-title, 38 | .hljs-title.class_, 39 | .hljs-title.class_.inherited__, 40 | .hljs-title.function_ { 41 | /* prettylights-syntax-entity */ 42 | color: #6f42c1 43 | } 44 | 45 | .hljs-attr, 46 | .hljs-attribute, 47 | .hljs-literal, 48 | .hljs-meta, 49 | .hljs-number, 50 | .hljs-operator, 51 | .hljs-variable, 52 | .hljs-selector-attr, 53 | .hljs-selector-class, 54 | .hljs-selector-id { 55 | /* prettylights-syntax-constant */ 56 | color: #005cc5 57 | } 58 | 59 | .hljs-regexp, 60 | .hljs-string, 61 | .hljs-meta .hljs-string { 62 | /* prettylights-syntax-string */ 63 | color: #032f62 64 | } 65 | 66 | .hljs-built_in, 67 | .hljs-symbol { 68 | /* prettylights-syntax-variable */ 69 | color: #e36209 70 | } 71 | 72 | .hljs-comment, 73 | .hljs-code, 74 | .hljs-formula { 75 | /* prettylights-syntax-comment */ 76 | color: #6a737d 77 | } 78 | 79 | .hljs-name, 80 | .hljs-quote, 81 | .hljs-selector-tag, 82 | .hljs-selector-pseudo { 83 | /* prettylights-syntax-entity-tag */ 84 | color: #22863a 85 | } 86 | 87 | .hljs-subst { 88 | /* prettylights-syntax-storage-modifier-import */ 89 | color: #24292e 90 | } 91 | 92 | .hljs-section { 93 | /* prettylights-syntax-markup-heading */ 94 | color: #005cc5; 95 | font-weight: bold 96 | } 97 | 98 | .hljs-bullet { 99 | /* prettylights-syntax-markup-list */ 100 | color: #735c0f 101 | } 102 | 103 | .hljs-emphasis { 104 | /* prettylights-syntax-markup-italic */ 105 | color: #24292e; 106 | font-style: italic 107 | } 108 | 109 | .hljs-strong { 110 | /* prettylights-syntax-markup-bold */ 111 | color: #24292e; 112 | font-weight: bold 113 | } 114 | 115 | .hljs-addition { 116 | /* prettylights-syntax-markup-inserted */ 117 | color: #22863a; 118 | background-color: #f0fff4 119 | } 120 | 121 | .hljs-deletion { 122 | /* prettylights-syntax-markup-deleted */ 123 | color: #b31d28; 124 | background-color: #ffeef0 125 | } 126 | 127 | .hljs-char.escape_, 128 | .hljs-link, 129 | .hljs-params, 130 | .hljs-property, 131 | .hljs-punctuation, 132 | .hljs-tag { 133 | /* purposely ignored */ 134 | 135 | } -------------------------------------------------------------------------------- /source/css/highlight/one-dark.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: 1em 5 | } 6 | code.hljs { 7 | padding: 3px 5px 8 | } 9 | /*! 10 | Theme: OneDark 11 | Author: Lalit Magant (http://github.com/tilal6991) 12 | License: ~ MIT (or more permissive) [via base16-schemes-source] 13 | Maintainer: @highlightjs/core-team 14 | Version: 2021.09.0 15 | */ 16 | /* 17 | WARNING: DO NOT EDIT THIS FILE DIRECTLY. 18 | 19 | This theme file was auto-generated from the Base16 scheme onedark 20 | by the Highlight.js Base16 template builder. 21 | 22 | - https://github.com/highlightjs/base16-highlightjs 23 | */ 24 | /* 25 | base00 #282c34 Default Background 26 | base01 #353b45 Lighter Background (Used for status bars, line number and folding marks) 27 | base02 #3e4451 Selection Background 28 | base03 #545862 Comments, Invisibles, Line Highlighting 29 | base04 #565c64 Dark Foreground (Used for status bars) 30 | base05 #abb2bf Default Foreground, Caret, Delimiters, Operators 31 | base06 #b6bdca Light Foreground (Not often used) 32 | base07 #c8ccd4 Light Background (Not often used) 33 | base08 #e06c75 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted 34 | base09 #d19a66 Integers, Boolean, Constants, XML Attributes, Markup Link Url 35 | base0A #e5c07b Classes, Markup Bold, Search Text Background 36 | base0B #98c379 Strings, Inherited Class, Markup Code, Diff Inserted 37 | base0C #56b6c2 Support, Regular Expressions, Escape Characters, Markup Quotes 38 | base0D #61afef Functions, Methods, Attribute IDs, Headings 39 | base0E #c678dd Keywords, Storage, Selector, Markup Italic, Diff Changed 40 | base0F #be5046 Deprecated, Opening/Closing Embedded Language Tags, e.g. 41 | */ 42 | pre code.hljs { 43 | display: block; 44 | overflow-x: auto; 45 | padding: 1em 46 | } 47 | code.hljs { 48 | padding: 3px 5px 49 | } 50 | .hljs { 51 | color: #abb2bf; 52 | background: #282c34 53 | } 54 | .hljs::selection, 55 | .hljs ::selection { 56 | background-color: #3e4451; 57 | color: #abb2bf 58 | } 59 | /* purposely do not highlight these things */ 60 | .hljs-formula, 61 | .hljs-params, 62 | .hljs-property { 63 | 64 | } 65 | /* base03 - #545862 - Comments, Invisibles, Line Highlighting */ 66 | .hljs-comment { 67 | color: #545862 68 | } 69 | /* base04 - #565c64 - Dark Foreground (Used for status bars) */ 70 | .hljs-tag { 71 | color: #565c64 72 | } 73 | /* base05 - #abb2bf - Default Foreground, Caret, Delimiters, Operators */ 74 | .hljs-subst, 75 | .hljs-punctuation, 76 | .hljs-operator { 77 | color: #abb2bf 78 | } 79 | .hljs-operator { 80 | opacity: 0.7 81 | } 82 | /* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ 83 | .hljs-bullet, 84 | .hljs-variable, 85 | .hljs-template-variable, 86 | .hljs-selector-tag, 87 | .hljs-name, 88 | .hljs-deletion { 89 | color: #e06c75 90 | } 91 | /* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ 92 | .hljs-symbol, 93 | .hljs-number, 94 | .hljs-link, 95 | .hljs-attr, 96 | .hljs-variable.constant_, 97 | .hljs-literal { 98 | color: #d19a66 99 | } 100 | /* base0A - Classes, Markup Bold, Search Text Background */ 101 | .hljs-title, 102 | .hljs-class .hljs-title, 103 | .hljs-title.class_ { 104 | color: #e5c07b 105 | } 106 | .hljs-strong { 107 | font-weight: bold; 108 | color: #e5c07b 109 | } 110 | /* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ 111 | .hljs-code, 112 | .hljs-addition, 113 | .hljs-title.class_.inherited__, 114 | .hljs-string { 115 | color: #98c379 116 | } 117 | /* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ 118 | /* guessing */ 119 | .hljs-built_in, 120 | .hljs-doctag, 121 | .hljs-quote, 122 | .hljs-keyword.hljs-atrule, 123 | .hljs-regexp { 124 | color: #56b6c2 125 | } 126 | /* base0D - Functions, Methods, Attribute IDs, Headings */ 127 | .hljs-function .hljs-title, 128 | .hljs-attribute, 129 | .ruby .hljs-property, 130 | .hljs-title.function_, 131 | .hljs-section { 132 | color: #61afef 133 | } 134 | /* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ 135 | /* .hljs-selector-id, */ 136 | /* .hljs-selector-class, */ 137 | /* .hljs-selector-attr, */ 138 | /* .hljs-selector-pseudo, */ 139 | .hljs-type, 140 | .hljs-template-tag, 141 | .diff .hljs-meta, 142 | .hljs-keyword { 143 | color: #c678dd 144 | } 145 | .hljs-emphasis { 146 | color: #c678dd; 147 | font-style: italic 148 | } 149 | /* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ 150 | /* 151 | prevent top level .keyword and .string scopes 152 | from leaking into meta by accident 153 | */ 154 | .hljs-meta, 155 | .hljs-meta .hljs-keyword, 156 | .hljs-meta .hljs-string { 157 | color: #be5046 158 | } 159 | /* for v10 compatible themes */ 160 | .hljs-meta .hljs-keyword, 161 | .hljs-meta-keyword { 162 | font-weight: bold 163 | } -------------------------------------------------------------------------------- /source/css/highlight/one-light.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: 1em 5 | } 6 | 7 | code.hljs { 8 | padding: 3px 5px 9 | } 10 | 11 | /*! 12 | Theme: One Light 13 | Author: Daniel Pfeifer (http://github.com/purpleKarrot) 14 | License: ~ MIT (or more permissive) [via base16-schemes-source] 15 | Maintainer: @highlightjs/core-team 16 | Version: 2021.09.0 17 | */ 18 | /* 19 | WARNING: DO NOT EDIT THIS FILE DIRECTLY. 20 | 21 | This theme file was auto-generated from the Base16 scheme one-light 22 | by the Highlight.js Base16 template builder. 23 | 24 | - https://github.com/highlightjs/base16-highlightjs 25 | */ 26 | /* 27 | base00 #fafafa Default Background 28 | base01 #f0f0f1 Lighter Background (Used for status bars, line number and folding marks) 29 | base02 #e5e5e6 Selection Background 30 | base03 #a0a1a7 Comments, Invisibles, Line Highlighting 31 | base04 #696c77 Dark Foreground (Used for status bars) 32 | base05 #383a42 Default Foreground, Caret, Delimiters, Operators 33 | base06 #202227 Light Foreground (Not often used) 34 | base07 #090a0b Light Background (Not often used) 35 | base08 #ca1243 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted 36 | base09 #d75f00 Integers, Boolean, Constants, XML Attributes, Markup Link Url 37 | base0A #c18401 Classes, Markup Bold, Search Text Background 38 | base0B #50a14f Strings, Inherited Class, Markup Code, Diff Inserted 39 | base0C #0184bc Support, Regular Expressions, Escape Characters, Markup Quotes 40 | base0D #4078f2 Functions, Methods, Attribute IDs, Headings 41 | base0E #a626a4 Keywords, Storage, Selector, Markup Italic, Diff Changed 42 | base0F #986801 Deprecated, Opening/Closing Embedded Language Tags, e.g. 43 | */ 44 | pre code.hljs { 45 | display: block; 46 | overflow-x: auto; 47 | padding: 1em 48 | } 49 | 50 | code.hljs { 51 | padding: 3px 5px 52 | } 53 | 54 | .hljs { 55 | color: #383a42; 56 | background: #fafafa 57 | } 58 | 59 | .hljs::selection, 60 | .hljs ::selection { 61 | background-color: #e5e5e6; 62 | color: #383a42 63 | } 64 | 65 | /* purposely do not highlight these things */ 66 | .hljs-formula, 67 | .hljs-params, 68 | .hljs-property {} 69 | 70 | /* base03 - #a0a1a7 - Comments, Invisibles, Line Highlighting */ 71 | .hljs-comment { 72 | color: #a0a1a7 73 | } 74 | 75 | /* base04 - #696c77 - Dark Foreground (Used for status bars) */ 76 | .hljs-tag { 77 | color: #696c77 78 | } 79 | 80 | /* base05 - #383a42 - Default Foreground, Caret, Delimiters, Operators */ 81 | .hljs-subst, 82 | .hljs-punctuation, 83 | .hljs-operator { 84 | color: #383a42 85 | } 86 | 87 | .hljs-operator { 88 | opacity: 0.7 89 | } 90 | 91 | /* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ 92 | .hljs-bullet, 93 | .hljs-variable, 94 | .hljs-template-variable, 95 | .hljs-selector-tag, 96 | .hljs-name, 97 | .hljs-deletion { 98 | color: #ca1243 99 | } 100 | 101 | /* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ 102 | .hljs-symbol, 103 | .hljs-number, 104 | .hljs-link, 105 | .hljs-attr, 106 | .hljs-variable.constant_, 107 | .hljs-literal { 108 | color: #d75f00 109 | } 110 | 111 | /* base0A - Classes, Markup Bold, Search Text Background */ 112 | .hljs-title, 113 | .hljs-class .hljs-title, 114 | .hljs-title.class_ { 115 | color: #c18401 116 | } 117 | 118 | .hljs-strong { 119 | font-weight: bold; 120 | color: #c18401 121 | } 122 | 123 | /* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ 124 | .hljs-code, 125 | .hljs-addition, 126 | .hljs-title.class_.inherited__, 127 | .hljs-string { 128 | color: #50a14f 129 | } 130 | 131 | /* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ 132 | /* guessing */ 133 | .hljs-built_in, 134 | .hljs-doctag, 135 | .hljs-quote, 136 | .hljs-keyword.hljs-atrule, 137 | .hljs-regexp { 138 | color: #0184bc 139 | } 140 | 141 | /* base0D - Functions, Methods, Attribute IDs, Headings */ 142 | .hljs-function .hljs-title, 143 | .hljs-attribute, 144 | .ruby .hljs-property, 145 | .hljs-title.function_, 146 | .hljs-section { 147 | color: #4078f2 148 | } 149 | 150 | /* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ 151 | /* .hljs-selector-id, */ 152 | /* .hljs-selector-class, */ 153 | /* .hljs-selector-attr, */ 154 | /* .hljs-selector-pseudo, */ 155 | .hljs-type, 156 | .hljs-template-tag, 157 | .diff .hljs-meta, 158 | .hljs-keyword { 159 | color: #a626a4 160 | } 161 | 162 | .hljs-emphasis { 163 | color: #a626a4; 164 | font-style: italic 165 | } 166 | 167 | /* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ 168 | /* 169 | prevent top level .keyword and .string scopes 170 | from leaking into meta by accident 171 | */ 172 | .hljs-meta, 173 | .hljs-meta .hljs-keyword, 174 | .hljs-meta .hljs-string { 175 | color: #986801 176 | } 177 | 178 | /* for v10 compatible themes */ 179 | .hljs-meta .hljs-keyword, 180 | .hljs-meta-keyword { 181 | font-weight: bold 182 | } -------------------------------------------------------------------------------- /source/css/highlight/solarized-dark.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: 1em 5 | } 6 | 7 | code.hljs { 8 | padding: 3px 5px 9 | } 10 | 11 | /*! 12 | Theme: Solarized Dark 13 | Author: Ethan Schoonover (modified by aramisgithub) 14 | License: ~ MIT (or more permissive) [via base16-schemes-source] 15 | Maintainer: @highlightjs/core-team 16 | Version: 2021.09.0 17 | */ 18 | /* 19 | WARNING: DO NOT EDIT THIS FILE DIRECTLY. 20 | 21 | This theme file was auto-generated from the Base16 scheme solarized-dark 22 | by the Highlight.js Base16 template builder. 23 | 24 | - https://github.com/highlightjs/base16-highlightjs 25 | */ 26 | /* 27 | base00 #002b36 Default Background 28 | base01 #073642 Lighter Background (Used for status bars, line number and folding marks) 29 | base02 #586e75 Selection Background 30 | base03 #657b83 Comments, Invisibles, Line Highlighting 31 | base04 #839496 Dark Foreground (Used for status bars) 32 | base05 #93a1a1 Default Foreground, Caret, Delimiters, Operators 33 | base06 #eee8d5 Light Foreground (Not often used) 34 | base07 #fdf6e3 Light Background (Not often used) 35 | base08 #dc322f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted 36 | base09 #cb4b16 Integers, Boolean, Constants, XML Attributes, Markup Link Url 37 | base0A #b58900 Classes, Markup Bold, Search Text Background 38 | base0B #859900 Strings, Inherited Class, Markup Code, Diff Inserted 39 | base0C #2aa198 Support, Regular Expressions, Escape Characters, Markup Quotes 40 | base0D #268bd2 Functions, Methods, Attribute IDs, Headings 41 | base0E #6c71c4 Keywords, Storage, Selector, Markup Italic, Diff Changed 42 | base0F #d33682 Deprecated, Opening/Closing Embedded Language Tags, e.g. 43 | */ 44 | pre code.hljs { 45 | display: block; 46 | overflow-x: auto; 47 | padding: 1em 48 | } 49 | 50 | code.hljs { 51 | padding: 3px 5px 52 | } 53 | 54 | .hljs { 55 | color: #93a1a1; 56 | background: #002b36 57 | } 58 | 59 | .hljs::selection, 60 | .hljs ::selection { 61 | background-color: #586e75; 62 | color: #93a1a1 63 | } 64 | 65 | /* purposely do not highlight these things */ 66 | .hljs-formula, 67 | .hljs-params, 68 | .hljs-property {} 69 | 70 | /* base03 - #657b83 - Comments, Invisibles, Line Highlighting */ 71 | .hljs-comment { 72 | color: #657b83 73 | } 74 | 75 | /* base04 - #839496 - Dark Foreground (Used for status bars) */ 76 | .hljs-tag { 77 | color: #839496 78 | } 79 | 80 | /* base05 - #93a1a1 - Default Foreground, Caret, Delimiters, Operators */ 81 | .hljs-subst, 82 | .hljs-punctuation, 83 | .hljs-operator { 84 | color: #93a1a1 85 | } 86 | 87 | .hljs-operator { 88 | opacity: 0.7 89 | } 90 | 91 | /* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ 92 | .hljs-bullet, 93 | .hljs-variable, 94 | .hljs-template-variable, 95 | .hljs-selector-tag, 96 | .hljs-name, 97 | .hljs-deletion { 98 | color: #dc322f 99 | } 100 | 101 | /* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ 102 | .hljs-symbol, 103 | .hljs-number, 104 | .hljs-link, 105 | .hljs-attr, 106 | .hljs-variable.constant_, 107 | .hljs-literal { 108 | color: #cb4b16 109 | } 110 | 111 | /* base0A - Classes, Markup Bold, Search Text Background */ 112 | .hljs-title, 113 | .hljs-class .hljs-title, 114 | .hljs-title.class_ { 115 | color: #b58900 116 | } 117 | 118 | .hljs-strong { 119 | font-weight: bold; 120 | color: #b58900 121 | } 122 | 123 | /* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ 124 | .hljs-code, 125 | .hljs-addition, 126 | .hljs-title.class_.inherited__, 127 | .hljs-string { 128 | color: #859900 129 | } 130 | 131 | /* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ 132 | /* guessing */ 133 | .hljs-built_in, 134 | .hljs-doctag, 135 | .hljs-quote, 136 | .hljs-keyword.hljs-atrule, 137 | .hljs-regexp { 138 | color: #2aa198 139 | } 140 | 141 | /* base0D - Functions, Methods, Attribute IDs, Headings */ 142 | .hljs-function .hljs-title, 143 | .hljs-attribute, 144 | .ruby .hljs-property, 145 | .hljs-title.function_, 146 | .hljs-section { 147 | color: #268bd2 148 | } 149 | 150 | /* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ 151 | /* .hljs-selector-id, */ 152 | /* .hljs-selector-class, */ 153 | /* .hljs-selector-attr, */ 154 | /* .hljs-selector-pseudo, */ 155 | .hljs-type, 156 | .hljs-template-tag, 157 | .diff .hljs-meta, 158 | .hljs-keyword { 159 | color: #6c71c4 160 | } 161 | 162 | .hljs-emphasis { 163 | color: #6c71c4; 164 | font-style: italic 165 | } 166 | 167 | /* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ 168 | /* 169 | prevent top level .keyword and .string scopes 170 | from leaking into meta by accident 171 | */ 172 | .hljs-meta, 173 | .hljs-meta .hljs-keyword, 174 | .hljs-meta .hljs-string { 175 | color: #d33682 176 | } 177 | 178 | /* for v10 compatible themes */ 179 | .hljs-meta .hljs-keyword, 180 | .hljs-meta-keyword { 181 | font-weight: bold 182 | } -------------------------------------------------------------------------------- /source/css/highlight/solarized-light.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: 1em 5 | } 6 | 7 | code.hljs { 8 | padding: 3px 5px 9 | } 10 | 11 | /*! 12 | Theme: Solarized Light 13 | Author: Ethan Schoonover (modified by aramisgithub) 14 | License: ~ MIT (or more permissive) [via base16-schemes-source] 15 | Maintainer: @highlightjs/core-team 16 | Version: 2021.09.0 17 | */ 18 | /* 19 | WARNING: DO NOT EDIT THIS FILE DIRECTLY. 20 | 21 | This theme file was auto-generated from the Base16 scheme solarized-light 22 | by the Highlight.js Base16 template builder. 23 | 24 | - https://github.com/highlightjs/base16-highlightjs 25 | */ 26 | /* 27 | base00 #fdf6e3 Default Background 28 | base01 #eee8d5 Lighter Background (Used for status bars, line number and folding marks) 29 | base02 #93a1a1 Selection Background 30 | base03 #839496 Comments, Invisibles, Line Highlighting 31 | base04 #657b83 Dark Foreground (Used for status bars) 32 | base05 #586e75 Default Foreground, Caret, Delimiters, Operators 33 | base06 #073642 Light Foreground (Not often used) 34 | base07 #002b36 Light Background (Not often used) 35 | base08 #dc322f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted 36 | base09 #cb4b16 Integers, Boolean, Constants, XML Attributes, Markup Link Url 37 | base0A #b58900 Classes, Markup Bold, Search Text Background 38 | base0B #859900 Strings, Inherited Class, Markup Code, Diff Inserted 39 | base0C #2aa198 Support, Regular Expressions, Escape Characters, Markup Quotes 40 | base0D #268bd2 Functions, Methods, Attribute IDs, Headings 41 | base0E #6c71c4 Keywords, Storage, Selector, Markup Italic, Diff Changed 42 | base0F #d33682 Deprecated, Opening/Closing Embedded Language Tags, e.g. 43 | */ 44 | pre code.hljs { 45 | display: block; 46 | overflow-x: auto; 47 | padding: 1em 48 | } 49 | 50 | code.hljs { 51 | padding: 3px 5px 52 | } 53 | 54 | .hljs { 55 | color: #586e75; 56 | background: #fdf6e3 57 | } 58 | 59 | .hljs::selection, 60 | .hljs ::selection { 61 | background-color: #93a1a1; 62 | color: #586e75 63 | } 64 | 65 | /* purposely do not highlight these things */ 66 | .hljs-formula, 67 | .hljs-params, 68 | .hljs-property {} 69 | 70 | /* base03 - #839496 - Comments, Invisibles, Line Highlighting */ 71 | .hljs-comment { 72 | color: #839496 73 | } 74 | 75 | /* base04 - #657b83 - Dark Foreground (Used for status bars) */ 76 | .hljs-tag { 77 | color: #657b83 78 | } 79 | 80 | /* base05 - #586e75 - Default Foreground, Caret, Delimiters, Operators */ 81 | .hljs-subst, 82 | .hljs-punctuation, 83 | .hljs-operator { 84 | color: #586e75 85 | } 86 | 87 | .hljs-operator { 88 | opacity: 0.7 89 | } 90 | 91 | /* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ 92 | .hljs-bullet, 93 | .hljs-variable, 94 | .hljs-template-variable, 95 | .hljs-selector-tag, 96 | .hljs-name, 97 | .hljs-deletion { 98 | color: #dc322f 99 | } 100 | 101 | /* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ 102 | .hljs-symbol, 103 | .hljs-number, 104 | .hljs-link, 105 | .hljs-attr, 106 | .hljs-variable.constant_, 107 | .hljs-literal { 108 | color: #cb4b16 109 | } 110 | 111 | /* base0A - Classes, Markup Bold, Search Text Background */ 112 | .hljs-title, 113 | .hljs-class .hljs-title, 114 | .hljs-title.class_ { 115 | color: #b58900 116 | } 117 | 118 | .hljs-strong { 119 | font-weight: bold; 120 | color: #b58900 121 | } 122 | 123 | /* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ 124 | .hljs-code, 125 | .hljs-addition, 126 | .hljs-title.class_.inherited__, 127 | .hljs-string { 128 | color: #859900 129 | } 130 | 131 | /* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ 132 | /* guessing */ 133 | .hljs-built_in, 134 | .hljs-doctag, 135 | .hljs-quote, 136 | .hljs-keyword.hljs-atrule, 137 | .hljs-regexp { 138 | color: #2aa198 139 | } 140 | 141 | /* base0D - Functions, Methods, Attribute IDs, Headings */ 142 | .hljs-function .hljs-title, 143 | .hljs-attribute, 144 | .ruby .hljs-property, 145 | .hljs-title.function_, 146 | .hljs-section { 147 | color: #268bd2 148 | } 149 | 150 | /* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ 151 | /* .hljs-selector-id, */ 152 | /* .hljs-selector-class, */ 153 | /* .hljs-selector-attr, */ 154 | /* .hljs-selector-pseudo, */ 155 | .hljs-type, 156 | .hljs-template-tag, 157 | .diff .hljs-meta, 158 | .hljs-keyword { 159 | color: #6c71c4 160 | } 161 | 162 | .hljs-emphasis { 163 | color: #6c71c4; 164 | font-style: italic 165 | } 166 | 167 | /* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ 168 | /* 169 | prevent top level .keyword and .string scopes 170 | from leaking into meta by accident 171 | */ 172 | .hljs-meta, 173 | .hljs-meta .hljs-keyword, 174 | .hljs-meta .hljs-string { 175 | color: #d33682 176 | } 177 | 178 | /* for v10 compatible themes */ 179 | .hljs-meta .hljs-keyword, 180 | .hljs-meta-keyword { 181 | font-weight: bold 182 | } -------------------------------------------------------------------------------- /source/css/highlight/tokyo-night-dark.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: 1em 5 | } 6 | 7 | code.hljs { 8 | padding: 3px 5px 9 | } 10 | 11 | /*! 12 | Theme: Tokyo-night-Dark 13 | origin: https://github.com/enkia/tokyo-night-vscode-theme 14 | Description: Original highlight.js style 15 | Author: (c) Henri Vandersleyen 16 | License: see project LICENSE 17 | Touched: 2022 18 | */ 19 | /* Comment */ 20 | .hljs-meta, 21 | .hljs-comment { 22 | color: #565f89 23 | } 24 | 25 | /* Red */ 26 | /*INFO: This keyword, HTML elements, Regex group symbol, CSS units, Terminal Red */ 27 | .hljs-tag, 28 | .hljs-doctag, 29 | .hljs-selector-id, 30 | .hljs-selector-class, 31 | .hljs-regexp, 32 | .hljs-template-tag, 33 | .hljs-selector-pseudo, 34 | .hljs-selector-attr, 35 | .hljs-variable.language_, 36 | .hljs-deletion { 37 | color: #f7768e 38 | } 39 | 40 | /*Orange */ 41 | /*INFO: Number and Boolean constants, Language support constants */ 42 | .hljs-variable, 43 | .hljs-template-variable, 44 | .hljs-number, 45 | .hljs-literal, 46 | .hljs-type, 47 | .hljs-params, 48 | .hljs-link { 49 | color: #ff9e64 50 | } 51 | 52 | /* Yellow */ 53 | /* INFO: Function parameters, Regex character sets, Terminal Yellow */ 54 | .hljs-built_in, 55 | .hljs-attribute { 56 | color: #e0af68 57 | } 58 | 59 | /* cyan */ 60 | /* INFO: Language support functions, CSS HTML elements */ 61 | .hljs-selector-tag { 62 | color: #2ac3de 63 | } 64 | 65 | /* light blue */ 66 | /* INFO: Object properties, Regex quantifiers and flags, Markdown headings, Terminal Cyan, Markdown code, Import/export keywords */ 67 | .hljs-keyword, 68 | .hljs-title.function_, 69 | .hljs-title, 70 | .hljs-title.class_, 71 | .hljs-title.class_.inherited__, 72 | .hljs-subst, 73 | .hljs-property { 74 | color: #7dcfff 75 | } 76 | 77 | /*Green*/ 78 | /* INFO: Object literal keys, Markdown links, Terminal Green */ 79 | .hljs-selector-tag { 80 | color: #73daca 81 | } 82 | 83 | /*Green(er) */ 84 | /* INFO: Strings, CSS class names */ 85 | .hljs-quote, 86 | .hljs-string, 87 | .hljs-symbol, 88 | .hljs-bullet, 89 | .hljs-addition { 90 | color: #9ece6a 91 | } 92 | 93 | /* Blue */ 94 | /* INFO: Function names, CSS property names, Terminal Blue */ 95 | .hljs-code, 96 | .hljs-formula, 97 | .hljs-section { 98 | color: #7aa2f7 99 | } 100 | 101 | /* Magenta */ 102 | /*INFO: Control Keywords, Storage Types, Regex symbols and operators, HTML Attributes, Terminal Magenta */ 103 | .hljs-name, 104 | .hljs-keyword, 105 | .hljs-operator, 106 | .hljs-keyword, 107 | .hljs-char.escape_, 108 | .hljs-attr { 109 | color: #bb9af7 110 | } 111 | 112 | /* white*/ 113 | /* INFO: Variables, Class names, Terminal White */ 114 | .hljs-punctuation { 115 | color: #c0caf5 116 | } 117 | 118 | .hljs { 119 | background: #1a1b26; 120 | color: #9aa5ce 121 | } 122 | 123 | .hljs-emphasis { 124 | font-style: italic 125 | } 126 | 127 | .hljs-strong { 128 | font-weight: bold 129 | } -------------------------------------------------------------------------------- /source/css/highlight/tokyo-night-light.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: 1em 5 | } 6 | 7 | code.hljs { 8 | padding: 3px 5px 9 | } 10 | 11 | /*! 12 | Theme: Tokyo-night-light 13 | origin: https://github.com/enkia/tokyo-night-vscode-theme 14 | Description: Original highlight.js style 15 | Author: (c) Henri Vandersleyen 16 | License: see project LICENSE 17 | Touched: 2022 18 | */ 19 | /* Comment */ 20 | .hljs-meta, 21 | .hljs-comment { 22 | color: #9699a3 23 | } 24 | 25 | /* Red */ 26 | /*INFO: This keyword, HTML elements, Regex group symbol, CSS units, Terminal Red */ 27 | .hljs-tag, 28 | .hljs-doctag, 29 | .hljs-selector-id, 30 | .hljs-selector-class, 31 | .hljs-regexp, 32 | .hljs-template-tag, 33 | .hljs-selector-pseudo, 34 | .hljs-selector-attr, 35 | .hljs-variable.language_, 36 | .hljs-deletion { 37 | color: #8c4351 38 | } 39 | 40 | /*Orange */ 41 | /*INFO: Number and Boolean constants, Language support constants */ 42 | .hljs-variable, 43 | .hljs-template-variable, 44 | .hljs-number, 45 | .hljs-literal, 46 | .hljs-type, 47 | .hljs-params, 48 | .hljs-link { 49 | color: #965027 50 | } 51 | 52 | /* Yellow */ 53 | /* INFO: Function parameters, Regex character sets, Terminal Yellow */ 54 | .hljs-built_in, 55 | .hljs-attribute { 56 | color: #8f5e15 57 | } 58 | 59 | /* cyan */ 60 | /* INFO: Language support functions, CSS HTML elements */ 61 | .hljs-selector-tag { 62 | color: #166775 63 | } 64 | 65 | /* light blue */ 66 | /* INFO: Object properties, Regex quantifiers and flags, Markdown headings, Terminal Cyan, Markdown code, Import/export keywords */ 67 | .hljs-keyword, 68 | .hljs-title.function_, 69 | .hljs-title, 70 | .hljs-title.class_, 71 | .hljs-title.class_.inherited__, 72 | .hljs-subst, 73 | .hljs-property { 74 | color: #0f4b6e 75 | } 76 | 77 | /*Green*/ 78 | /* INFO: Object literal keys, Markdown links, Terminal Green */ 79 | .hljs-selector-tag { 80 | color: #33635c 81 | } 82 | 83 | /*Green(er) */ 84 | /* INFO: Strings, CSS class names */ 85 | .hljs-quote, 86 | .hljs-string, 87 | .hljs-symbol, 88 | .hljs-bullet, 89 | .hljs-addition { 90 | color: #485e30 91 | } 92 | 93 | /* Blue */ 94 | /* INFO: Function names, CSS property names, Terminal Blue */ 95 | .hljs-code, 96 | .hljs-formula, 97 | .hljs-section { 98 | color: #34548a 99 | } 100 | 101 | /* Magenta */ 102 | /*INFO: Control Keywords, Storage Types, Regex symbols and operators, HTML Attributes, Terminal Magenta */ 103 | .hljs-name, 104 | .hljs-keyword, 105 | .hljs-operator, 106 | .hljs-keyword, 107 | .hljs-char.escape_, 108 | .hljs-attr { 109 | color: #5a4a78 110 | } 111 | 112 | /* white*/ 113 | /* INFO: Variables, Class names, Terminal White */ 114 | .hljs-punctuation { 115 | color: #343b58 116 | } 117 | 118 | .hljs { 119 | background: #d5d6db; 120 | color: #565a6e 121 | } 122 | 123 | .hljs-emphasis { 124 | font-style: italic 125 | } 126 | 127 | .hljs-strong { 128 | font-weight: bold 129 | } -------------------------------------------------------------------------------- /source/css/one-dark.min.css: -------------------------------------------------------------------------------- 1 | .hljs-meta .hljs-keyword,.hljs-meta-keyword,.hljs-strong{font-weight:700}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs ::selection,.hljs::selection{background-color:#3e4451;color:#abb2bf}.hljs-comment{color:#545862}.hljs-tag{color:#565c64}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#abb2bf}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e06c75}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d19a66}.hljs-class .hljs-title,.hljs-strong,.hljs-title,.hljs-title.class_{color:#e5c07b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#98c379}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#56b6c2}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#61afef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c678dd}.hljs-emphasis{color:#c678dd;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#be5046} -------------------------------------------------------------------------------- /source/css/one-light.min.css: -------------------------------------------------------------------------------- 1 | .hljs-meta .hljs-keyword,.hljs-meta-keyword,.hljs-strong{font-weight:700}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383a42;background:#fafafa}.hljs ::selection,.hljs::selection{background-color:#e5e5e6;color:#383a42}.hljs-comment{color:#a0a1a7}.hljs-tag{color:#696c77}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#383a42}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca1243}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d75f00}.hljs-class .hljs-title,.hljs-strong,.hljs-title,.hljs-title.class_{color:#c18401}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#50a14f}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0184bc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4078f2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a626a4}.hljs-emphasis{color:#a626a4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#986801} -------------------------------------------------------------------------------- /source/css/solarized-dark.min.css: -------------------------------------------------------------------------------- 1 | .hljs-meta .hljs-keyword,.hljs-meta-keyword,.hljs-strong{font-weight:700}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#93a1a1;background:#002b36}.hljs ::selection,.hljs::selection{background-color:#586e75;color:#93a1a1}.hljs-comment{color:#657b83}.hljs-tag{color:#839496}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#93a1a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc322f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cb4b16}.hljs-class .hljs-title,.hljs-strong,.hljs-title,.hljs-title.class_{color:#b58900}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#859900}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2aa198}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#268bd2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6c71c4}.hljs-emphasis{color:#6c71c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d33682} -------------------------------------------------------------------------------- /source/css/solarized-light.min.css: -------------------------------------------------------------------------------- 1 | .hljs-meta .hljs-keyword,.hljs-meta-keyword,.hljs-strong{font-weight:700}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#586e75;background:#fdf6e3}.hljs ::selection,.hljs::selection{background-color:#93a1a1;color:#586e75}.hljs-comment{color:#839496}.hljs-tag{color:#657b83}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#586e75}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc322f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cb4b16}.hljs-class .hljs-title,.hljs-strong,.hljs-title,.hljs-title.class_{color:#b58900}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#859900}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2aa198}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#268bd2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6c71c4}.hljs-emphasis{color:#6c71c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d33682} -------------------------------------------------------------------------------- /source/css/tokyo-night-dark.min.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs-comment,.hljs-meta{color:#565f89}.hljs-deletion,.hljs-doctag,.hljs-regexp,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-tag,.hljs-template-tag,.hljs-variable.language_{color:#f7768e}.hljs-link,.hljs-literal,.hljs-number,.hljs-params,.hljs-template-variable,.hljs-type,.hljs-variable{color:#ff9e64}.hljs-attribute,.hljs-built_in{color:#e0af68}.hljs-keyword,.hljs-property,.hljs-subst,.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#7dcfff}.hljs-selector-tag{color:#73daca}.hljs-addition,.hljs-bullet,.hljs-quote,.hljs-string,.hljs-symbol{color:#9ece6a}.hljs-code,.hljs-formula,.hljs-section{color:#7aa2f7}.hljs-attr,.hljs-char.escape_,.hljs-keyword,.hljs-name,.hljs-operator{color:#bb9af7}.hljs-punctuation{color:#c0caf5}.hljs{background:#1a1b26;color:#9aa5ce}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} -------------------------------------------------------------------------------- /source/css/tokyo-night-light.min.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs-comment,.hljs-meta{color:#9699a3}.hljs-deletion,.hljs-doctag,.hljs-regexp,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-tag,.hljs-template-tag,.hljs-variable.language_{color:#8c4351}.hljs-link,.hljs-literal,.hljs-number,.hljs-params,.hljs-template-variable,.hljs-type,.hljs-variable{color:#965027}.hljs-attribute,.hljs-built_in{color:#8f5e15}.hljs-keyword,.hljs-property,.hljs-subst,.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#0f4b6e}.hljs-selector-tag{color:#33635c}.hljs-addition,.hljs-bullet,.hljs-quote,.hljs-string,.hljs-symbol{color:#485e30}.hljs-code,.hljs-formula,.hljs-section{color:#34548a}.hljs-attr,.hljs-char.escape_,.hljs-keyword,.hljs-name,.hljs-operator{color:#5a4a78}.hljs-punctuation{color:#343b58}.hljs{background:#d5d6db;color:#565a6e}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} -------------------------------------------------------------------------------- /source/images/404-bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/404-bg.webp -------------------------------------------------------------------------------- /source/images/JSimple-Desktop-With-LocalSearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/JSimple-Desktop-With-LocalSearch.png -------------------------------------------------------------------------------- /source/images/JSimple-Desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/JSimple-Desktop.png -------------------------------------------------------------------------------- /source/images/avatar.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/avatar.webp -------------------------------------------------------------------------------- /source/images/cover-day.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/cover-day.webp -------------------------------------------------------------------------------- /source/images/cover-night.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/cover-night.webp -------------------------------------------------------------------------------- /source/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/favicon.png -------------------------------------------------------------------------------- /source/images/favicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/images/logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/logo.webp -------------------------------------------------------------------------------- /source/images/pagespeed-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/pagespeed-test.png -------------------------------------------------------------------------------- /source/images/rssFeed-bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/rssFeed-bg.webp -------------------------------------------------------------------------------- /source/images/tags-bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tangkunyin/hexo-theme-jsimple/91a170f1b943fcbbb724c849d674718e716c04e7/source/images/tags-bg.webp -------------------------------------------------------------------------------- /source/js/SimpleCore.min.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"function"==typeof define&&define.amd?define(function(){return e(t)}):e(t)}(this,function(h){M=(i=[]).concat,o=i.filter,l=i.slice,f=h.document,p={},e={},R={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},Z=/^\s*<(\w+|!)[^>]*>/,z=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,q=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,H=/^(?:body|html)$/i,I=/([A-Z])/g,V=["val","css","html","text","data","width","height","offset"],t=f.createElement("table"),_=f.createElement("tr"),B={tr:f.createElement("tbody"),tbody:t,thead:t,tfoot:t,td:_,th:_,"*":f.createElement("div")},U=/complete|loaded|interactive/,X=/^[\w-]*$/,W=(J={}).toString,d={},Y=f.createElement("div"),G={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},m=Array.isArray||function(t){return t instanceof Array},d.matches=function(t,e){var n,r;return!(!e||!t||1!==t.nodeType)&&((n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector)?n.call(t,e):((r=!(n=t.parentNode))&&(n=Y).appendChild(t),n=~d.qsa(n,e).indexOf(t),r&&Y.removeChild(t),n))},s=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},n=function(n){return o.call(n,function(t,e){return n.indexOf(t)==e})},d.fragment=function(t,e,n){var r,i,o;return(r=z.test(t)?c(f.createElement(RegExp.$1)):r)||(t.replace&&(t=t.replace(q,"<$1>")),e===u&&(e=Z.test(t)&&RegExp.$1),(o=B[e=e in B?e:"*"]).innerHTML=""+t,r=c.each(l.call(o.childNodes),function(){o.removeChild(this)})),N(n)&&(i=c(r),c.each(n,function(t,e){-1)<[^<]*)*<\/script>/gi,et=/^(?:text|application)\/javascript/i,nt=/^(?:text|application)\/xml/i,rt="application/json",it="text/html",ot=/^\s*$/,(at=x.createElement("a")).href=h.location.href,g.active=0,g.ajaxJSONP=function(n,r){var i,o,t,a,s,u,e,c;return"type"in n?(t=n.jsonpCallback,a=(g.isFunction(t)?t():t)||"Zepto"+Q++,s=x.createElement("script"),u=h[a],c={abort:e=function(t){g(s).triggerHandler("error",t||"abort")}},r&&r.promise(c),g(s).on("load error",function(t,e){clearTimeout(o),g(s).off().remove(),"error"!=t.type&&i?At(i[0],c,n,r):L(null,e||"error",c,n,r),h[a]=u,i&&g.isFunction(u)&&u(i[0]),u=i=void 0}),!1===Pt(c,n)?e("abort"):(h[a]=function(){i=arguments},s.src=n.url.replace(/\?(.+)=\?/,"?$1="+a),x.head.appendChild(s),0").html(t.replace(tt,"")).find(r):t),a&&a.apply(i,arguments)},g.ajax(t)),this},st=encodeURIComponent,g.param=function(t,e){var n=[];return n.add=function(t,e){null==(e=g.isFunction(e)?e():e)&&(e=""),this.push(st(t)+"="+st(e))},function n(r,t,i,o){var a,s=g.isArray(t),u=g.isPlainObject(t);g.each(t,function(t,e){a=g.type(e),o&&(t=i?o:o+"["+(u||"object"==a||"array"==a?t:"")+"]"),!o&&s?r.add(e.name,e.value):"array"==a||!i&&"object"==a?n(r,e,i,t):r.add(t,e)})}(n,t,e),n.join("&").replace(/%20/g,"+")},(v=t).fn.serializeArray=function(){function n(t){return t.forEach?t.forEach(n):void e.push({name:r,value:t})}var r,i,e=[];return this[0]&&v.each(this[0].elements,function(t,e){i=e.type,(r=e.name)&&"fieldset"!=e.nodeName.toLowerCase()&&!e.disabled&&"submit"!=i&&"reset"!=i&&"button"!=i&&"file"!=i&&("radio"!=i&&"checkbox"!=i||e.checked)&&n(v(e).val())}),e},v.fn.serialize=function(){var e=[];return this.serializeArray().forEach(function(t){e.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.value))}),e.join("&")},v.fn.submit=function(t){return 0 in arguments?this.bind("submit",t):this.length&&(t=v.Event("submit"),this.eq(0).trigger(t),t.isDefaultPrevented()||this.get(0).submit()),this};try{getComputedStyle(void 0)}catch(t){var Ot=getComputedStyle;h.getComputedStyle=function(t,e){try{return Ot(t,e)}catch(t){return null}}}return t;function D(t,e,n,r){return t.global?(t=e||x,e=n,n=r,e=g.Event(e),g(t).trigger(e,n),!e.isDefaultPrevented()):void 0}function Pt(t,e){var n=e.context;return!1!==e.beforeSend.call(n,t,e)&&!1!==D(e,n,"ajaxBeforeSend",[t,e])&&void D(e,n,"ajaxSend",[t,e])}function At(t,e,n,r){var i=n.context,o="success";n.success.call(i,t,o,e),r&&r.resolveWith(i,[t,o,e]),D(n,i,"ajaxSuccess",[e,n,t]),Dt(o,e,n)}function L(t,e,n,r,i){var o=r.context;r.error.call(o,n,e,t),i&&i.rejectWith(o,[n,e,t]),D(r,o,"ajaxError",[n,r,t||e]),Dt(e,n,r)}function Dt(t,e,n){var r=n.context;n.complete.call(r,e,t),D(n,r,"ajaxComplete",[e,n]),(t=n).global&&!--g.active&&D(t,null,"ajaxStop")}function $(){}function Lt(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function $t(t,e,n,r){return g.isFunction(e)&&(r=n,n=e,e=void 0),g.isFunction(n)||(r=n,n=void 0),{url:t,data:e,success:n,dataType:r}}function F(t){return t._zid||(t._zid=ut++)}function Ft(t,e,n,r){var i;return(e=kt(e)).ns&&(i=new RegExp("(?:^| )"+e.ns.replace(" "," .* ?")+"(?: |$)")),(j[F(t)]||[]).filter(function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||i.test(t.ns))&&(!n||F(t.fn)===F(n))&&(!r||t.sel==r)})}function kt(t){t=(""+t).split(".");return{e:t[0],ns:t.slice(1).sort().join(" ")}}function Mt(t,e){return t.del&&!ft&&t.e in ht||!!e}function Rt(t){return pt[t]||ft&&ht[t]||t}function Zt(r,t,i,o,a,s,u){var e=F(r),c=j[e]||(j[e]=[]);t.split(/\s/).forEach(function(t){if("ready"==t)return b(document).ready(i);var e=kt(t),n=(e.fn=i,e.sel=a,e.e in pt&&(i=function(t){t=t.relatedTarget;return!t||t!==this&&!b.contains(this,t)?e.fn.apply(this,arguments):void 0}),(e.del=s)||i);e.proxy=function(t){var e;if(!(t=qt(t)).isImmediatePropagationStopped())return t.data=o,!1===(e=n.apply(r,t._args==E?[t]:[t].concat(t._args)))&&(t.preventDefault(),t.stopPropagation()),e},e.i=c.length,c.push(e),"addEventListener"in r&&r.addEventListener(Rt(e.e),e.proxy,Mt(e,u))})}function zt(e,t,n,r,i){var o=F(e);(t||"").split(/\s/).forEach(function(t){Ft(e,t,n,r).forEach(function(t){delete j[o][t.i],"removeEventListener"in e&&e.removeEventListener(Rt(t.e),t.proxy,Mt(t,i))})})}function qt(r,i){return(i||!r.isDefaultPrevented)&&(i=i||r,b.each(gt,function(t,e){var n=i[t];r[t]=function(){return this[e]=dt,n&&n.apply(i,arguments)},r[e]=mt}),r.timeStamp||(r.timeStamp=Date.now()),i.defaultPrevented!==E?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(r.isDefaultPrevented=dt),r}function Ht(t){var e,n={originalEvent:t};for(e in t)vt.test(e)||t[e]===E||(n[e]=t[e]);return qt(n,t)}function k(t){return"string"==typeof t}}); 2 | function _createForOfIteratorHelper(e,o){var t,r,n,a,i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(i)return n=!(r=!0),{s:function(){i=i.call(e)},n:function(){var e=i.next();return r=e.done,e},e:function(e){n=!0,t=e},f:function(){try{r||null==i.return||i.return()}finally{if(n)throw t}}};if(Array.isArray(e)||(i=_unsupportedIterableToArray(e))||o&&e&&"number"==typeof e.length)return i&&(e=i),a=0,{s:o=function(){},n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:o};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,o){var t;if(e)return"string"==typeof e?_arrayLikeToArray(e,o):"Map"===(t="Object"===(t={}.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:t)||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,o):void 0}function _arrayLikeToArray(e,o){(null==o||o>e.length)&&(o=e.length);for(var t=0,r=Array(o);t').css("overflow","hidden"),$(".search-popup-overlay").click(LocalSearch.onPopupClose),$(".popup").toggle();var e=$("#local-search-input");e.attr("autocapitalize","none"),e.attr("autocorrect","off"),e.focus()},searchFunc:function(e,o){$(".search-popup-overlay").is(":visible")?alert("Fetching data...don't worry"):($("body").append('
').css("overflow","hidden"),$("#search-loading-icon").css("margin","20% auto 0 auto").css("text-align","center"));var _,n=document.getElementById(e),a=document.getElementById(o);n&&a?(LocalSearch.unescape&&(_=function(e){return String(e).replace(/"/g,'"').replace(/'/g,"'").replace(/:/g,":").replace(/&#(\d+);/g,function(e,o){return String.fromCharCode(o)}).replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}),$.ajax({url:LocalSearch.searchPath,timeout:5e3,dataType:LocalSearch.isXml?"xml":"json",async:!0,success:function(e){LocalSearch.isfetched=!0,$(".popup").detach().appendTo("body");function o(){var o,C=n.value.trim().toLowerCase(),$=C.split(/[\s\-]+/),w=(1<$.length&&$.push(C),[]);if(0]+>/g,""),i=(a=LocalSearch.unescape?a&&_(a):a).toLowerCase(),c=decodeURIComponent(e.url).replace(/\/{2,}/g,"/"),l=[],s=[];if(""!=r&&($.forEach(function(e){function o(e,o,t){var r=e.length;if(0===r)return[];var n,a=0,i=[];for(t||(o=o.toLowerCase(),e=e.toLowerCase());-1<(n=o.indexOf(e,a));)i.push({position:n,word:e}),a=n+r;return i}l=l.concat(o(e,n,!1)),s=s.concat(o(e,i,!1))}),0'+t.substring(e.position,o)+"",n=o}),r+=t.substring(n,e.end)},e=([l,s].forEach(function(e){e.sort(function(e,o){return o.position!==e.position?o.position-e.position:e.word.length-o.word.length})}),[]),d=(0!=l.length&&e.push(p(0,0,r.length,l)),[]);0!=s.length;){var f=s[s.length-1],g=f.position,f=f.word,m=g-20,v=g+80;m<0&&(m=0),(v=va.length&&(v=a.length),d.push(p(0,m,v,s))}d.sort(function(e,o){return e.searchTextCount!==o.searchTextCount?o.searchTextCount-e.searchTextCount:e.hits.length!==o.hits.length?o.hits.length-e.hits.length:e.start-o.start});var o=parseInt(LocalSearch.topN),S=(0<=o&&(d=d.slice(0,o)),"");S+=0!=e.length?"
  • "+u(r,e[0])+"":"
  • "+r+"",d.forEach(function(e){S+="

    '+u(a,e)+"...

    "}),S+="
  • ",w.push({item:S,searchTextCount:h,hitCount:t,id:w.length})}}()}catch(e){t.e(e)}finally{t.f()}}1===$.length&&""===$[0]?a.innerHTML='
    \n \n

    按Esc退出搜索...

    \n
    ':0===w.length?a.innerHTML='
    \n \n

    暂未查到有关内容,催更点这里

    \n
    '):(w.sort(function(e,o){return e.searchTextCount!==o.searchTextCount?o.searchTextCount-e.searchTextCount:e.hitCount!==o.hitCount?o.hitCount-e.hitCount:o.id-e.id}),o='
      ',w.forEach(function(e){o+=e.item}),o+="
    ",a.innerHTML=o)}var r=LocalSearch.isXml?$("entry",e).map(function(){return{title:$("title",this).text(),content:$("content",this).text(),url:$("url",this).text()}}).get():e;"auto"===LocalSearch.trigger?n.addEventListener("input",o):($(".search-icon").click(o),n.addEventListener("keypress",function(e){13===e.keyCode&&o()})),$(".local-search-pop-overlay").remove(),$("body").css("overflow",""),LocalSearch.proceedsearch()},error:function(e,o,t){alert(o+", Load error when get "+LocalSearch.searchPath),console.error(t),window.location.reload(!0)}})):console.error("Elements not exists with searchId: "+e+", resultContentId: "+o)},doSearch:function(e){e&&e.stopPropagation(),LocalSearch.isfetched?LocalSearch.proceedsearch():LocalSearch.searchFunc("local-search-input","local-search-result")}},SimpleCore={creationTime:new Date,highlightTheme:null,isPost:"false",prevTop:0,headerShow:!0,localSearch:{},readMode:"day",chatLink:"/",initParams:function(e){SimpleCore.creationTime=e.creationTime,SimpleCore.highlightTheme=e.highlightTheme,SimpleCore.isPost=e.isPost,SimpleCore.localSearch=e.localSearch,SimpleCore.readMode=e.readMode,SimpleCore.chatLink=e.chatLink},init:function(e){SimpleCore.initParams(e),LocalSearch.initParams(SimpleCore.localSearch),$(window).resize(function(){SimpleCore.syncSize()}),$(window).scroll(function(e){SimpleCore.scrollCallback()}),$(document).on("click",".btn-read-mode",function(e){e.preventDefault(),SimpleCore.switchReadMode()}),$(document).on("click",".btn-search",function(e){e.preventDefault(),SimpleCore.switchSearch()}),$(document).on("click","#local-search-input-tip",function(e){LocalSearch.doSearch(e)}),$(document).on("click",".popup-btn-close",function(e){e.preventDefault(),LocalSearch.onPopupClose()}),$(document).on("click",".popup",function(e){e.stopPropagation()}),$(document).on("click",".btn-gotop",function(e){e.preventDefault(),SimpleCore.goTop()}),SimpleCore.changeReadModel(),SimpleCore.setPageCurrent(),SimpleCore.setBuildingTime(),SimpleCore.syncSize(),SimpleCore.printGreeting(),SimpleCore.registerHotKeyEvent(),SimpleCore.setDefaultReadingMode()},goTop:function(){$("html, body").scrollTo({toT:0})},setPageCurrent:function(){"true"===SimpleCore.isPost?($("#cover").hide(),$("body").addClass("single")):($("#cover").show(),$("body").removeClass("single")),$.each($(".nav-menu a"),function(e,o){o.href===window.location.href||o.href===window.location.href.replace(/\/$/,"")?$(o).addClass("current"):$(o).removeClass("current")})},scrollCallback:function(){var e=document.documentElement.scrollTop||document.body.scrollTop||0;100 .main").width()):e.removeAttr("style"),o<768&&$(".site-name").click(function(e){e.preventDefault()})},switchSearch:function(){var e=$("#search");e.hasClass("active")?e.removeClass("active"):e.addClass("active")},switchReadMode:function(e){var o=$("body").hasClass("night-mode")?"day":"night";"string"==typeof e&&0').appendTo($("body"));var t="notice-"+(new Date).getTime();$('

    '+e+"

    "+o+"

    ").appendTo($("#notice")).on("click",".notice-item-close",function(){return $("#notice").remove(),!1}),$("#notice").css("margin-right",-$("#notice").width()/2),setTimeout(function(){$("#notice").remove()},1e4)},setLocalData:function(e,o){window.localStorage&&window.localStorage.setItem(e,o)},getLocalData:function(e){if(window.localStorage)return window.localStorage.getItem(e)},setBuildingTime:function(){var e=new Date(SimpleCore.creationTime),o=new Date,e=o.getTime()-e.getTime(),e=Math.floor(e/864e5);return $("#cpYear").html(o.getFullYear()),$("#siteBuildingTime").html(e),e},printGreeting:function(){var e=" _ _ _ _ _ _ _ _ \n( ) ( ) (_ ) (_ ) ( ) _ ( ) (_ ) ( )\n| |_| | __ | | | | _ | | ( ) | | _ _ __ | | _| |\n| _ | /'__`\\ | | | | /'_`\\ | | | | | | /'_`\\ ( '__)| | /'_` |\n| | | |( ___/ | | | | ( (_) ) | (_/ \\_) |( (_) )| | | | ( (_| |\n(_) (_)`\\____)(___)(___)`\\___/' `\\___x___/'`\\___/'(_) (___)`\\__,_)\n\n已稳定运行"+this.setBuildingTime()+"天,拦截了无数次逗比攻击!🎉🎉🎉\n ";console.log("%c\n"+e,"color: #527fe2; font-family:KaiTi;font-size: 16px")},registerHotKeyEvent:function(o){$(document).on("keyup",function(e){"Escape"===e.key&&"block"===$(".search-popup").css("display")&&($(".search-popup").hide(),$(".search-popup-overlay").remove(),$("body").css("overflow","")),"Shift"===e.key&&"none"===$(".search-popup").css("display")&&LocalSearch.doSearch(o)})},setDefaultReadingMode:function(){SimpleCore.getLocalData("read-mode")||"day"!==SimpleCore.readMode&&"night"!==SimpleCore.readMode||SimpleCore.switchReadMode(SimpleCore.readMode)}};$(function(){window.jsi_config?SimpleCore.init(window.jsi_config):console.error("JSimple get wrong config: ",window.jsi_config)}); -------------------------------------------------------------------------------- /source/js/lib/SimpleCore.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Zepto扩展 3 | */ 4 | $.fn.scrollTo = function(options) { 5 | const defaults = { 6 | toT : 0, //滚动目标位置 7 | durTime : 500, //过渡动画时间 8 | delay : 30, //定时器时间 9 | callback:null //回调函数 10 | }; 11 | let opts = $.extend(defaults,options), 12 | timer = null, 13 | _this = this, 14 | curTop = _this.scrollTop(),//滚动条当前的位置 15 | subTop = opts.toT - curTop, //滚动条目标位置和当前位置的差值 16 | index = 0, 17 | dur = Math.round(opts.durTime / opts.delay), 18 | smoothScroll = function(t){ 19 | index++; 20 | let per = Math.round(subTop/dur); 21 | if(index >= dur) { 22 | _this.scrollTop(t); 23 | window.clearInterval(timer); 24 | if(opts.callback && typeof opts.callback == 'function'){ 25 | opts.callback(); 26 | } 27 | return; 28 | } else { 29 | _this.scrollTop(curTop + index*per); 30 | } 31 | }; 32 | timer = window.setInterval(function(){ 33 | smoothScroll(opts.toT); 34 | }, opts.delay); 35 | return _this; 36 | }; 37 | /** 38 | * Local Search 39 | * @author https://github.com/theme-next/hexo-theme-next 40 | */ 41 | const LocalSearch = { 42 | searchPath: '', 43 | trigger: 'auto', 44 | topN: '1', 45 | unescape: false, 46 | isfetched: false, 47 | isXml: true, 48 | initParams (data) { 49 | LocalSearch.searchPath = data.dbPath; 50 | LocalSearch.trigger = data.trigger; 51 | LocalSearch.topN = data.topN; 52 | LocalSearch.unescape = data.unescape === 'false' ? false : true; 53 | if (LocalSearch.searchPath.length === 0) { 54 | LocalSearch.searchPath = "/search.xml"; 55 | } else if (/json$/i.test(LocalSearch.searchPath)) { 56 | LocalSearch.isXml = false; 57 | } 58 | }, 59 | onPopupClose () { 60 | $('.popup').hide(); 61 | $('#local-search-input').val(''); 62 | $('.search-result-list').remove(); 63 | $('#no-result').remove(); 64 | $(".local-search-pop-overlay").remove(); 65 | $('body').css('overflow', ''); 66 | }, 67 | proceedsearch () { 68 | $("body").append('
    ').css('overflow', 'hidden'); 69 | $('.search-popup-overlay').click(LocalSearch.onPopupClose); 70 | $('.popup').toggle(); 71 | const $localSearchInput = $('#local-search-input'); 72 | $localSearchInput.attr("autocapitalize", "none"); 73 | $localSearchInput.attr("autocorrect", "off"); 74 | $localSearchInput.focus(); 75 | }, 76 | // search function; 77 | searchFunc (search_id, content_id) { 78 | // if loading exists then return. 79 | if (!$('.search-popup-overlay').is(':visible')) { 80 | // start loading animation 81 | $("body").append('
    ' + 82 | '
    ' + 83 | '' + 84 | '
    ' + 85 | '
    ').css('overflow', 'hidden'); 86 | $("#search-loading-icon").css('margin', '20% auto 0 auto').css('text-align', 'center'); 87 | } else { 88 | alert("Fetching data...don't worry") 89 | } 90 | const input = document.getElementById(search_id); 91 | const resultContent = document.getElementById(content_id); 92 | if (!input || !resultContent) { 93 | console.error('Elements not exists with searchId: '+search_id+', resultContentId: '+content_id); 94 | return; 95 | } 96 | if (LocalSearch.unescape) { 97 | // ref: https://github.com/ForbesLindesay/unescape-html 98 | var unescapeHtml = function(html) { 99 | return String(html) 100 | .replace(/"/g, '"') 101 | .replace(/'/g, '\'') 102 | .replace(/:/g, ':') 103 | // replace all the other &#x; chars 104 | .replace(/&#(\d+);/g, function (m, p) { return String.fromCharCode(p); }) 105 | .replace(/</g, '<') 106 | .replace(/>/g, '>') 107 | .replace(/&/g, '&'); 108 | }; 109 | } 110 | $.ajax({ 111 | url: LocalSearch.searchPath, 112 | timeout: 5000, 113 | dataType: LocalSearch.isXml ? "xml" : "json", 114 | async: true, 115 | success (res) { 116 | // get the contents from search data 117 | LocalSearch.isfetched = true; 118 | $('.popup').detach().appendTo('body'); 119 | const datas = LocalSearch.isXml ? $("entry", res).map(function () { 120 | return { 121 | title: $("title", this).text(), 122 | content: $("content", this).text(), 123 | url: $("url", this).text() 124 | }; 125 | }).get() : res; 126 | const inputEventFunction = function () { 127 | const searchText = input.value.trim().toLowerCase(); 128 | const keywords = searchText.split(/[\s\-]+/); 129 | if (keywords.length > 1) { 130 | keywords.push(searchText); 131 | } 132 | const resultItems = []; 133 | if (searchText.length > 0 && Array.isArray(datas)) { 134 | for (const data of datas) { 135 | if (!data || !data.content) continue; 136 | let isMatch = false; 137 | let hitCount = 0; 138 | let searchTextCount = 0; 139 | const title = data.title.trim(); 140 | const titleInLowerCase = title.toLowerCase(); 141 | let content = data.content.trim().replace(/<[^>]+>/g, ""); 142 | if (LocalSearch.unescape && content) { 143 | content = unescapeHtml(content); 144 | } 145 | const contentInLowerCase = content.toLowerCase(); 146 | const articleUrl = decodeURIComponent(data.url).replace(/\/{2,}/g, '/'); 147 | let indexOfTitle = []; 148 | let indexOfContent = []; 149 | // only match articles with not empty titles 150 | if (title != '') { 151 | keywords.forEach(function (keyword) { 152 | function getIndexByWord(word, text, caseSensitive) { 153 | const wordLen = word.length; 154 | if (wordLen === 0) { 155 | return []; 156 | } 157 | let startPosition = 0, position = [], index = []; 158 | if (!caseSensitive) { 159 | text = text.toLowerCase(); 160 | word = word.toLowerCase(); 161 | } 162 | while ((position = text.indexOf(word, startPosition)) > -1) { 163 | index.push({position: position, word: word}); 164 | startPosition = position + wordLen; 165 | } 166 | return index; 167 | } 168 | 169 | indexOfTitle = indexOfTitle.concat(getIndexByWord(keyword, titleInLowerCase, false)); 170 | indexOfContent = indexOfContent.concat(getIndexByWord(keyword, contentInLowerCase, false)); 171 | }); 172 | if (indexOfTitle.length > 0 || indexOfContent.length > 0) { 173 | isMatch = true; 174 | hitCount = indexOfTitle.length + indexOfContent.length; 175 | } 176 | } 177 | // show search results 178 | if (isMatch) { 179 | // sort index by position of keyword 180 | [indexOfTitle, indexOfContent].forEach(function (index) { 181 | index.sort(function (itemLeft, itemRight) { 182 | if (itemRight.position !== itemLeft.position) { 183 | return itemRight.position - itemLeft.position; 184 | } else { 185 | return itemLeft.word.length - itemRight.word.length; 186 | } 187 | }); 188 | }); 189 | 190 | // merge hits into slices 191 | function mergeIntoSlice(text, start, end, index) { 192 | let item = index[index.length - 1]; 193 | let position = item.position; 194 | let word = item.word; 195 | let hits = []; 196 | let searchTextCountInSlice = 0; 197 | while (position + word.length <= end && index.length != 0) { 198 | if (word === searchText) { 199 | searchTextCountInSlice++; 200 | } 201 | hits.push({position: position, length: word.length}); 202 | const wordEnd = position + word.length; 203 | 204 | // move to next position of hit 205 | 206 | index.pop(); 207 | while (index.length != 0) { 208 | item = index[index.length - 1]; 209 | position = item.position; 210 | word = item.word; 211 | if (wordEnd > position) { 212 | index.pop(); 213 | } else { 214 | break; 215 | } 216 | } 217 | } 218 | searchTextCount += searchTextCountInSlice; 219 | return { 220 | hits: hits, 221 | start: start, 222 | end: end, 223 | searchTextCount: searchTextCountInSlice 224 | }; 225 | } 226 | 227 | const slicesOfTitle = []; 228 | if (indexOfTitle.length != 0) { 229 | slicesOfTitle.push(mergeIntoSlice(title, 0, title.length, indexOfTitle)); 230 | } 231 | 232 | let slicesOfContent = []; 233 | while (indexOfContent.length != 0) { 234 | const item = indexOfContent[indexOfContent.length - 1]; 235 | const position = item.position; 236 | const word = item.word; 237 | // cut out 100 characters 238 | let start = position - 20; 239 | let end = position + 80; 240 | if (start < 0) { 241 | start = 0; 242 | } 243 | if (end < position + word.length) { 244 | end = position + word.length; 245 | } 246 | if (end > content.length) { 247 | end = content.length; 248 | } 249 | slicesOfContent.push(mergeIntoSlice(content, start, end, indexOfContent)); 250 | } 251 | // sort slices in content by search text's count and hits' count 252 | slicesOfContent.sort(function (sliceLeft, sliceRight) { 253 | if (sliceLeft.searchTextCount !== sliceRight.searchTextCount) { 254 | return sliceRight.searchTextCount - sliceLeft.searchTextCount; 255 | } else if (sliceLeft.hits.length !== sliceRight.hits.length) { 256 | return sliceRight.hits.length - sliceLeft.hits.length; 257 | } else { 258 | return sliceLeft.start - sliceRight.start; 259 | } 260 | }); 261 | 262 | // select top N slices in content 263 | const upperBound = parseInt(LocalSearch.topN); 264 | if (upperBound >= 0) { 265 | slicesOfContent = slicesOfContent.slice(0, upperBound); 266 | } 267 | // highlight title and content 268 | 269 | function highlightKeyword(text, slice) { 270 | let result = ''; 271 | let prevEnd = slice.start; 272 | slice.hits.forEach(function (hit) { 273 | result += text.substring(prevEnd, hit.position); 274 | const end = hit.position + hit.length; 275 | result += '' + text.substring(hit.position, end) + ''; 276 | prevEnd = end; 277 | }); 278 | result += text.substring(prevEnd, slice.end); 279 | return result; 280 | } 281 | 282 | let resultItem = ''; 283 | 284 | if (slicesOfTitle.length != 0) { 285 | resultItem += "
  • " + highlightKeyword(title, slicesOfTitle[0]) + ""; 286 | } else { 287 | resultItem += "
  • " + title + ""; 288 | } 289 | 290 | slicesOfContent.forEach(function (slice) { 291 | resultItem += "" + 292 | "

    " + highlightKeyword(content, slice) + 293 | "...

    " + "
    "; 294 | }); 295 | 296 | resultItem += "
  • "; 297 | resultItems.push({ 298 | item: resultItem, 299 | searchTextCount: searchTextCount, 300 | hitCount: hitCount, 301 | id: resultItems.length 302 | }); 303 | } 304 | } 305 | } 306 | if (keywords.length === 1 && keywords[0] === "") { 307 | resultContent.innerHTML = `
    308 | 309 |

    按Esc退出搜索...

    310 |
    ` 311 | } else if (resultItems.length === 0) { 312 | resultContent.innerHTML = `
    313 | 314 |

    暂未查到有关内容,催更点这里

    315 |
    ` 316 | } else { 317 | resultItems.sort(function (resultLeft, resultRight) { 318 | if (resultLeft.searchTextCount !== resultRight.searchTextCount) { 319 | return resultRight.searchTextCount - resultLeft.searchTextCount; 320 | } else if (resultLeft.hitCount !== resultRight.hitCount) { 321 | return resultRight.hitCount - resultLeft.hitCount; 322 | } else { 323 | return resultRight.id - resultLeft.id; 324 | } 325 | }); 326 | let searchResultList = '
      '; 327 | resultItems.forEach(function (result) { 328 | searchResultList += result.item; 329 | }); 330 | searchResultList += "
    "; 331 | resultContent.innerHTML = searchResultList; 332 | } 333 | }; 334 | 335 | if ('auto' === LocalSearch.trigger) { 336 | input.addEventListener('input', inputEventFunction); 337 | } else { 338 | $('.search-icon').click(inputEventFunction); 339 | input.addEventListener('keypress', function (event) { 340 | if (event.keyCode === 13) { 341 | inputEventFunction(); 342 | } 343 | }); 344 | } 345 | // remove loading animation 346 | $(".local-search-pop-overlay").remove(); 347 | $('body').css('overflow', ''); 348 | LocalSearch.proceedsearch(); 349 | }, 350 | error (xhr,status,error) { 351 | alert(status+', Load error when get '+ LocalSearch.searchPath); 352 | console.error(error); 353 | window.location.reload(true); 354 | } 355 | }); 356 | }, 357 | doSearch (e) { 358 | e && e.stopPropagation(); 359 | if (!LocalSearch.isfetched) { 360 | LocalSearch.searchFunc('local-search-input', 'local-search-result'); 361 | } else { 362 | LocalSearch.proceedsearch(); 363 | } 364 | } 365 | }; 366 | /** 367 | * JSimple Theme CoreLib 368 | * @author tangkunyin 2017/1/25. 369 | */ 370 | const SimpleCore = { 371 | creationTime: new Date(), 372 | highlightTheme: null, 373 | isPost: 'false', 374 | prevTop: 0, 375 | headerShow: true, 376 | localSearch: {}, 377 | readMode: 'day', 378 | chatLink: '/', 379 | initParams (params) { 380 | SimpleCore.creationTime = params.creationTime; 381 | SimpleCore.highlightTheme = params.highlightTheme; 382 | SimpleCore.isPost = params.isPost; 383 | SimpleCore.localSearch = params.localSearch; 384 | SimpleCore.readMode = params.readMode; 385 | SimpleCore.chatLink = params.chatLink; 386 | }, 387 | init (params) { 388 | SimpleCore.initParams(params); 389 | LocalSearch.initParams(SimpleCore.localSearch); 390 | $(window).resize(function () { 391 | SimpleCore.syncSize(); 392 | }); 393 | $(window).scroll(function (e) { 394 | SimpleCore.scrollCallback(); 395 | }); 396 | $(document).on('click', '.btn-read-mode', function (e) { 397 | e.preventDefault(); 398 | SimpleCore.switchReadMode(); 399 | }); 400 | $(document).on('click', '.btn-search', function (e) { 401 | e.preventDefault(); 402 | SimpleCore.switchSearch(); 403 | }); 404 | $(document).on('click', '#local-search-input-tip', function (e) { 405 | LocalSearch.doSearch(e); 406 | }); 407 | $(document).on('click', '.popup-btn-close', function (e) { 408 | e.preventDefault(); 409 | LocalSearch.onPopupClose(); 410 | }); 411 | $(document).on('click', '.popup', function (e) { 412 | e.stopPropagation(); 413 | }); 414 | $(document).on('click', '.btn-gotop', function (e) { 415 | e.preventDefault(); 416 | SimpleCore.goTop(); 417 | }); 418 | SimpleCore.changeReadModel(); 419 | SimpleCore.setPageCurrent(); 420 | SimpleCore.setBuildingTime(); 421 | SimpleCore.syncSize(); 422 | SimpleCore.printGreeting(); 423 | SimpleCore.registerHotKeyEvent(); 424 | SimpleCore.setDefaultReadingMode(); 425 | }, 426 | goTop () { 427 | $("html, body").scrollTo({toT: 0}); 428 | }, 429 | setPageCurrent () { 430 | if (SimpleCore.isPost === 'true') { 431 | $('#cover').hide(); 432 | $('body').addClass('single'); 433 | } else { 434 | $('#cover').show(); 435 | $('body').removeClass('single'); 436 | } 437 | $.each($('.nav-menu a'), function (k, v) { 438 | if (v.href === window.location.href || v.href === window.location.href.replace(/\/$/, '')) { 439 | $(v).addClass('current'); 440 | } else { 441 | $(v).removeClass('current'); 442 | } 443 | }); 444 | }, 445 | scrollCallback () { 446 | const top = document.documentElement.scrollTop 447 | || document.body.scrollTop 448 | || 0; 449 | if (top > 100) { 450 | $('.fixed-btn').show(); 451 | } else { 452 | $('.fixed-btn').hide(); 453 | } 454 | if ($('body').hasClass('single')) { 455 | SimpleCore.headerShow = (top < 100 || (SimpleCore.prevTop - top) > 0) ? true : false; 456 | SimpleCore.headerToggle(); 457 | } 458 | SimpleCore.prevTop = top; 459 | }, 460 | headerToggle () { 461 | if (SimpleCore.headerShow) { 462 | $('.page-title').css("top", 0); 463 | $('.nav-user').css("top", 0); 464 | if ($(window).width() < 480) { 465 | $('#nav').css("top", 0); 466 | } 467 | } else { 468 | $('.page-title').css("top", -45); 469 | $('.nav-user').css("top", -45); 470 | if ($(window).width() < 480) { 471 | $('#nav').css("top", -45); 472 | } 473 | } 474 | }, 475 | syncSize () { //同步窗口大小 476 | const pageTitle = $('.page-title'); 477 | const size = $(window).width(); 478 | if (size > 768 && SimpleCore.isPost !== 'true') { 479 | pageTitle.width($('#body > .main').width()); 480 | } else { 481 | pageTitle.removeAttr('style'); 482 | } 483 | if (size < 768) { 484 | $('.site-name').click(function (e) { 485 | e.preventDefault(); 486 | }); 487 | } 488 | }, 489 | switchSearch () { 490 | const srh = $('#search'); 491 | if (srh.hasClass('active')) { 492 | srh.removeClass('active'); 493 | } else { 494 | srh.addClass('active'); 495 | } 496 | }, 497 | switchReadMode (mode) { 498 | let next_mode = $('body').hasClass('night-mode') ? 'day' : 'night'; 499 | if (typeof mode === 'string' && mode.length > 0) { 500 | next_mode = mode; 501 | } 502 | SimpleCore.setLocalData('read-mode', next_mode); 503 | SimpleCore.changeReadModel(); 504 | }, 505 | changeReadModel () { 506 | const btn = $('.btn-read-mode'); 507 | if (SimpleCore.getLocalData('read-mode') == 'night') { 508 | $('body').addClass('night-mode'); 509 | btn.find('i').attr('class', 'fa fa-moon-o'); 510 | $(".cover-img").attr('src', location.origin + '/images/cover-night.webp'); 511 | } else { 512 | $('body').removeClass('night-mode'); 513 | btn.find('i').attr('class', 'fa fa-sun-o'); 514 | $(".cover-img").attr('src', location.origin + '/images/cover-day.webp'); 515 | } 516 | // 设置高亮主题 517 | let highlCss = SimpleCore.highlightTheme || 'default'; 518 | if (highlCss !== 'default') { 519 | highlCss += SimpleCore.getLocalData('read-mode') == 'night' ? '-dark' : '-light'; 520 | } 521 | $('#highl_css').load(`/css/${highlCss}.min.css`); 522 | }, 523 | alert (title,msg) { 524 | const notice = $('#notice'); 525 | if (notice.length > 0) { 526 | return false; 527 | } 528 | 529 | $('
    ').appendTo($('body')); 530 | const item = 'notice-' + (new Date().getTime()); 531 | const html = '
    ' 532 | + '' 533 | + '

    '+title+'

    ' + msg + '

    '; 534 | $(html).appendTo($('#notice')).on('click', '.notice-item-close', function () { 535 | $('#notice').remove(); 536 | return false; 537 | }); 538 | 539 | //居中显示,于x秒后自动关闭 540 | $('#notice').css('margin-right', -$('#notice').width() / 2); 541 | setTimeout(function () { 542 | $('#notice').remove(); 543 | }, 10000); 544 | }, 545 | setLocalData (key, value) { 546 | if (window.localStorage) { 547 | window.localStorage.setItem(key, value); 548 | } 549 | }, 550 | getLocalData (key) { 551 | if (window.localStorage) { 552 | return window.localStorage.getItem(key); 553 | } 554 | }, 555 | setBuildingTime () { 556 | const urodz = new Date(SimpleCore.creationTime); //建站时间 557 | const now = new Date(); 558 | const ile = now.getTime() - urodz.getTime(); 559 | const buildingDays = Math.floor(ile / (1000 * 60 * 60 * 24)); 560 | $('#cpYear').html(now.getFullYear()); 561 | $('#siteBuildingTime').html(buildingDays); 562 | return buildingDays; 563 | }, 564 | printGreeting () { 565 | const asciiTxt = " _ _ _ _ _ _ _ _ \n" + 566 | "( ) ( ) (_ ) (_ ) ( ) _ ( ) (_ ) ( )\n" + 567 | "| |_| | __ | | | | _ | | ( ) | | _ _ __ | | _| |\n" + 568 | "| _ | /'__`\\ | | | | /'_`\\ | | | | | | /'_`\\ ( '__)| | /'_` |\n" + 569 | "| | | |( ___/ | | | | ( (_) ) | (_/ \\_) |( (_) )| | | | ( (_| |\n" + 570 | "(_) (_)`\\____)(___)(___)`\\___/' `\\___x___/'`\\___/'(_) (___)`\\__,_)\n" + 571 | "\n已稳定运行" + this.setBuildingTime() + "天,拦截了无数次逗比攻击!🎉🎉🎉\n "; 572 | console.log("%c\n"+asciiTxt, "color: #527fe2; font-family:KaiTi;font-size: 16px"); 573 | }, 574 | registerHotKeyEvent(e) { 575 | $(document).on('keyup', function(event) { 576 | const shouldDismissSearchPopup = event.key === 'Escape' 577 | && $('.search-popup').css('display') === 'block'; 578 | if (shouldDismissSearchPopup) { 579 | $('.search-popup').hide(); 580 | $('.search-popup-overlay').remove(); 581 | $('body').css('overflow', ''); 582 | } 583 | const shouldShowSearchPopup = event.key === 'Shift' 584 | && $('.search-popup').css('display') === 'none'; 585 | if (shouldShowSearchPopup) { 586 | LocalSearch.doSearch(e); 587 | } 588 | }); 589 | }, 590 | setDefaultReadingMode() { 591 | if (!SimpleCore.getLocalData('read-mode') 592 | && ('day' === SimpleCore.readMode || 'night' === SimpleCore.readMode)) { 593 | SimpleCore.switchReadMode(SimpleCore.readMode); 594 | } 595 | } 596 | }; 597 | 598 | $(function () { 599 | window.jsi_config ? SimpleCore.init(window.jsi_config) : console.error('JSimple get wrong config: ', window.jsi_config) 600 | }); -------------------------------------------------------------------------------- /source/js/lib/zepto.min.js: -------------------------------------------------------------------------------- 1 | /* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */ 2 | !function(t,e){"function"==typeof define&&define.amd?define(function(){return e(t)}):e(t)}(this,function(t){var e=function(){function $(t){return null==t?String(t):S[C.call(t)]||"object"}function F(t){return"function"==$(t)}function k(t){return null!=t&&t==t.window}function M(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function R(t){return"object"==$(t)}function Z(t){return R(t)&&!k(t)&&Object.getPrototypeOf(t)==Object.prototype}function z(t){var e=!!t&&"length"in t&&t.length,n=r.type(t);return"function"!=n&&!k(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function q(t){return a.call(t,function(t){return null!=t})}function H(t){return t.length>0?r.fn.concat.apply([],t):t}function I(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function V(t){return t in l?l[t]:l[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function _(t,e){return"number"!=typeof e||h[I(t)]?e:e+"px"}function B(t){var e,n;return c[t]||(e=f.createElement(t),f.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),c[t]=n),c[t]}function U(t){return"children"in t?u.call(t.children):r.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function X(t,e){var n,r=t?t.length:0;for(n=0;r>n;n++)this[n]=t[n];this.length=r,this.selector=e||""}function J(t,r,i){for(n in r)i&&(Z(r[n])||L(r[n]))?(Z(r[n])&&!Z(t[n])&&(t[n]={}),L(r[n])&&!L(t[n])&&(t[n]=[]),J(t[n],r[n],i)):r[n]!==e&&(t[n]=r[n])}function W(t,e){return null==e?r(t):r(t).filter(e)}function Y(t,e,n,r){return F(e)?e.call(t,n,r):e}function G(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function K(t,n){var r=t.className||"",i=r&&r.baseVal!==e;return n===e?i?r.baseVal:r:void(i?r.baseVal=n:t.className=n)}function Q(t){try{return t?"true"==t||("false"==t?!1:"null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?r.parseJSON(t):t):t}catch(e){return t}}function tt(t,e){e(t);for(var n=0,r=t.childNodes.length;r>n;n++)tt(t.childNodes[n],e)}var e,n,r,i,O,P,o=[],s=o.concat,a=o.filter,u=o.slice,f=t.document,c={},l={},h={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},p=/^\s*<(\w+|!)[^>]*>/,d=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,m=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,g=/^(?:body|html)$/i,v=/([A-Z])/g,y=["val","css","html","text","data","width","height","offset"],x=["after","prepend","before","append"],b=f.createElement("table"),E=f.createElement("tr"),j={tr:f.createElement("tbody"),tbody:b,thead:b,tfoot:b,td:E,th:E,"*":f.createElement("div")},w=/complete|loaded|interactive/,T=/^[\w-]*$/,S={},C=S.toString,N={},A=f.createElement("div"),D={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},L=Array.isArray||function(t){return t instanceof Array};return N.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=A).appendChild(t),r=~N.qsa(i,e).indexOf(t),o&&A.removeChild(t),r},O=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},P=function(t){return a.call(t,function(e,n){return t.indexOf(e)==n})},N.fragment=function(t,n,i){var o,s,a;return d.test(t)&&(o=r(f.createElement(RegExp.$1))),o||(t.replace&&(t=t.replace(m,"<$1>")),n===e&&(n=p.test(t)&&RegExp.$1),n in j||(n="*"),a=j[n],a.innerHTML=""+t,o=r.each(u.call(a.childNodes),function(){a.removeChild(this)})),Z(i)&&(s=r(o),r.each(i,function(t,e){y.indexOf(t)>-1?s[t](e):s.attr(t,e)})),o},N.Z=function(t,e){return new X(t,e)},N.isZ=function(t){return t instanceof N.Z},N.init=function(t,n){var i;if(!t)return N.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&p.test(t))i=N.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}else{if(F(t))return r(f).ready(t);if(N.isZ(t))return t;if(L(t))i=q(t);else if(R(t))i=[t],t=null;else if(p.test(t))i=N.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}}return N.Z(i,t)},r=function(t,e){return N.init(t,e)},r.extend=function(t){var e,n=u.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){J(t,n,e)}),t},N.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,s=T.test(o);return t.getElementById&&s&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:u.call(s&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},r.contains=f.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},r.type=$,r.isFunction=F,r.isWindow=k,r.isArray=L,r.isPlainObject=Z,r.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},r.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},r.inArray=function(t,e,n){return o.indexOf.call(e,t,n)},r.camelCase=O,r.trim=function(t){return null==t?"":String.prototype.trim.call(t)},r.uuid=0,r.support={},r.expr={},r.noop=function(){},r.map=function(t,e){var n,i,o,r=[];if(z(t))for(i=0;i=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return o.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return F(t)?this.not(this.not(t)):r(a.call(this,function(e){return N.matches(e,t)}))},add:function(t,e){return r(P(this.concat(r(t,e))))},is:function(t){return this.length>0&&N.matches(this[0],t)},not:function(t){var n=[];if(F(t)&&t.call!==e)this.each(function(e){t.call(this,e)||n.push(this)});else{var i="string"==typeof t?this.filter(t):z(t)&&F(t.item)?u.call(t):r(t);this.forEach(function(t){i.indexOf(t)<0&&n.push(t)})}return r(n)},has:function(t){return this.filter(function(){return R(t)?r.contains(this,t):r(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!R(t)?t:r(t)},last:function(){var t=this[this.length-1];return t&&!R(t)?t:r(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?r(t).filter(function(){var t=this;return o.some.call(n,function(e){return r.contains(e,t)})}):1==this.length?r(N.qsa(this[0],t)):this.map(function(){return N.qsa(this,t)}):r()},closest:function(t,e){var n=[],i="object"==typeof t&&r(t);return this.each(function(r,o){for(;o&&!(i?i.indexOf(o)>=0:N.matches(o,t));)o=o!==e&&!M(o)&&o.parentNode;o&&n.indexOf(o)<0&&n.push(o)}),r(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=r.map(n,function(t){return(t=t.parentNode)&&!M(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return W(e,t)},parent:function(t){return W(P(this.pluck("parentNode")),t)},children:function(t){return W(this.map(function(){return U(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||u.call(this.childNodes)})},siblings:function(t){return W(this.map(function(t,e){return a.call(U(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return r.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=B(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=F(t);if(this[0]&&!e)var n=r(t).get(0),i=n.parentNode||this.length>1;return this.each(function(o){r(this).wrapAll(e?t.call(this,o):i?n.cloneNode(!0):n)})},wrapAll:function(t){if(this[0]){r(this[0]).before(t=r(t));for(var e;(e=t.children()).length;)t=e.first();r(t).append(this)}return this},wrapInner:function(t){var e=F(t);return this.each(function(n){var i=r(this),o=i.contents(),s=e?t.call(this,n):t;o.length?o.wrapAll(s):i.append(s)})},unwrap:function(){return this.parent().each(function(){r(this).replaceWith(r(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var n=r(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()})},prev:function(t){return r(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return r(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;r(this).empty().append(Y(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=Y(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,r){var i;return"string"!=typeof t||1 in arguments?this.each(function(e){if(1===this.nodeType)if(R(t))for(n in t)G(this,n,t[n]);else G(this,t,Y(this,r,e,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(i=this[0].getAttribute(t))?i:e},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){G(this,t)},this)})},prop:function(t,e){return t=D[t]||t,1 in arguments?this.each(function(n){this[t]=Y(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=D[t]||t,this.each(function(){delete this[t]})},data:function(t,n){var r="data-"+t.replace(v,"-$1").toLowerCase(),i=1 in arguments?this.attr(r,n):this.attr(r);return null!==i?Q(i):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=Y(this,t,e,this.value)})):this[0]&&(this[0].multiple?r(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each(function(t){var n=r(this),i=Y(this,e,t,n.offset()),o=n.offsetParent().offset(),s={top:i.top-o.top,left:i.left-o.left};"static"==n.css("position")&&(s.position="relative"),n.css(s)});if(!this.length)return null;if(f.documentElement!==this[0]&&!r.contains(f.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var i=this[0];if("string"==typeof t){if(!i)return;return i.style[O(t)]||getComputedStyle(i,"").getPropertyValue(t)}if(L(t)){if(!i)return;var o={},s=getComputedStyle(i,"");return r.each(t,function(t,e){o[e]=i.style[O(e)]||s.getPropertyValue(e)}),o}}var a="";if("string"==$(t))e||0===e?a=I(t)+":"+_(t,e):this.each(function(){this.style.removeProperty(I(t))});else for(n in t)t[n]||0===t[n]?a+=I(n)+":"+_(n,t[n])+";":this.each(function(){this.style.removeProperty(I(n))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(r(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?o.some.call(this,function(t){return this.test(K(t))},V(t)):!1},addClass:function(t){return t?this.each(function(e){if("className"in this){i=[];var n=K(this),o=Y(this,t,e,n);o.split(/\s+/g).forEach(function(t){r(this).hasClass(t)||i.push(t)},this),i.length&&K(this,n+(n?" ":"")+i.join(" "))}}):this},removeClass:function(t){return this.each(function(n){if("className"in this){if(t===e)return K(this,"");i=K(this),Y(this,t,n,i).split(/\s+/g).forEach(function(t){i=i.replace(V(t)," ")}),K(this,i.trim())}})},toggleClass:function(t,n){return t?this.each(function(i){var o=r(this),s=Y(this,t,i,K(this));s.split(/\s+/g).forEach(function(t){(n===e?!o.hasClass(t):n)?o.addClass(t):o.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),i=g.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(r(t).css("margin-top"))||0,n.left-=parseFloat(r(t).css("margin-left"))||0,i.top+=parseFloat(r(e[0]).css("border-top-width"))||0,i.left+=parseFloat(r(e[0]).css("border-left-width"))||0,{top:n.top-i.top,left:n.left-i.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||f.body;t&&!g.test(t.nodeName)&&"static"==r(t).css("position");)t=t.offsetParent;return t})}},r.fn.detach=r.fn.remove,["width","height"].forEach(function(t){var n=t.replace(/./,function(t){return t[0].toUpperCase()});r.fn[t]=function(i){var o,s=this[0];return i===e?k(s)?s["inner"+n]:M(s)?s.documentElement["scroll"+n]:(o=this.offset())&&o[t]:this.each(function(e){s=r(this),s.css(t,Y(this,i,e,s[t]()))})}}),x.forEach(function(n,i){var o=i%2;r.fn[n]=function(){var n,a,s=r.map(arguments,function(t){var i=[];return n=$(t),"array"==n?(t.forEach(function(t){return t.nodeType!==e?i.push(t):r.zepto.isZ(t)?i=i.concat(t.get()):void(i=i.concat(N.fragment(t)))}),i):"object"==n||null==t?t:N.fragment(t)}),u=this.length>1;return s.length<1?this:this.each(function(e,n){a=o?n:n.parentNode,n=0==i?n.nextSibling:1==i?n.firstChild:2==i?n:null;var c=r.contains(f.documentElement,a);s.forEach(function(e){if(u)e=e.cloneNode(!0);else if(!a)return r(e).remove();a.insertBefore(e,n),c&&tt(e,function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}})})})},r.fn[o?n+"To":"insert"+(i?"Before":"After")]=function(t){return r(t)[n](this),this}}),N.Z.prototype=X.prototype=r.fn,N.uniq=P,N.deserializeValue=Q,r.zepto=N,r}();return t.Zepto=e,void 0===t.$&&(t.$=e),function(e){function h(t){return t._zid||(t._zid=n++)}function p(t,e,n,r){if(e=d(e),e.ns)var i=m(e.ns);return(a[h(t)]||[]).filter(function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||i.test(t.ns))&&(!n||h(t.fn)===h(n))&&(!r||t.sel==r)})}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function m(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function g(t,e){return t.del&&!f&&t.e in c||!!e}function v(t){return l[t]||f&&c[t]||t}function y(t,n,i,o,s,u,f){var c=h(t),p=a[c]||(a[c]=[]);n.split(/\s/).forEach(function(n){if("ready"==n)return e(document).ready(i);var a=d(n);a.fn=i,a.sel=s,a.e in l&&(i=function(t){var n=t.relatedTarget;return!n||n!==this&&!e.contains(this,n)?a.fn.apply(this,arguments):void 0}),a.del=u;var c=u||i;a.proxy=function(e){if(e=T(e),!e.isImmediatePropagationStopped()){e.data=o;var n=c.apply(t,e._args==r?[e]:[e].concat(e._args));return n===!1&&(e.preventDefault(),e.stopPropagation()),n}},a.i=p.length,p.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,g(a,f))})}function x(t,e,n,r,i){var o=h(t);(e||"").split(/\s/).forEach(function(e){p(t,e,n,r).forEach(function(e){delete a[o][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,g(e,i))})})}function T(t,n){return(n||!t.isDefaultPrevented)&&(n||(n=t),e.each(w,function(e,r){var i=n[e];t[e]=function(){return this[r]=b,i&&i.apply(n,arguments)},t[r]=E}),t.timeStamp||(t.timeStamp=Date.now()),(n.defaultPrevented!==r?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(t.isDefaultPrevented=b)),t}function S(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===r||(n[e]=t[e]);return T(n,t)}var r,n=1,i=Array.prototype.slice,o=e.isFunction,s=function(t){return"string"==typeof t},a={},u={},f="onfocusin"in t,c={focus:"focusin",blur:"focusout"},l={mouseenter:"mouseover",mouseleave:"mouseout"};u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:x},e.proxy=function(t,n){var r=2 in arguments&&i.call(arguments,2);if(o(t)){var a=function(){return t.apply(n,r?r.concat(i.call(arguments)):arguments)};return a._zid=h(t),a}if(s(n))return r?(r.unshift(t[n],t),e.proxy.apply(null,r)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var b=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,w={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,n,a,u,f){var c,l,h=this;return t&&!s(t)?(e.each(t,function(t,e){h.on(t,n,a,e,f)}),h):(s(n)||o(u)||u===!1||(u=a,a=n,n=r),(u===r||a===!1)&&(u=a,a=r),u===!1&&(u=E),h.each(function(r,o){f&&(c=function(t){return x(o,t.type,u),u.apply(this,arguments)}),n&&(l=function(t){var r,s=e(t.target).closest(n,o).get(0);return s&&s!==o?(r=e.extend(S(t),{currentTarget:s,liveFired:o}),(c||u).apply(s,[r].concat(i.call(arguments,1)))):void 0}),y(o,t,u,a,n,l||c)}))},e.fn.off=function(t,n,i){var a=this;return t&&!s(t)?(e.each(t,function(t,e){a.off(t,n,e)}),a):(s(n)||o(i)||i===!1||(i=n,n=r),i===!1&&(i=E),a.each(function(){x(this,t,i,n)}))},e.fn.trigger=function(t,n){return t=s(t)||e.isPlainObject(t)?e.Event(t):T(t),t._args=n,this.each(function(){t.type in c&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)})},e.fn.triggerHandler=function(t,n){var r,i;return this.each(function(o,a){r=S(s(t)?e.Event(t):t),r._args=n,r.target=a,e.each(p(a,t.type||t),function(t,e){return i=e.proxy(r),r.isImmediatePropagationStopped()?!1:void 0})}),i},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}}),e.Event=function(t,e){s(t)||(e=t,t=e.type);var n=document.createEvent(u[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),T(n)}}(e),function(e){function p(t,n,r){var i=e.Event(n);return e(t).trigger(i,r),!i.isDefaultPrevented()}function d(t,e,n,i){return t.global?p(e||r,n,i):void 0}function m(t){t.global&&0===e.active++&&d(t,null,"ajaxStart")}function g(t){t.global&&!--e.active&&d(t,null,"ajaxStop")}function v(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||d(e,n,"ajaxBeforeSend",[t,e])===!1?!1:void d(e,n,"ajaxSend",[t,e])}function y(t,e,n,r){var i=n.context,o="success";n.success.call(i,t,o,e),r&&r.resolveWith(i,[t,o,e]),d(n,i,"ajaxSuccess",[e,n,t]),b(o,e,n)}function x(t,e,n,r,i){var o=r.context;r.error.call(o,n,e,t),i&&i.rejectWith(o,[n,e,t]),d(r,o,"ajaxError",[n,r,t||e]),b(e,n,r)}function b(t,e,n){var r=n.context;n.complete.call(r,e,t),d(n,r,"ajaxComplete",[e,n]),g(n)}function E(t,e,n){if(n.dataFilter==j)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function j(){}function w(t){return t&&(t=t.split(";",2)[0]),t&&(t==c?"html":t==f?"json":a.test(t)?"script":u.test(t)&&"xml")||"text"}function T(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function S(t){t.processData&&t.data&&"string"!=e.type(t.data)&&(t.data=e.param(t.data,t.traditional)),!t.data||t.type&&"GET"!=t.type.toUpperCase()&&"jsonp"!=t.dataType||(t.url=T(t.url,t.data),t.data=void 0)}function C(t,n,r,i){return e.isFunction(n)&&(i=r,r=n,n=void 0),e.isFunction(r)||(i=r,r=void 0),{url:t,data:n,success:r,dataType:i}}function O(t,n,r,i){var o,s=e.isArray(n),a=e.isPlainObject(n);e.each(n,function(n,u){o=e.type(u),i&&(n=r?i:i+"["+(a||"object"==o||"array"==o?n:"")+"]"),!i&&s?t.add(u.name,u.value):"array"==o||!r&&"object"==o?O(t,u,r,n):t.add(n,u)})}var i,o,n=+new Date,r=t.document,s=/)<[^<]*)*<\/script>/gi,a=/^(?:text|application)\/javascript/i,u=/^(?:text|application)\/xml/i,f="application/json",c="text/html",l=/^\s*$/,h=r.createElement("a");h.href=t.location.href,e.active=0,e.ajaxJSONP=function(i,o){if(!("type"in i))return e.ajax(i);var c,p,s=i.jsonpCallback,a=(e.isFunction(s)?s():s)||"Zepto"+n++,u=r.createElement("script"),f=t[a],l=function(t){e(u).triggerHandler("error",t||"abort")},h={abort:l};return o&&o.promise(h),e(u).on("load error",function(n,r){clearTimeout(p),e(u).off().remove(),"error"!=n.type&&c?y(c[0],h,i,o):x(null,r||"error",h,i,o),t[a]=f,c&&e.isFunction(f)&&f(c[0]),f=c=void 0}),v(h,i)===!1?(l("abort"),h):(t[a]=function(){c=arguments},u.src=i.url.replace(/\?(.+)=\?/,"?$1="+a),r.head.appendChild(u),i.timeout>0&&(p=setTimeout(function(){l("timeout")},i.timeout)),h)},e.ajaxSettings={type:"GET",beforeSend:j,success:j,error:j,complete:j,context:null,global:!0,xhr:function(){return new t.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:f,xml:"application/xml, text/xml",html:c,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:j},e.ajax=function(n){var u,f,s=e.extend({},n||{}),a=e.Deferred&&e.Deferred();for(i in e.ajaxSettings)void 0===s[i]&&(s[i]=e.ajaxSettings[i]);m(s),s.crossDomain||(u=r.createElement("a"),u.href=s.url,u.href=u.href,s.crossDomain=h.protocol+"//"+h.host!=u.protocol+"//"+u.host),s.url||(s.url=t.location.toString()),(f=s.url.indexOf("#"))>-1&&(s.url=s.url.slice(0,f)),S(s);var c=s.dataType,p=/\?.+=\?/.test(s.url);if(p&&(c="jsonp"),s.cache!==!1&&(n&&n.cache===!0||"script"!=c&&"jsonp"!=c)||(s.url=T(s.url,"_="+Date.now())),"jsonp"==c)return p||(s.url=T(s.url,s.jsonp?s.jsonp+"=?":s.jsonp===!1?"":"callback=?")),e.ajaxJSONP(s,a);var P,d=s.accepts[c],g={},b=function(t,e){g[t.toLowerCase()]=[t,e]},C=/^([\w-]+:)\/\//.test(s.url)?RegExp.$1:t.location.protocol,N=s.xhr(),O=N.setRequestHeader;if(a&&a.promise(N),s.crossDomain||b("X-Requested-With","XMLHttpRequest"),b("Accept",d||"*/*"),(d=s.mimeType||d)&&(d.indexOf(",")>-1&&(d=d.split(",",2)[0]),N.overrideMimeType&&N.overrideMimeType(d)),(s.contentType||s.contentType!==!1&&s.data&&"GET"!=s.type.toUpperCase())&&b("Content-Type",s.contentType||"application/x-www-form-urlencoded"),s.headers)for(o in s.headers)b(o,s.headers[o]);if(N.setRequestHeader=b,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=j,clearTimeout(P);var t,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&"file:"==C){if(c=c||w(s.mimeType||N.getResponseHeader("content-type")),"arraybuffer"==N.responseType||"blob"==N.responseType)t=N.response;else{t=N.responseText;try{t=E(t,c,s),"script"==c?(1,eval)(t):"xml"==c?t=N.responseXML:"json"==c&&(t=l.test(t)?null:e.parseJSON(t))}catch(r){n=r}if(n)return x(n,"parsererror",N,s,a)}y(t,N,s,a)}else x(N.statusText||null,N.status?"error":"abort",N,s,a)}},v(N,s)===!1)return N.abort(),x(null,"abort",N,s,a),N;var A="async"in s?s.async:!0;if(N.open(s.type,s.url,A,s.username,s.password),s.xhrFields)for(o in s.xhrFields)N[o]=s.xhrFields[o];for(o in g)O.apply(N,g[o]);return s.timeout>0&&(P=setTimeout(function(){N.onreadystatechange=j,N.abort(),x(null,"timeout",N,s,a)},s.timeout)),N.send(s.data?s.data:null),N},e.get=function(){return e.ajax(C.apply(null,arguments))},e.post=function(){var t=C.apply(null,arguments);return t.type="POST",e.ajax(t)},e.getJSON=function(){var t=C.apply(null,arguments);return t.dataType="json",e.ajax(t)},e.fn.load=function(t,n,r){if(!this.length)return this;var a,i=this,o=t.split(/\s/),u=C(t,n,r),f=u.success;return o.length>1&&(u.url=o[0],a=o[1]),u.success=function(t){i.html(a?e("
    ").html(t.replace(s,"")).find(a):t),f&&f.apply(i,arguments)},e.ajax(u),this};var N=encodeURIComponent;e.param=function(t,n){var r=[];return r.add=function(t,n){e.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(N(t)+"="+N(n))},O(r,t,n),r.join("&").replace(/%20/g,"+")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(e){var n=getComputedStyle;t.getComputedStyle=function(t,e){try{return n(t,e)}catch(r){return null}}}}(),e}); -------------------------------------------------------------------------------- /source/warn.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 警告:不被支持的浏览器 5 | 6 | 7 | 28 | 29 | 30 |

    !

    31 |

    Not support IE9 and below

    32 |

    为保持良好看相及友好操作,本站禁止不支持H5的浏览器访问

    33 |

    34 | 墙裂推荐使用 35 | Chrome 或 36 | Firefox 浏览器访问本站。 37 |

    38 |

    如果系统搞错了,请点击返回首页

    39 | 40 | 41 | --------------------------------------------------------------------------------