├── LICENSE ├── README.md ├── SECURITY.md ├── index.html ├── robots.txt ├── service-worker.js └── static ├── css ├── avatar-300x300.webp ├── avatar_night.png ├── font_1230786_swt4kkie8ym │ ├── demo.css │ ├── demo_index.html │ ├── iconfont.css │ ├── iconfont.eot │ ├── iconfont.js │ ├── iconfont.svg │ ├── iconfont.ttf │ ├── iconfont.woff │ └── iconfont.woff2 ├── font_1614281 │ ├── demo.css │ ├── demo_index.html │ ├── iconfont.css │ ├── iconfont.eot │ ├── iconfont.js │ ├── iconfont.json │ ├── iconfont.svg │ ├── iconfont.ttf │ ├── iconfont.woff │ └── iconfont.woff2 ├── sou.css └── sou_night.css ├── icon ├── Logo.ico ├── baidu.ico ├── bilibili.png ├── bing.ico ├── btn.svg ├── btn2.svg ├── doge_ico.png ├── g.svg ├── github.ico ├── google_1.png ├── icon-dark.svg ├── icon-light.svg ├── mijisou.png ├── right.svg ├── scp.png ├── seeres.png ├── steam.ico ├── user.png └── v2ex.png ├── images ├── aggregator.gif ├── avatar-110x110.webp ├── avatar-300x300.webp ├── avatar.png ├── avatar.webp ├── avatar_night.png ├── darkmode.gif ├── search_engine.gif └── server │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-icon-114x114-dunplab-manifest-4403.png │ ├── apple-icon-180x180-dunplab-manifest-4403.png │ ├── apple-icon-57x57-dunplab-manifest-4403.png │ ├── apple-icon-60x60-dunplab-manifest-4403.png │ ├── apple-icon-76x76-dunplab-manifest-4403.png │ ├── apple-touch-icon-114x114.png │ ├── apple-touch-icon-120x120.png │ ├── apple-touch-icon-144x144.png │ ├── apple-touch-icon-152x152.png │ ├── apple-touch-icon-180x180.png │ ├── apple-touch-icon-57x57.png │ ├── apple-touch-icon-60x60.png │ ├── apple-touch-icon-72x72.png │ ├── apple-touch-icon-76x76.png │ ├── apple-touch-icon.png │ ├── avatar-110x110.webp │ ├── avatar-300x300.webp │ ├── avatar.png │ ├── avatar.webp │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── icon-128x128.png │ ├── icon-144x144.png │ ├── icon-152x152.png │ ├── icon-192x192.png │ ├── icon-384x384.png │ ├── icon-512x512.png │ ├── icon-72x72.png │ ├── icon-96x96.png │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── safari-pinned-tab.svg │ └── splash_screen.gif ├── js ├── defocus.js ├── jQuery.rTabs.js ├── jquery-3.4.1.min.js ├── js.cookie.js ├── latency.js ├── orientation.js ├── sou.js ├── theme_auto.js └── theme_manual.js └── manifest.json /README.md: -------------------------------------------------------------------------------- 1 | # HTML+CSS+JS的极简起始页/静态页/导航页 2 | - 同时适配PC端,移动端 3 | - 参考以下项目并做修改优化 4 | - github:https://github.com/5iux/sou 5 | - github:https://github.com/yeetime/sou2 6 | - github:https://github.com/HolgerHuo/minimalist-search 7 | 8 | 9 | ## 与原版的改动 10 | 11 | - 精简代码 12 | - CSS: 去除无用CSS,精简合并,优化侧边栏动画 13 | - 文件结构更加整齐(重定位iconfont,css,js文件夹到static下) 14 | - 更新和风天气API 15 | - 大量优化 16 | 17 | ## 增加内容 18 | 19 | - 添加底部仿 V2EX 延迟检测(纯js,可以一定程度上检测延迟高低,但准确性无法保证) 20 | 21 | - 增加一言api 22 | 23 | - 增加今日诗词api 24 | 25 | - 增加深色模式(跟随系统) 26 | 27 | ## 计划 28 | 29 | - [ ] 显示预搜索结果 30 | - [ ] 搜索记录 31 | - [ ] 自定义背景 32 | - [ ] 必应背景 33 | - [ ] .............. 34 | 35 | 36 | ## 引用外链 37 | - 和风天气API https://www.qweather.com 38 | - 一言API https://v1.hitokoto.cn 39 | - 今日诗词API https://www.jinrishici.com 40 | - 百度统计 https://hm.baidu.com 41 | - 字体 https://fonts.googleapis.com 42 | - 图标引用阿里图标 https://www.iconfont.cn 43 | ------ 44 | 45 | ## 食用方法: 46 | - 下载源码直接部署网站即可 47 | - 注意:请注释掉index.html中百度统计代码或更换 48 | - 注意:请更改或注释掉底部ICP备案信息 49 | 50 | ## 项目预览 51 | image 52 | 53 | **本项目基于GPL-3.0协议** 54 | 55 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | 5.1.x | :white_check_mark: | 11 | | 5.0.x | :x: | 12 | | 4.0.x | :white_check_mark: | 13 | | < 4.0 | :x: | 14 | 15 | ## Reporting a Vulnerability 16 | 17 | Use this section to tell people how to report a vulnerability. 18 | 19 | Tell them where to go, how often they can expect to get an update on a 20 | reported vulnerability, what to expect if the vulnerability is accepted or 21 | declined, etc. 22 | -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | Disallow: /static/ 5 | Disallow: /static/js 6 | Disallow: /static/css 7 | Disallow: /static/icon 8 | Disallow: /static/images -------------------------------------------------------------------------------- /service-worker.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var precacheConfig = [ 4 | ["static/css/sou_night.css"], 5 | ["static/css/sou.css"], 6 | ["static/css/font_1230786_swt4kkie8ym/iconfont.js"], 7 | ["static/css/font_1614281/iconfont.css"], 8 | ["static/css/font_1230786_swt4kkie8ym/iconfont.css"], 9 | ["static/js/theme_auto.js"], 10 | ["static/js/theme_manual.js"], 11 | ["static/js/js.cookie.js"], 12 | ["static/js/jQuery.rTabs.js"], 13 | ["static/js/latency.js"], 14 | ["static/js/defocus.js"], 15 | ["static/js/jquery-3.4.1.min.js"], 16 | ["./static/images/avatar-300x300.webp"], 17 | ["./static/images/avatar_night.png"], 18 | ["./static/images/server/apple-touch-icon.png"] 19 | ]; 20 | var cacheName = 'sw-precache-v3--' + (self.registration ? self.registration.scope : ''); 21 | 22 | 23 | var ignoreUrlParametersMatching = [/^utm_/]; 24 | 25 | 26 | 27 | var addDirectoryIndex = function(originalUrl, index) { 28 | var url = new URL(originalUrl); 29 | if (url.pathname.slice(-1) === '/') { 30 | url.pathname += index; 31 | } 32 | return url.toString(); 33 | }; 34 | 35 | var cleanResponse = function(originalResponse) { 36 | // If this is not a redirected response, then we don't have to do anything. 37 | if (!originalResponse.redirected) { 38 | return Promise.resolve(originalResponse); 39 | } 40 | 41 | // Firefox 50 and below doesn't support the Response.body stream, so we may 42 | // need to read the entire body to memory as a Blob. 43 | var bodyPromise = 'body' in originalResponse ? 44 | Promise.resolve(originalResponse.body) : 45 | originalResponse.blob(); 46 | 47 | return bodyPromise.then(function(body) { 48 | // new Response() is happy when passed either a stream or a Blob. 49 | return new Response(body, { 50 | headers: originalResponse.headers, 51 | status: originalResponse.status, 52 | statusText: originalResponse.statusText 53 | }); 54 | }); 55 | }; 56 | 57 | var createCacheKey = function(originalUrl, paramName, paramValue, 58 | dontCacheBustUrlsMatching) { 59 | // Create a new URL object to avoid modifying originalUrl. 60 | var url = new URL(originalUrl); 61 | 62 | // If dontCacheBustUrlsMatching is not set, or if we don't have a match, 63 | // then add in the extra cache-busting URL parameter. 64 | if (!dontCacheBustUrlsMatching || 65 | !(url.pathname.match(dontCacheBustUrlsMatching))) { 66 | url.search += (url.search ? '&' : '') + 67 | encodeURIComponent(paramName) + '=' + encodeURIComponent(paramValue); 68 | } 69 | 70 | return url.toString(); 71 | }; 72 | 73 | var isPathWhitelisted = function(whitelist, absoluteUrlString) { 74 | // If the whitelist is empty, then consider all URLs to be whitelisted. 75 | if (whitelist.length === 0) { 76 | return true; 77 | } 78 | 79 | // Otherwise compare each path regex to the path of the URL passed in. 80 | var path = (new URL(absoluteUrlString)).pathname; 81 | return whitelist.some(function(whitelistedPathRegex) { 82 | return path.match(whitelistedPathRegex); 83 | }); 84 | }; 85 | 86 | var stripIgnoredUrlParameters = function(originalUrl, 87 | ignoreUrlParametersMatching) { 88 | var url = new URL(originalUrl); 89 | // Remove the hash; see https://github.com/GoogleChrome/sw-precache/issues/290 90 | url.hash = ''; 91 | 92 | url.search = url.search.slice(1) // Exclude initial '?' 93 | .split('&') // Split into an array of 'key=value' strings 94 | .map(function(kv) { 95 | return kv.split('='); // Split each 'key=value' string into a [key, value] array 96 | }) 97 | .filter(function(kv) { 98 | return ignoreUrlParametersMatching.every(function(ignoredRegex) { 99 | return !ignoredRegex.test(kv[0]); // Return true iff the key doesn't match any of the regexes. 100 | }); 101 | }) 102 | .map(function(kv) { 103 | return kv.join('='); // Join each [key, value] array into a 'key=value' string 104 | }) 105 | .join('&'); // Join the array of 'key=value' strings into a string with '&' in between each 106 | 107 | return url.toString(); 108 | }; 109 | 110 | 111 | var hashParamName = '_sw-precache'; 112 | var urlsToCacheKeys = new Map( 113 | precacheConfig.map(function(item) { 114 | var relativeUrl = item[0]; 115 | var hash = item[1]; 116 | var absoluteUrl = new URL(relativeUrl, self.location); 117 | var cacheKey = createCacheKey(absoluteUrl, hashParamName, hash, false); 118 | return [absoluteUrl.toString(), cacheKey]; 119 | }) 120 | ); 121 | 122 | function setOfCachedUrls(cache) { 123 | return cache.keys().then(function(requests) { 124 | return requests.map(function(request) { 125 | return request.url; 126 | }); 127 | }).then(function(urls) { 128 | return new Set(urls); 129 | }); 130 | } 131 | 132 | self.addEventListener('install', function(event) { 133 | event.waitUntil( 134 | caches.open(cacheName).then(function(cache) { 135 | return setOfCachedUrls(cache).then(function(cachedUrls) { 136 | return Promise.all( 137 | Array.from(urlsToCacheKeys.values()).map(function(cacheKey) { 138 | // If we don't have a key matching url in the cache already, add it. 139 | if (!cachedUrls.has(cacheKey)) { 140 | var request = new Request(cacheKey, {credentials: 'same-origin'}); 141 | return fetch(request).then(function(response) { 142 | // Bail out of installation unless we get back a 200 OK for 143 | // every request. 144 | if (!response.ok) { 145 | throw new Error('Request for ' + cacheKey + ' returned a ' + 146 | 'response with status ' + response.status); 147 | } 148 | 149 | return cleanResponse(response).then(function(responseToCache) { 150 | return cache.put(cacheKey, responseToCache); 151 | }); 152 | }); 153 | } 154 | }) 155 | ); 156 | }); 157 | }).then(function() { 158 | 159 | // Force the SW to transition from installing -> active state 160 | return self.skipWaiting(); 161 | 162 | }) 163 | ); 164 | }); 165 | 166 | self.addEventListener('activate', function(event) { 167 | var setOfExpectedUrls = new Set(urlsToCacheKeys.values()); 168 | 169 | event.waitUntil( 170 | caches.open(cacheName).then(function(cache) { 171 | return cache.keys().then(function(existingRequests) { 172 | return Promise.all( 173 | existingRequests.map(function(existingRequest) { 174 | if (!setOfExpectedUrls.has(existingRequest.url)) { 175 | return cache.delete(existingRequest); 176 | } 177 | }) 178 | ); 179 | }); 180 | }).then(function() { 181 | 182 | return self.clients.claim(); 183 | 184 | }) 185 | ); 186 | }); 187 | 188 | 189 | self.addEventListener('fetch', function(event) { 190 | if (event.request.method === 'GET') { 191 | // Should we call event.respondWith() inside this fetch event handler? 192 | // This needs to be determined synchronously, which will give other fetch 193 | // handlers a chance to handle the request if need be. 194 | var shouldRespond; 195 | 196 | // First, remove all the ignored parameters and hash fragment, and see if we 197 | // have that URL in our cache. If so, great! shouldRespond will be true. 198 | var url = stripIgnoredUrlParameters(event.request.url, ignoreUrlParametersMatching); 199 | shouldRespond = urlsToCacheKeys.has(url); 200 | 201 | // If shouldRespond is false, check again, this time with 'index.html' 202 | // (or whatever the directoryIndex option is set to) at the end. 203 | var directoryIndex = 'index.html'; 204 | if (!shouldRespond && directoryIndex) { 205 | url = addDirectoryIndex(url, directoryIndex); 206 | shouldRespond = urlsToCacheKeys.has(url); 207 | } 208 | 209 | // If shouldRespond is still false, check to see if this is a navigation 210 | // request, and if so, whether the URL matches navigateFallbackWhitelist. 211 | var navigateFallback = ''; 212 | if (!shouldRespond && 213 | navigateFallback && 214 | (event.request.mode === 'navigate') && 215 | isPathWhitelisted([], event.request.url)) { 216 | url = new URL(navigateFallback, self.location).toString(); 217 | shouldRespond = urlsToCacheKeys.has(url); 218 | } 219 | 220 | // If shouldRespond was set to true at any point, then call 221 | // event.respondWith(), using the appropriate cache key. 222 | if (shouldRespond) { 223 | event.respondWith( 224 | caches.open(cacheName).then(function(cache) { 225 | return cache.match(urlsToCacheKeys.get(url)).then(function(response) { 226 | if (response) { 227 | return response; 228 | } 229 | throw Error('The cached response that was expected is missing.'); 230 | }); 231 | }).catch(function(e) { 232 | // Fall back to just fetch()ing the request if some unexpected error 233 | // prevented the cached response from being valid. 234 | console.warn('Couldn\'t serve response for "%s" from cache: %O', event.request.url, e); 235 | return fetch(event.request); 236 | }) 237 | ); 238 | } 239 | } 240 | }); 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | -------------------------------------------------------------------------------- /static/css/avatar-300x300.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/css/avatar-300x300.webp -------------------------------------------------------------------------------- /static/css/avatar_night.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/css/avatar_night.png -------------------------------------------------------------------------------- /static/css/font_1230786_swt4kkie8ym/demo.css: -------------------------------------------------------------------------------- 1 | /* Logo 字体 */ 2 | @font-face { 3 | font-family: "iconfont logo"; 4 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); 5 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), 6 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), 7 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), 8 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); 9 | } 10 | 11 | .logo { 12 | font-family: "iconfont logo"; 13 | font-size: 160px; 14 | font-style: normal; 15 | -webkit-font-smoothing: antialiased; 16 | -moz-osx-font-smoothing: grayscale; 17 | } 18 | 19 | /* tabs */ 20 | .nav-tabs { 21 | position: relative; 22 | } 23 | 24 | .nav-tabs .nav-more { 25 | position: absolute; 26 | right: 0; 27 | bottom: 0; 28 | height: 42px; 29 | line-height: 42px; 30 | color: #666; 31 | } 32 | 33 | #tabs { 34 | border-bottom: 1px solid #eee; 35 | } 36 | 37 | #tabs li { 38 | cursor: pointer; 39 | width: 100px; 40 | height: 40px; 41 | line-height: 40px; 42 | text-align: center; 43 | font-size: 16px; 44 | border-bottom: 2px solid transparent; 45 | position: relative; 46 | z-index: 1; 47 | margin-bottom: -1px; 48 | color: #666; 49 | } 50 | 51 | 52 | #tabs .active { 53 | border-bottom-color: #f00; 54 | color: #222; 55 | } 56 | 57 | .tab-container .content { 58 | display: none; 59 | } 60 | 61 | /* 页面布局 */ 62 | .main { 63 | padding: 30px 100px; 64 | width: 960px; 65 | margin: 0 auto; 66 | } 67 | 68 | .main .logo { 69 | color: #333; 70 | text-align: left; 71 | margin-bottom: 30px; 72 | line-height: 1; 73 | height: 110px; 74 | margin-top: -50px; 75 | overflow: hidden; 76 | *zoom: 1; 77 | } 78 | 79 | .main .logo a { 80 | font-size: 160px; 81 | color: #333; 82 | } 83 | 84 | .helps { 85 | margin-top: 40px; 86 | } 87 | 88 | .helps pre { 89 | padding: 20px; 90 | margin: 10px 0; 91 | border: solid 1px #e7e1cd; 92 | background-color: #fffdef; 93 | overflow: auto; 94 | } 95 | 96 | .icon_lists { 97 | width: 100% !important; 98 | overflow: hidden; 99 | *zoom: 1; 100 | } 101 | 102 | .icon_lists li { 103 | width: 100px; 104 | margin-bottom: 10px; 105 | margin-right: 20px; 106 | text-align: center; 107 | list-style: none !important; 108 | cursor: default; 109 | } 110 | 111 | .icon_lists li .code-name { 112 | line-height: 1.2; 113 | } 114 | 115 | .icon_lists .icon { 116 | display: block; 117 | height: 100px; 118 | line-height: 100px; 119 | font-size: 42px; 120 | margin: 10px auto; 121 | color: #333; 122 | -webkit-transition: font-size 0.25s linear, width 0.25s linear; 123 | -moz-transition: font-size 0.25s linear, width 0.25s linear; 124 | transition: font-size 0.25s linear, width 0.25s linear; 125 | } 126 | 127 | .icon_lists .icon:hover { 128 | font-size: 100px; 129 | } 130 | 131 | .icon_lists .svg-icon { 132 | /* 通过设置 font-size 来改变图标大小 */ 133 | width: 1em; 134 | /* 图标和文字相邻时,垂直对齐 */ 135 | vertical-align: -0.15em; 136 | /* 通过设置 color 来改变 SVG 的颜色/fill */ 137 | fill: currentColor; 138 | /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 139 | normalize.css 中也包含这行 */ 140 | overflow: hidden; 141 | } 142 | 143 | .icon_lists li .name, 144 | .icon_lists li .code-name { 145 | color: #666; 146 | } 147 | 148 | /* markdown 样式 */ 149 | .markdown { 150 | color: #666; 151 | font-size: 14px; 152 | line-height: 1.8; 153 | } 154 | 155 | .highlight { 156 | line-height: 1.5; 157 | } 158 | 159 | .markdown img { 160 | vertical-align: middle; 161 | max-width: 100%; 162 | } 163 | 164 | .markdown h1 { 165 | color: #404040; 166 | font-weight: 500; 167 | line-height: 40px; 168 | margin-bottom: 24px; 169 | } 170 | 171 | .markdown h2, 172 | .markdown h3, 173 | .markdown h4, 174 | .markdown h5, 175 | .markdown h6 { 176 | color: #404040; 177 | margin: 1.6em 0 0.6em 0; 178 | font-weight: 500; 179 | clear: both; 180 | } 181 | 182 | .markdown h1 { 183 | font-size: 28px; 184 | } 185 | 186 | .markdown h2 { 187 | font-size: 22px; 188 | } 189 | 190 | .markdown h3 { 191 | font-size: 16px; 192 | } 193 | 194 | .markdown h4 { 195 | font-size: 14px; 196 | } 197 | 198 | .markdown h5 { 199 | font-size: 12px; 200 | } 201 | 202 | .markdown h6 { 203 | font-size: 12px; 204 | } 205 | 206 | .markdown hr { 207 | height: 1px; 208 | border: 0; 209 | background: #e9e9e9; 210 | margin: 16px 0; 211 | clear: both; 212 | } 213 | 214 | .markdown p { 215 | margin: 1em 0; 216 | } 217 | 218 | .markdown>p, 219 | .markdown>blockquote, 220 | .markdown>.highlight, 221 | .markdown>ol, 222 | .markdown>ul { 223 | width: 80%; 224 | } 225 | 226 | .markdown ul>li { 227 | list-style: circle; 228 | } 229 | 230 | .markdown>ul li, 231 | .markdown blockquote ul>li { 232 | margin-left: 20px; 233 | padding-left: 4px; 234 | } 235 | 236 | .markdown>ul li p, 237 | .markdown>ol li p { 238 | margin: 0.6em 0; 239 | } 240 | 241 | .markdown ol>li { 242 | list-style: decimal; 243 | } 244 | 245 | .markdown>ol li, 246 | .markdown blockquote ol>li { 247 | margin-left: 20px; 248 | padding-left: 4px; 249 | } 250 | 251 | .markdown code { 252 | margin: 0 3px; 253 | padding: 0 5px; 254 | background: #eee; 255 | border-radius: 3px; 256 | } 257 | 258 | .markdown strong, 259 | .markdown b { 260 | font-weight: 600; 261 | } 262 | 263 | .markdown>table { 264 | border-collapse: collapse; 265 | border-spacing: 0px; 266 | empty-cells: show; 267 | border: 1px solid #e9e9e9; 268 | width: 95%; 269 | margin-bottom: 24px; 270 | } 271 | 272 | .markdown>table th { 273 | white-space: nowrap; 274 | color: #333; 275 | font-weight: 600; 276 | } 277 | 278 | .markdown>table th, 279 | .markdown>table td { 280 | border: 1px solid #e9e9e9; 281 | padding: 8px 16px; 282 | text-align: left; 283 | } 284 | 285 | .markdown>table th { 286 | background: #F7F7F7; 287 | } 288 | 289 | .markdown blockquote { 290 | font-size: 90%; 291 | color: #999; 292 | border-left: 4px solid #e9e9e9; 293 | padding-left: 0.8em; 294 | margin: 1em 0; 295 | } 296 | 297 | .markdown blockquote p { 298 | margin: 0; 299 | } 300 | 301 | .markdown .anchor { 302 | opacity: 0; 303 | transition: opacity 0.3s ease; 304 | margin-left: 8px; 305 | } 306 | 307 | .markdown .waiting { 308 | color: #ccc; 309 | } 310 | 311 | .markdown h1:hover .anchor, 312 | .markdown h2:hover .anchor, 313 | .markdown h3:hover .anchor, 314 | .markdown h4:hover .anchor, 315 | .markdown h5:hover .anchor, 316 | .markdown h6:hover .anchor { 317 | opacity: 1; 318 | display: inline-block; 319 | } 320 | 321 | .markdown>br, 322 | .markdown>p>br { 323 | clear: both; 324 | } 325 | 326 | 327 | .hljs { 328 | display: block; 329 | background: white; 330 | padding: 0.5em; 331 | color: #333333; 332 | overflow-x: auto; 333 | } 334 | 335 | .hljs-comment, 336 | .hljs-meta { 337 | color: #969896; 338 | } 339 | 340 | .hljs-string, 341 | .hljs-variable, 342 | .hljs-template-variable, 343 | .hljs-strong, 344 | .hljs-emphasis, 345 | .hljs-quote { 346 | color: #df5000; 347 | } 348 | 349 | .hljs-keyword, 350 | .hljs-selector-tag, 351 | .hljs-type { 352 | color: #a71d5d; 353 | } 354 | 355 | .hljs-literal, 356 | .hljs-symbol, 357 | .hljs-bullet, 358 | .hljs-attribute { 359 | color: #0086b3; 360 | } 361 | 362 | .hljs-section, 363 | .hljs-name { 364 | color: #63a35c; 365 | } 366 | 367 | .hljs-tag { 368 | color: #333333; 369 | } 370 | 371 | .hljs-title, 372 | .hljs-attr, 373 | .hljs-selector-id, 374 | .hljs-selector-class, 375 | .hljs-selector-attr, 376 | .hljs-selector-pseudo { 377 | color: #795da3; 378 | } 379 | 380 | .hljs-addition { 381 | color: #55a532; 382 | background-color: #eaffea; 383 | } 384 | 385 | .hljs-deletion { 386 | color: #bd2c00; 387 | background-color: #ffecec; 388 | } 389 | 390 | .hljs-link { 391 | text-decoration: underline; 392 | } 393 | 394 | /* 代码高亮 */ 395 | /* PrismJS 1.15.0 396 | https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ 397 | /** 398 | * prism.js default theme for JavaScript, CSS and HTML 399 | * Based on dabblet (http://dabblet.com) 400 | * @author Lea Verou 401 | */ 402 | code[class*="language-"], 403 | pre[class*="language-"] { 404 | color: black; 405 | background: none; 406 | text-shadow: 0 1px white; 407 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 408 | text-align: left; 409 | white-space: pre; 410 | word-spacing: normal; 411 | word-break: normal; 412 | word-wrap: normal; 413 | line-height: 1.5; 414 | 415 | -moz-tab-size: 4; 416 | -o-tab-size: 4; 417 | tab-size: 4; 418 | 419 | -webkit-hyphens: none; 420 | -moz-hyphens: none; 421 | -ms-hyphens: none; 422 | hyphens: none; 423 | } 424 | 425 | pre[class*="language-"]::-moz-selection, 426 | pre[class*="language-"] ::-moz-selection, 427 | code[class*="language-"]::-moz-selection, 428 | code[class*="language-"] ::-moz-selection { 429 | text-shadow: none; 430 | background: #b3d4fc; 431 | } 432 | 433 | pre[class*="language-"]::selection, 434 | pre[class*="language-"] ::selection, 435 | code[class*="language-"]::selection, 436 | code[class*="language-"] ::selection { 437 | text-shadow: none; 438 | background: #b3d4fc; 439 | } 440 | 441 | @media print { 442 | 443 | code[class*="language-"], 444 | pre[class*="language-"] { 445 | text-shadow: none; 446 | } 447 | } 448 | 449 | /* Code blocks */ 450 | pre[class*="language-"] { 451 | padding: 1em; 452 | margin: .5em 0; 453 | overflow: auto; 454 | } 455 | 456 | :not(pre)>code[class*="language-"], 457 | pre[class*="language-"] { 458 | background: #f5f2f0; 459 | } 460 | 461 | /* Inline code */ 462 | :not(pre)>code[class*="language-"] { 463 | padding: .1em; 464 | border-radius: .3em; 465 | white-space: normal; 466 | } 467 | 468 | .token.comment, 469 | .token.prolog, 470 | .token.doctype, 471 | .token.cdata { 472 | color: slategray; 473 | } 474 | 475 | .token.punctuation { 476 | color: #999; 477 | } 478 | 479 | .namespace { 480 | opacity: .7; 481 | } 482 | 483 | .token.property, 484 | .token.tag, 485 | .token.boolean, 486 | .token.number, 487 | .token.constant, 488 | .token.symbol, 489 | .token.deleted { 490 | color: #905; 491 | } 492 | 493 | .token.selector, 494 | .token.attr-name, 495 | .token.string, 496 | .token.char, 497 | .token.builtin, 498 | .token.inserted { 499 | color: #690; 500 | } 501 | 502 | .token.operator, 503 | .token.entity, 504 | .token.url, 505 | .language-css .token.string, 506 | .style .token.string { 507 | color: #9a6e3a; 508 | background: hsla(0, 0%, 100%, .5); 509 | } 510 | 511 | .token.atrule, 512 | .token.attr-value, 513 | .token.keyword { 514 | color: #07a; 515 | } 516 | 517 | .token.function, 518 | .token.class-name { 519 | color: #DD4A68; 520 | } 521 | 522 | .token.regex, 523 | .token.important, 524 | .token.variable { 525 | color: #e90; 526 | } 527 | 528 | .token.important, 529 | .token.bold { 530 | font-weight: bold; 531 | } 532 | 533 | .token.italic { 534 | font-style: italic; 535 | } 536 | 537 | .token.entity { 538 | cursor: help; 539 | } 540 | -------------------------------------------------------------------------------- /static/css/font_1230786_swt4kkie8ym/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: "iconfont"; 2 | src: url('iconfont.eot?t=1561962427119'); /* IE9 */ 3 | src: url('iconfont.eot?t=1561962427119#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAFD4AAsAAAAAiUwAAFCkAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCPHAqB8CiBtS4BNgIkA4JQC4EqAAQgBYRtB4ZGG15qB8a429jtAJCKkreOoiSquuz//5QENYYMUO/FJttWlYGJabj0S8HL4Q7btufesqTI8qWTbUqmlse4QPdt14OXoxFHnHWcfdJm92uq9+NEa9GIf3/C7DWb0pFACDEzSKNPDV3I1fxGMhTIFMEwq6F+4X/Ed7Aa1tJgQyl5CNY9/2d37n2W+2uSK/Wh/J0U4UQnzbLlv3BAFgFy3Nu/cw4jK2xdnaiQU4tST3/izdsEAhgpSkELijX/ATBAc+tqGQzGiCVIiEtoWQIjN2CkwEgDkEEbyAglLFIF9AXrEXwFLIxX7DcffcX+B3yj8VM/5H91mrNKr5vshOUwySkA///VA0QX13habroOywFBmiOfT6arkkz37K5kw3QVDBtTkK0Okwh7bMx87K/0TcbQ9ATANL2bCRNScLg2P0eH3wMEAH/zNL4fBJSrHKyXuAx7+v/nNF8+3cnbB7aHCoaBljPJfAB2kgLQ/ysgayttLwgSFhgCBccJlzLEgvN3lAAG9P73Ot+kVm/SnXuPIGGB7Z9FrLdDQwhAau1WYNhlmxcQ7L81fbFXIVkT8O5tZYWskL3KRPiCI6NJ0sz8IOxP00/S+oj7+4fZw9LrfHs7/3MXRoAcLLmA6jgzdIMdX1ZoR8D860xXKegrB3BCvxANC20tT2sn/e/rnb4UJ5Z9JPteY/lQDunbActuCkQT8EZTN33pLs+yL3mSL2C5ZLnkpAA4AS0r0Na1y5ZtLOAIy9ZlWcsYcLxPGICtq78e14TPTjs0aQHnQ3WQbUWoF2Xe9GDC0MGKHr0RH7l9Ck4dO/RTTJvxNgG1RFuuMDdat7pWArWgkHhjWIGWA6LPSr3iUjcqT+9GXATvfvFjQ4paXCmF7Q4tWvFKFUz6BvhdWM+h/WJ9f3oiNn05wemHChePkG3lnVxW9RPk9Y/jKndgk0mqTn0DfFN98bz44HPlwYuEnLcAQTR09KLEMIqXxizXYkUq1WjUbJNWvY466aw3L969RF4+L9/5e72insa693Lu1Xc127nZNy/fjvxkKqYAGMl2cVt06F41Y9744WzFiE27ucsqti8surS3hF3jf5VnENGl3rjTs98iIt0/FRvHXzHO/Z95+5OYpd6/sSiNH+fv1vZu7PPap3Wt3oa4pgw4KCgNbA1X15MGLTLaPgvjWtz7Z7UaLxXVNfbixfe0ZFpQ+eqaSOaGeSC2vfofEDhsIIIwTBGBOqKggVi4A8TBKyABOkiEN0ASvAOS4QOQAmtIhU9AGhwiHTaQAcfIhC9AG/gGZMEIbaGPdvADyIYVtId95MAEHSCGjsunO5lwhFz4BeTBHyAfEugKFfSAR0Av2ERJqDKooRz20BtuAAOgi0GQRw0MUAdpDIMZ6qGKEXALGAlPgFGwjDGQQiNsYTwcYBoU0AxRzIVtXAwtLIIhVsIq1sA6NkISm2EHN8ECWyGDvdDDo/AMeBLmeBbi+Aaa+A7ugYDAGQEHWQIb2gQ+jAlesERYAUVCD+QIY3BOuAcXhCATs/huLkbx3UGM5rubaMh99xum8cMbGM+PL6IRv40J/M4wZJgIlp3yPFLZjh6vNODBtqFcB0KqmgK0aY+GA++1BnWABhFZEwPWIKAVeZsGOtbeRmJN9ECE2BDBewfShZF4uOkPtAd7iOSX7ExHqb0BoyN94BmiOzQ1f2YxLlXlUOMU9re95Rdbc9ulWjpNu9LYSO/d31FKlkH0eR1iTEb3t2kYZniYyilL5gDJ/N4X4xk6oYnXZ+7Za9klp5rYrMOjWqX4/Xb6dAnWiAaVd6jYjk8xXwU4H2GBNJ0BOFt611EPrZdvz1xa6Bic2mnTbR4j0TXCsCmbGXNRPRJsWs53ah5V9Ni2MLVa1zueHI4xJKFMbWzVfqRx70a9HdK71ykpAd2wrkni3YdOH9sewoR7GKmz2tm2r+4aiQILiVh6orVqrqKZxQTYbtd9O8ZtpnjQNl+n2ZtWV6dvz3ZtX65We+wS4iA86LmDInPTPZJ0v1LneLYBsSPDnUk3m8V6qmubRJM5s0hGkDKKijAVIs7aMUFiJvzHCCdL6nAVE23n1CydqEtITz9qlu8X9xxqOY5jJW+38iFtGJSuzZVTvrVdqRPFPZfGmnmUQjkrYO4s1S85YmTBdc2QlkK0ABDbtFQAZn1CWEZODCVDLUyASt/UFzcXC/y6MeXeYll2xzft3eR2DmZtI5eZQ9S5XLjofwR0b3BaqXvbNgK5UiJKTcfECA8DwRm4uxOBbbPiDqEOpZB1QUin+8ZAbOJ7C8M1tWWZD0a+Q3Xw1jJ2HNV36lE14n0BGqcNndRPs7Vs1VukHxh2kH3f+zb9wXgcnB5c6X6/+LPLlx85T2YsuhV/5YdQuAXFlumVIkk+L6fu9odvWu6tJHyg3vzH3+9k3XTRW2XL4+0vI1K1RQYnt9I63RmGnc8D/oJVOKZheAy23/FiL7flFiciYIHh7pou1unKbjK5npee5XYZsVdx51Q771Oj+FabsqG2P2ns+bGyYXf3PdnB3+cEOEyp2Kb9YcbmerLz7Oz2rOSnylueQS6bnyU6iTieFdBP5Y8yP7LyyZMKUM+YEGdMA4O6C2RYGQQtAM5cL4Iz3y+a+EXWtYwM2MTOeH2DoAaIS8sJgnh0e/fnXHffcl0AF7qlDZVve5/tpvYyBG9gg83ZpHXUknBLPmXCrYXHOMAw0SmlGtHu1EyVUwIh/o0FuKW4ksiSKUSYimt+XVwVXoTXKHUl/l+nBUv9B6KsGzUhzmGXbSeS/88DDBIZ7Vv7mW2uU2x7S0VR5U0vw5OZg9SMf1KxnEUFMZSrG4iLSVrQSTt6/4hBLimb27i1cLqrViuNtL5oJ2mrFMFwP65LcT2oE0p4GUGE8Y0QaaW5uCvtEDC51Quqzx/ckYqhHyzdiS8rjMy7MmLTqVQ1ykE+DYXmkQeJ2bo4fFAyXY1+tkrCXjoPqaCyqooiR4Uzi4WEgLSQlEKimR+nIg+u5fZMUUvK8J8FuK/OxMgkgKkI1ldR28QuqwIG8CGAIDhs9uxgG19FMfkEr/kc++Ag3YPo+2x50FN0jpp25fa9qVkfnMI5e5hO/PGrk+a3RToTe5KoAlDm5juuoRXMFpf48P2bobEIhjOZIPY6s0BYTMcTjVnXP7f9W+TPb287F07xbDZc12AcRRD3muA1MAHe7zknl3ZcYXWUIY6BpnGpgmF2uLd+avF6Oze5KafbNw5BatSMjZmqbThfG+VMfY/9fNWu7bWO3FnTTpFiFtTBpj/cST8kdz7efoauZ/XC5HKD22jQUap1tPoSH+y1XnSIvdtpayeTbXeX2UHqlEu1aqleX1eqbCCmbc0SJ4ceDJtSc94i34/Tlui6QlyeOsyZaWi2wla3Qq72K7DW1peXHtHMAkiZiorNI1pLvkaL2qkzO3APLY39PoQsMAxsUQhhyZ2ix6fcLQifeat/pJ0IdELY3TCT4nczNxinnX4GWh9dIOp+L091tmr9xSdekSh5EJ1mbxT7lVHmhFeLK3NPKrPXVGTr6QgYHknD1/HOzQB+RZeP7o2Oto4K0R+XKryazUZkaRdlDn81ioPWSyf+e795Nd3tybpa9dY60sm6zwuHV1nZzc9LwVfp4m5RfbJdJCXEKUwI93Aw5w8uMAFWI8S2TLINIiOGmzx7tfMhiabbe+eDsDOMVaCD7UTrSUHe/aqviROAAuqw8cpof30M9CM3PB4c0f60b7nH7gtKnDa0FQlSKy9POLlZ1MxwI+kO2tIhLWi2dYyhqcIjwZLfLqT2NRiFnUNnCV0hr0CU2AmRB8CYgwfFdFFK2RnALZbag44WkRqrEuUHEK+23vrIJxLTU526FxQZPsg7fuxcxQUFqQVEBBcJcac3F3gDHt0Le577ovAGBYOaitvS6yPvzn755f9hXVLxAJFBqPQ4lG4o4nLYIhemA1Uj+Cuu77VWEpGeK0K02LGgI3oxMb4XoMXqAorCaCebMTrkUQn8uOWi8Aqg5Sk9wQCi0qiGUNDl5s5xj1puSVr5afPQT8TYfHsScwRpbT9Hw6scH/1PZtp3WlhWw42cRDHc0EGdrgtd0DuNW7ZflcBjg/kgyAT9OItEn8CGFo/SMUxFNvSi2EtzJ8vI3pAb3Y5uLC/ddYixeLuROrsrMxuFKle2T3CURqPb4iWoBWJKl3UQ0nlTNcdjnXqn4hrutFfSWktpABfGqtQ8L3OdSdZ1Gihv4MM7oywqNeYqqG358ZHd8bimZ+Z47OXhGGhs6e4fmckM4Y4rS3iMjQfbVUrVPBMx2agunh2djf1hTr82mbDRiYySptKgA9IB9x9VS/cruot8ReYbRuuYQIM5x07QDsU4iCE0PD7j0bpWy3ADwxn9oYhB6IXEQIB4xkWBKJBOsG50IImaaQ56i129X2FevzsHaPQubEonjiixtZg+TPCBQ+M5HjSXehw7wroukOc4YdDfVS6cIkoZt3mAdS3gIgdAeK2+TZt9J3ttsCMUIIAZPDdMI+05WK32atg3vsBQa6BM07HC3R29vgIUnh/yO0Fgx0/H9KueydgscsJim3pubZfsdRnvEVm8cHYWfpX3DfqkKq/8uURb5Ykty0Zkrjk7Zy3MmvML1hxhwtElT1GpIUHBjInacYa3Iu5+RDrdmBMCz1ca7tIWGQXvqcRtE1iE3bJxcs2LMI4ilvu8gvPsr+FWTDe7inl2xyDmN4HgWEiw5tpHPH2CP8ys13wbOwv5X9FQMSLAX0VMKXWpKIuwcg4YE7vl1HTzTBr0kSIr9ec/Mn5OKAvtp9eEGvT9XTxdodTmT9o0bM75ahSOr0UEwFHE1JBnvbszGyyuqmVmcOARwOL+E3w3aC4f5TFNIlIsAufUbeFDKk0x4s7MlOmAIDaLcz1sXQl8ihss//Vvz37/9/jz7y5+/DmqZwnX4IZLtR8F+JcyO9IEBFsxQOpXEz+rg8mgbBATbhIdNZynYneMvWvrJlOOslY9sZ8DxrIDIv6qFfTUGtoDwijvrcVHHx2FVfZSiI33P6TF4qBw8iDyew9iv9PK1AUZavjXmeLgahZrXdzb+YV9Xc2RPkvESP8thvcWs/RTtVJw/jU5i37YUG/IP+lAP2WsSc4Cdfuq/EVFBazpRLYXxZVPfSKEzU7au5Trp2XpoipC3ZFe7R95VIseq2en8WDE6WCDTbkoMwwFr1kntZoC0uK8RF9D6Jb2NFKUVfyidpOpm1vAxXWcCZUrCUDiAfFSW9ubOwgKQVwyUHtVdPfTHy5by8Az/L3Q7B34mSPQo30+CKzXQ4bbM5YKfBHnO5fCZN2dEEOUHTBehQGC6CBDgKENTD5GFNvoQXQddtACqpEyjHkdS4aL4J/cX0q0Yle+onYddUIhTjI4GAGtTc1amFuQGe4n39DZi6243/uZU/LBzsZ+hAG0AoICws+CTLZCNYGcSO87CkRaes4lOs4oq3pFmpvzVfp5i5B0MGmTEnuruIVRcwymPuCKPADyLx5iJlNQgszJXpPxgpkp4q4sFaQE+/67omzQn7MqtY3NmT8ni2RmS35CCVIAAbEhSq3DOHiJjbTcW3vr7aCmCz3JojFE1d+6jSKgEu5gIKXuRXRaTsHODRZr43vMNYvdvRpe0EttxQxRYopZ/9rFHUsP/XW1d3lx+++XKt3NteZc3Bu6+1xFs5GI218UdlnaHrdwFtne9t0X7i6NP9RCxT3h/hH1UayAJfMi6d2Ze7KxIV7nnRDkqJHDUtu9PftETIjgtg+eTOrdKmisYnTnW4HKxDWvoSefbUqT20yp9L+BtVZbceofL3dq1f4YYqOOtvTDxrWh6Mgz5ecc90ASWdC8GlYVINXNSy0JbvBZ8ZErZ5k4NUrl6tIkRIQd4x1Ji1vd1vliYq6Qmt6Sz30xOK7azOjvpHzBVreX+Rl9BGoV7IS9Ye3FlaucfwvvhpZo3WoJk/1aqRdhd88YE0L0F+qFXplvrr3Qv8TYt+trttzrccHzeTDyQFhRwwAFztMpfywd1orF3aPVmnLVobZDnEqVQNsGJ2mJ2htrFFB87sNSfWa0v2FVa+/x1aODjZcsfXYQGYtH/Xq/TgCnk2+cTVW2Pv7vt5MITWE+vfeJ/6aWjy121rdOnotQBvOICdG6L/KTKvS0xVarnP/7mxEp7xjfTMOa6oSno726XxVoCoFuCzuYBq1vmEha6vEHoX4zyEIVQsApj1Zx5cijuxPpTFdKEKpgsQ2EL/rjREpQ14O8ZWNi1JoUsrkcpHFQ+zOHyAmhfJEeHSkhbMA+wmU9iSy8xZdfr0YMTqumulmJfNR4AuXu70bnQryzXXJNH/rrhLZUqcHpJ2Ml/uIcrElMeroI7XKY4Jdb1hW3WnR1IqpnO3uukQQuV4ePExzscbsOgj2pH7X29bAx69sZb2ByvGetNft9zhpMuVaP3mEsiNpVUZexI/cV6sHFp++tQQtgOSxIJgI4Mge4BIGlE4hOtoKNNqBkAyJQ651NKDGJbf26+hK8auYr2Fj6wv9vukEtUINms+Qt+ZUypdV2q52TfkUW/k7TcnctvhjuWY1MH7Yw3p7pmOgdPHkxLG8zzN2s+GhKXCqXZk97/SNEkD4WpI6NOF5vfVIIpBTUGkv5eVe0fENhao9vSg+tldlyZxq385xGJWk3TH1Nks3Q0o4zYAtUXqZOuPMxhmlXSsXLobbzPZM6WM04KTy2ZbQYyGK2C3c5HSBzMk8QYy3NE1vWWWR+GTuO8vmRLnNp03LtvDuyRPcW7pS798+b7uenx8nH/7/n/GuZjYa/4hn5LPlZ8gashErr3ZaVtUKIQuHIabsV2bBWdXpz/F47h63MxppZoTYxxu1BM/OAYVA7hviguxvIvFdOjeO9Pzm6F+zEScRS2JZG5+Iacj3IK4kOKdVP+4RcvP7/tZvUQeuqwGxEjBt6YSm/vHTz78uIEIO8o55KpP/I/v7vj3AIXqbRwt+y2P4pzR6fbt857AL0qtTxFTVMU3nDtSRC9CTOofLt5me9H73WSaB1eNH7SMvy5KpfovW9Mwirrp1ojYbzquhwUqcTqAkAEBEtL0qRRVSFwuZsmuti0ci67RlSf0VHYEf3fnM2j5P8KWjK9EHJTBQ33K5jyibY8FmLq6k48/rTMYij4nmHnMJaLwCbEAY9Ofbz+M7evzcL1UidqnH2Jz3CkXHRoF4/39gWVrNTvuNdYd3+YDGZrWyvv/sJfVslyIqrQuake4lRWZVsYVjk2CieRIq4oHlSYFbA0doXpmrWhfOmsiREAxDx6zsGbqDWmhxixJpGVMVLSq3HLLGQddI9zNR3KpjJt9I9wyx+LT188fMZgawBnxFEENszzn8R5PRaTHNnkVT50YHsxPN1lTvYqBYKmlvyikjhgKxjAFmg1kEtggXcbFAX56xFw021XyY9exbjfJLIFuyiwMr299f73agOBsmHz8EIqeGhGud04uGIurjzYu8TfvzlZlLMG69UQoDbv2aPsnsRIJbLsFVD5lpMTO8rlhLHL8zwnjfld53VrO9PNwd7oU0BzyDiIONriACyaX0sumqq0Yus6u+g/envn9v8R4CxFQ9gggwcDoLpoH97dUdJrZrWzPDP7Es8h1rfNtmoH9K/ZBo82UWXtFafGE2EfEgz6cg9UPLE0Vg+nYn8ykkBJed1OL7P9HLAGSfBxvbxoHFLNPMGDMb6RWhHZMW1nd4hY1UhLp/BJA1hzxUA3fYhTIh+y1+p9bfKExULAWk6Ob1DzU8DXZaRFFDku9d4FFxdPbYtBBp//cRuEvfCOYStgVK8uFFg8/QgL2pNm/XhmOhTs+m2HmtRyV2VgH7lfrexfKrrwd+LxrglT8aBRyLF5x45SIHYUmLOdhkqgZggYIy6ma6hO5WN2095hAFcaWkNVRtdBUezGC43hQDhGmbBVFdawKP9e4Q9BxW8vOP1LdBKR9B1uC2ItO+oSRy1ygm0rCkmLOJZ9Fnobn+M7YZIIbBBmDbYvnOSp6TM5sAETQgwbuxfj1OYXYuw30yX4JYf4aMDTty7gSaLLcKiDHmcPuq7wb5pTqUGkQfI0pf2Vg3nB0QkaIsKLjXhZVGHo2k8ZhGaUxZqKLsgA0JTiAZAA8Iw2ce2Qo31PvyzOtkaFs0kLgUHJxB56oXd1UYqHJEObMstXYwfNB/Snybhj7BD3I9qfV7Z0rGViybB3UUg8NqkcbiDci1tsNZSCTcz8II1H+x05+m3Ubh+VIqT317GiTPNaTsf9d7tzsY4TAHlsb8JBkkydVvHpBtGTswuvqbW6cyv7XRgVzo1vlFQMUQI4R3cnk2nRknFavPZrGUEiGAOGJ6zU47uzkb27Ufx7++QQt8wUYWDQ97BX4+eL3l3W9OeiVgJemWLG0ZNOQATrlgEmFIvwSp9OtF1y3nMxn1SC0BfVsStiHlIDF2LtdZ7vARNaEF6dAcQ0PM910VcxM20lNi33UhtvSmNzBQhglzzRK7x/CfU7pq8BdJ83CRIsYeOYgYxl4ksNdwR5BPXtu9vn7iOLqV4hp7z1KQAh182xcky5UN33F/UOhjDXty3xK3HqyZWIr58atXMJZ/sw4iYCQdLjT35UFLAOHfc7US4udYerrix6XZ+4hhnY3MdpdAsEdTJ4JzMBpFggMQUu7WMgXJWk9NtjgnxchGKI8B6tEpbtxPNtMCFipC2Cl4CIuLbcODI4p2e3K0a06yPBImHdTscoOJ+noNQbUVvAehwLD7MxM26rX5sb5sdyQJLnF5JO2CX1EvP2gFR4p8P7ieNngi4wFN3JCAoJaWXyo4t5yIPN6M0TePTZrJxDIy5XN6pi654s+35M4wWzCqv7864AlSNrhDsrIAylxip/hYAIPg3h+3VhzzZAY19tQQ6iS1TYAdHKqU5aZbuhyXWjQZK3JBwnsXO85yQmYgSDkN6i1SwGWC69cLGKRBxX6nE76N0N4l68AGI8HT0WDTFWnSS2Sxf8ioGgB73E7FlYiLrbE8M6BxD3UAUlkY4OoogwrZrWvMdVQaqZ580gyQSIEG8gHiqhK1IEROEQb6yjibREwCQn90CxQOidDmjmj/2Z7eKQqxRQIZ8HJq8GRnwR9aee83dipDXVsw3WWOnVKIbjMNATqIXo2r8NLoIpsteU93EXXEPIvFRL/4WM6UgpaaEKMU4ctwgUsYzyZEzvJlMc8IJdpgMMpCgmUUiWqF7QvDPkfQGY0A4mAjKBmYmKLGYC9KTErg8bhrH6IW2wA5sX+MaYeoIUM34UgDQKmIQSerkOVZYtJkwF0FaYUxmfXolQ5xncQg9ADVwEXBokc9B7X5LVTphORrRsj3mNxeCAnFSkXUrrBGNhzhYWDL5Fa+vNYsx+AogBKiJaQInc5yGJ+MQh5iKL6TIpKaKd2JS/mnSQSPajrL+2u2LtuxUQAjoAtqhHRPLtNMWZaxOcphYiRkMAma6lUfBbfKMQbcDS4DuHG4faiq+UqDYJVJFvj485c8HpFhrNKoL93mr9f2BFKNOWqy/j6LghPxnxKNgED0aVWnSkUBQ/PTsMQrUog6tBQTKGnFU5ABPkMmRBV6i+s0TnhQQD8l7hEQQ0LYCDeYDt5JxFBFAupYfEKrxnZVcUf+tGVlr336JA2WJUG3+PzDRRoSyIbEDUIritgHueKis/EQQT5rEXC/kUjoJYYBAF+bKIwQsoHtBzRr2O0nkMdlRL0LJKBLBNFDAPEW45UJNJ8VIIyYEqJg+Eh0ZtVhzvbRFumUpRcSkT6YmsxThyCFb8KTfq8gcITOoYZR0WH/TJHrSkQY20rjXfRwTGZQBJjKSG6S5AqT8uWAn7Qho2orjg5Zae8TS6Ap4bcMkRVbCw8qg7kQqoaf+IMU6WElLYaVbh5BUfGtsmLb6towDn/r6SZ7oKnSQbdKsvUUv9x3IKngSccA+MRLWEsXC13pZG+V3BjhdtlwrlTIzOaNBzKkEFQuJybrPNdFiMgrJa57Z4JABVCqZ8fADL904wkgQ4MXC4YxMj1BSkVrxtQyNCLv7zT1R+bqhZnwZRd6Gef/JnBM8fNePLGZVxAWtWF+4TVZ6iAcc58sVlaWUUrxBoXJi2mDi1xPLc2PTFuHIl4c4y40Jp+nnl9IdYjg+FY/i+EKGhLk0JhiHWWwKJTasoCp5c0cvmiUK6KDYYQuEZYmRBzoUK5eiUyBKrDMC0Aq1nXwkCfJbEDuW0hw2z5Fo/9s/0xvZ5GbhTEMdLeaC5kanf01E/Mt6UWUyM2kJXNRJ/xVi/xO/iBOw43kfnx1sSpDdS60WOx2TmQL+RDQTCXCYyBaCFNGRDYqdZle99BN77uGWPQptQFCsROez4QViqzYYg2PTURAU0MD32zRY2rLEaFI5BkUBcME9loVXCRJgA8IiE2OTg3WVNBOGY0SHQeeXlMXkGkcynCyBtJEmXV/jnrtNULx61KfamxPhUAFUNTChZbYZQcZppRNq9pVZHLYJAKTn3xu9fc8AH/InUqCPsNZSAIII9nSUVVPcP3sUzh0wWGrEw7AOalC00RGxBaUYYckpEPYllDDNG7UIqVkGIUIsjkTXTqh52osIMC1bIBDZxJ0SQpOHT4sPhUL9I5op/XzaJBpWLMZfeB4Rfl+VChhQOmkwYNKKNoPkfJYjapYGYlUIgkF5Nmp90REOQtD7iHq8bhQ1gHSUFzS/VPQx9XGkVmRlDHPVtEkdnflhqkKn9ZPkddY4I7hTCRGv+f57vAUuGcKmroLT3HqdFHOnAuaSAE1SSQvBgRDTFZRBMrqAdoljJYEQkMxS6xy1HRk2mXehMxmgAhV/qRVcTKOAGLDLAGWrvT6BQ0NQIYUYkfp5hCsO6Miqf2hSSNy0jKaiKpirlbmFlYmbKiJT1Zi0rBpp9DolB8WTRJLLKFsuUtsQttb4qj/vUyMkjeh8GkUYaz4niO6MB680d6B9pRGx7Ey0jXGhrVhVaWMi2oziYYcjhlMovbQFhVBVcvW15h/hAc9imzVK3IIoIcVaGjCdnM8fzhK1UKZjWnEOSFUNldZistnERJRZIIADJcckqD1c7i229+8VM2Gj3xYRiK3kKngbcoqZHgesjQcJVN1RJhJJk2oZMb9grHdTrZU0TN1LmoyD/ng8HY7I+iUgWFwDwS2Y4khIbWTlMPbD5teJlOwDR0wPbmbReIdDSXZ7uhxdTMvwQsqOETZJxzTR42V3GBNfclAUvTy8lqNSSJtz8wmilCwdXU4DNLGq3oiHTl7qSFQmR+ZF7KhSJTAftA8z0UVgJkaEECZxBzvzcf3J5EQoBCetOASiOpCb4ODLpBbCAFjzSKQiN1Ssf4jRVSSMO9gGT4MAQ/afhHgI6I4A4WFXVZ2E4OnR6aqaszXDIN9Z+FhA5T/lA4LHQgrfraZZ2ay2BgPBKV+Hg5brFI3hAymkK6E7GW9JyyK9dIq/WsPqUWAu+Hvkv/+QZr+fwKx3UgjPlHvgx49hdO95/GgPImb5bO3He8YVJWsoixJtVxcFkiHzYX4Uo/gOoI8UzTOlEWhr+2qua5W0NO6tSwzKZOz8UfZJCv3eLS4tTau8XtPXBaYR5pmKztEAribsPAzNIINAekpPjM+d28VR5xFoGhmM+aCZgct2s5K5Xmdv2gESipgiAW6xPc8vYG+W/kzUj7tZqhCGqnijiMRDrd23/8gPrxnB22RF/+JtAzUHPSK5sbR4VyFTvYGhlFiv2/tmJAf72t5o1XzsZJwUnRINiQbjzX11t2jUKEtq+MjR2PPgNV28TWoW+hM21ONhRckLfiatGuDay32bHYr6T2w5xcbWxb3EooOj7kiCeczkCOkr5TMmYiQzjO0vP0uaYhIxmsiwkFLmLLlgDcmxP66N1a/+2z51zEdb/vKDtATi8Jhu9TNN797N+N0OKewa6F3oFgWcvzRDtavbvSO+Yn6v28LyO+Hc/bfhow6mqLlJXMWMz9iorcqyMrWxA6RSZqS/NsyZ7V0Bgf3vyRsk1rYswB/wDLRe/PnpNvNFayA4yn/K/24QwIWVZa4I2AU/eAA3u2sCs95RqFeRaeTx4h3s5t+skLLPrAGTk8FmNSxG87953Gw1xZqAf9RWKpv6z2UtaY4zR9Je/ocWAbsT4WBWFhheQVWrwbegWkXLpKlIvU1RU10qIKVysZ/2kFOAExielQX47D95gxoKBiuaO7NKqPnsOLQOqiWpCpwyGkYSAC60K/sSWscuhFhpjWWKZO4wTTJSnyOatKFsjhGBOTRQatLeuTKftL6ivJnIXzWpIFqXFVhtFKmubulDhMtFHkJDZ+EeOX+OAGQspoboXNyVwOQPStMqOCQRqPaBxpJR6xfDm3D22pZkTKgQ1mDD5k80TJD5cg4LMaHJLfZaHLxpw+Ik5HEwBGwgzPF75GdhaAh5yOUyoKzPZWcu6iG4Z+S/Vv8FoCEz4Cv4A4SSaS2zn51Ah+QzFRfMWjB5DbgETCu1ZICFcFVdEi8aTnR5OH8SqyjGrxk6vBdugg7tgmrBdW2HyyHL7A/OK9qEelwYK4Ywo6o5OwOTTeVStePw2ZW8eJxdvsArxT7DtWGzqzySlMllrL5lXo4qw3xIkWaIMhJNDJ/AIqgzFQqPH4XO3CKUBe4ygHowoqvIgnGwX8x0rk4ED9xR8codPPjejQWI8JzqsHC7unif4KQ6QZ8ztXrBv9MFwbnL7uGuYyCouJrd1frE5klrBJ6YEIq7SaCxKzWoUdWuO0SKjNLftmuyhOOpFC9SuLs5BJPH2QJAuGllayQZABDY+mdZWUF+0oX0stSaGiDwuiTZI7mmDTWFpknSPEwjs4eS9d3gQIDVlDf0WQZ3adrcaqfqedWc6t0quJ95UkKshrAwlBXVKwwX12/+9c1a+9WJiD7tZNB/lgVxLhnE+JfIiWAdnO5HTwq+rRaZ6HFxCcIC4/ldlfBvt+55ag/viKUsl15Ww239Vy0WzF8eq4m1ziAvTl46KFnY63w/m2pJAe60wi8+B/QoE3TvxXDOZMhRSM2xP9ResLsNjoJMrnQ/r16zd5bouL+nVvZHKAoEFAarqXzupqYpNwEy3hF9mWlQORcATBEPiimgPEBNzdScw7y7qnw/2sk9ci74c+K7byr2G92BABmlMb8xynD6TDlbUXDOw2TvKCd1k7RvIvMkci2pmSSHsvPsHbRE77PChQZs/+bWjm8Azapr2surFv3vsE4TGXnLcCrmXUSkKWQUBaVUVCZDSVBlJZgCJldW8S+EMzMYA/v37hsYlKRHdnxwvWkXBfxZs/Hcxnl/Pu1YMbvXevlQA+lZIoCrt1M9FRmDWX/lN31MwqSG2TGPS8ekxI2pqNAc+2x7fJmfLeUCJhkYXHHMhBuaAbg4/1KGmhmiwpXPo6tt1DKeyTBRSNcdVWeHILkMu0hW1L1/Rl7AohZFHIFA98ksY+wqD6/M7bipVq/S1S9pwbV88O5oVmeyUSzH4hn1CVO3Nmtm2inIZQ0LJsQTJc0vP1mrkltvfepwoIctDRPvYMQ6Mx3DM/WFXzjmMJuraLXu7wDai3hW8P8oVWF5XHHkk4Z2trb8PzXyx67fbRaH9v5nbJJ16wxHLzCiRMu2k7UI43aC76KvbiX4PfvEuYjbmBPVwN0DmqLKAjb7dmIcEyLhUCQeyqm6i2EC4nMdF+xzniW1La+5/lmiOLpApCP8tOXPlJOsS8sZybpy9puThQetvcvviaqZ3ir3SD06hIn71nNbIf4U0/o3ECg57RI/Vqwsbo12n33/5SkdYdcOi2XoPO3/6r7lFtG9qaF/+eZHkJLcmRwl/tL3mjhf1iHP+Of/39yzGV2IZbX1Qoq9KbCsE4fNL2/bE61Sej2S9LlrOpLZSQzzQdPnetWpkWJzagjh3HQoKhxSxaMwBJe+MhKfau/QqVSSD2rVi34abf1sz2JbiJWjrBB/xhaxecosnXwc5EhrjUVC4v9GEZkjte79CNo1eBPFBYo+alse8ttY5rmcYUswi+CgZy2yxWQ6pyoSwoQw1jX62VEJ4mabXbJqPpvpKip96UmScmbxNKthi1q77Mjsnhb8ahXmDQ0IQ+lR8SeGWggHNlHjbM9p2i8pqkuSY/dSNzOTEG769R0+WKLbeUExw5VJp4jPoWniHxE6fmSeT/mncheTG3rZNpOaG3bwwqblZUXFTFRMTeERgYcmFWX7NG3zGmw2byATnVB/ZFzZtF/cMlxaNproFY7OH3i33OrjkX1eFvfv1Vs5JLxVkpp0ntmY9YSVKF6F6YImWLUqWVP8ejUEh0glsaM4W2QpF7UHunEI4OGuw2sZQTSqBJJVVGggLhdZF8GHfxHV/uW7JmCOcgWYA/yJP3JIEcsPNN6sXtTHnvG4eoUyBzgkEOaGgeGPhAQihehgmatJI052/REQtNKf4kCcIznYzWE3YeYsfsjcHA5xjmgiUuwow6bhOeIgMZQ8ZzdHBF5tAdueXDdQ4e8/nfnEoCqTRr9DqIYrBfLd4Rede+rHBMA/q7sLi6HQYokSi2PgWu0QCR269wflJcvxKrQkx2i/kVhc7Bj2D4LYFV+80EaYxi+J7YpDH3F3ckajHE6WtC4ipUEagNPHy8yNCyfoUIYgDIrKPRxgz9RIRvs5nInzu3662LDC/85WPPpvi5MTBs2pTT2nw+vgTLPX1PjdZy8+XX1KRyEqF4WtuJs6TxaCDYXpuYC0Y/RIw0q3201szPZT7DBVI4LkjZIiC68jM78xpSgfgkepXQg7ZMgJg0FpMTK0DJOLQo79wLbDatGehD4ZRovxYKFx9myMDOOFlqHlaC16PuGzxsEBg74NA3ziLSwAYrE+OKwvDnciAj60nNVUE89EWQ0YSS4pNBONZ1E8IjUGVKkAQKmi0ZRArVJFSmgmrol/CG37zp+BH7RPbPmrMHkwSFaqIsRUi+apLL/RdACLoiNNsUwpSqoJWE8x8XSU9YDOdyPbgVfRVTQdRV93ZqJep5kAb7An9WlFjH24VOdh28tocm1irDV9u6NT77aLiGi1FsmOvfb4WjY2MsLa6srOVOtdSnA1tITq1p+lntwmF1HbxG0eUCjkYj+VATiiQNpJ4+fBO82By9ytRuyzC4+ev3CPVKOBaV4O4M26G1quX369poW8EbsviIkk4re3G+U85VLX+dcXAsuA2Hz1xbgXgMFZGrT4W9PfEC8iBvCC8ed+aeA856Ya/kzfci09+5ar6e/INv81RkVRiB7pCz6I45+Tj+I5O0y614+xtmYNxom8n2SU7WDZzok/oqlfrpAMYurNxigEhfkg/iqeA9TQGWGocPOQ7F/Za1xRepRQI9hc43fo5KrNW1ZVdm6viC6P8l0TjQeqglXa05z9Fea8ku8K+z39PGMLunasjJNGUdQiQah8SZaXiqZK13lwdHOTuGHkeWmAX+0eP4IlKCj0jQdocffPSlqgWRGnI+l5qcH4oyPlYaFrJCFR4Hp1FNGtEx/BXLl7zyrmc6dsYCBbnnrUkK1xW5rOY3lsNcnGa5nJDqgj8qWv5K0X3TQSVNch4Nt9Vyf3bb73Y5wgIDwjCUwCdKq0PLiELCSjPEa+8eIC/EzbIfNygmXI3iarMzIe8Ehje+URc+xG0ZvgRCDn+lW7T3meUAgSCNitv/9/sktaiPS4InkFcC8uLsK0oj5JNulfGr3bOZp7+ND5E6FQBxoTP5gBnlxtm6aOLxVtZWqBuTnVBqz8BpCqiPOIdL7hHJnga96IdE5wUtyZ/eCXg76bxCzmcyK7vED36OJccFM9LheVV7U1h5ZL7Cuwy1oKpw2mI9FB9qnctCgfad7ivAJo82ao2YLBQNutwCPnUGkhsBW+ehWO4rZevVaq++r2VaUysm543mAZVaqv1qduP3d3f533Nfr1wQ2QW7Tk7pmZHo6Ms//aNf7VaxfmV+WbHZrjYrup2YtEaAAjojFkPD6Xmio8KdLp6LzBoWZOy+Il3Q7dQ6FhzQ5yTne6+ePpWtXeQef9HCU8kvPoBiirBjs8OwQCenh4s4OM06ML1etB/unHpY3TkEFFVQsAGZPxrNir/W/j6bQ0/qJF10VFvTYrbm0tsLf8/z+GXdB8Q+/oNr/4r9igwgTpGddtaoaYq3++oXdy47/57z8Wu+jBgZd2XKP9mRRrq5dX2NtXyjotsaT3WjkxMlKYexob283pCQ8fFso+kAwYvaySw6mUdpiN5HcyDUGvf2FaDfgaKP9USvBPtWKFvvUJ4VvCoegGNk/FZf59723f9508C2QTiHuJ71mh9XI/hbCO8IGwo3iWxU67Bb8Df6GfLYOf8419N/Ax+Bs2hnwDMLc+OQeeMOGwKoyq0YCQRi05HbY5bKIyqArI+IXbJ8P34WV9feAsXJdgVtobKAEyjWw+NP0SfJHMJD7J3APBQH+xxqsVAf0p/ModMhttpbRSw14ZqAksDwjUBlJeylP/VyX97yPMfaTn5UOXJMoKeVtKI5if//9tJwpwO6x+vqYie+RjO5yW3QC69zzIfLD8AeCdNV43Hgkc/EO/TJW+UyEENtduqRElLRVKOc8DHvri5z+y03G26fDABnmfzB7HkXnLODh7WeAeomncawNH6i3lbEgAFrzGTcQe731fPGJc7nt7GprXNXeL932XW6niR1UAev/B7O6YZPxNpqin4X/wT81rwTdfWKi2AnM1E0E4ZgPHeieFtHvfEWR2FgF7ZAKz3o6GHoHpWSUdjxd5s3vaANJOgVIhxGAh8H5ihzuBC1G/j7yu1ShgBRpBoeJaaU+bgOWHSbGR9pEjkeRjL0+5g9GRnEyvI40H1lZi7yO+kgPrNBZx9h7iryTgkjPZ7RXhwMLd6/I7PMc88sXfU7KVbvv8hwHLBc8TLx+RYH90A77GeY3nWX3Khgd3iQc2/vD3vy+rd7Rqt5XbkpHdyfjijgyXjgCs32FrhughbeuNS/T9ghjfCK3wk9+8OFzEop8ubS+hEqGd5cWz9GO9onN9EfOLXO/beLkFvEwKPht8RzON0qT6ynR3tJRuNgLs7yynb6oonqLb9pRfHvZ3S/X+UV7N6PtFADcu+xbCYCCD/XGyP+IghMkIoG7hu5u8W2wt5CxFtspE7cv+cgiNDsIt8BtrTRAsygUiweTazKXeiRxv9GaZaMNfaGaQ3he9IFVxJ8c9zgyEAcn1y4CFuyqtH7CRFAlKIEZFUbAfWm1WfrFZ0eq1bWWt+JJnI8NvAwJcefztSb3f7BxIGOjbedHm8R+3/scI/rJGQ9ZWFa3R0F7zegx84BP4p+NPhfTQIQVF3rRgb7uMoOmWkTQuLnyO4N18QFhq/QqoMytmLUPHJ3ude8cm15uBcgfni8jQA6AFWDtyGfCV9GFx0Jqh/VYoCWhLcY1One2PicKx4t7IU9GgqaTYBJmH48HiIjCepDI3Wp69qXQk+xr1SrX5+q3Js09iBA7cORs0dl4pywB48e4NdglVOWCDH9kz7/7a21RNxrsfJw8+UYrxbc9O0kAqIObQvXgXB9cJVGWAEhLALj5jd3yP2e+766NZAoA8OFhIdpRod0EiCD4I3Gd//CfvrYooJYSIfiX2LEb23sVXjpyp6c5Lek6qLdR3nl5zsTefpJ48m5oza+xo3fKwDgeiFTd76+kVQAmsi7hPoUXQUy74YjK8jwxnbQkNzDymxWjRZuJKbHrGr0ainhcXpW4v4hW1R+lKaGHW+1f3vEt7s/dq9nLxdvFyGn/Ckp/bqlee/zqkFuVVLF2xJDQMEo1GykRNA0o3ybpSnK3jqVA0QvCy1hpotol6TVdWZmttHDrEU2OcWO7qNi/vG/G3XwCbKN3Ygee568RrA9dJPugYA8ss25JZc8iNRt81gCcaiOmep3m/l8dUzExfAsRwopn291V/dZAwgAznkrJ9f/1hBTcJF44LZYiVIlGr8X2v2WdexRentCE+cUY2Frtw5zosqv8hGQN81H4yjG3UJy+MeFImpwJS1f1tzeIn2RAsXpyNW0+w5SzccOCqe4bkFhBgQb799rO0CQgHYgM7y8s6g/Z1BpaVB3XuMyqzrcTpqt0T9++/IegWyGjnoebjx5t6LHTsOMw2vYHJQpNBr4DPbuwfE3mkP0h5E0Dpiqbl0ayvwPJ35JXB1xrhaxgQBqxof+shcjzU8uI7VRY4TiIDHIAMph0hbsswN7Gb0tNbyEdUwyQa8RyRRhqWYLtxS3DdWMnhicaPGZozMraRDg8jnSOJaRApqnVSu0ugNk2rWaR10ipVWhUZvFR/SaVK+Nqscpf3EhBoCd20qcTBYdBS8gjl7Iw8LEHhzRmAz7TjjReHby11dXPgVeXilve0WkB9G3a34QrfAWpH34CIicujXd/jMsIvJYc7a634bJazCacCDdHwNHE6BlaqwAQchVWGb3cOSVt1LxyXDvjA1CkyjXzQXN11tk9ajwqG+YWpKJYPB6PqpWf7TBf70IYTZrQYbT5hQANzkQlgaSmYEMwCxxM5WjGWiAgMNiLcYg0/LKZWbW+yGXTbWdyLALGwkeIQp9PFcT4Z4b2x8Kc4zqXgxDnDsXvc4MxBUrGU0VI8R6tziKPAxqRti+5p0y6d2QyaoXHmYrr2eeRbcLM57sTbyOfa9Iuvv7iArwDcICwcTE1N2eC+NcxbioHAWpedvI52p+XsxXlaLGgNyd+0KT+balqsxcLUQseODt43ZbSEsLCKulXJKSmDhQLAhz7DsUOYOA828w/xn0y2jawdshSbMH8w2R44JiJGMXEsafttiu2vm1eqsIxBwFdDeEQt+c7hWBwWpboWm1+/goxSlXyD67U+eLL9UCia8fLFgWwqsG5/QGD9v1qtbq+5rFSjWVG1I3Pb8PwFeBoAO7rMCw08yOvNTWJwHgpMEJ8R5+AGrlW1/TrUGYIPK3vql+cj54cvC85zWoXdUQQSrH5uWky4TWPGsRCP8N5kygwE0SxXEzQyc/46vZv8m5d3r2dlcB6h+ed/l9otI87r468NzlvGDw8ZMsvUeK0S3zGNs8kaT82sRmJf5PnWskrp+21j1sUfDOhNJlM5nEwZqa0oPQHFBeVYaxNuDNfUCqrf4INel9mSMZy5Y5qrYzzNTEXDUGD0ODWPdnTsEY2g8zMRwDqRSn1qTvXN44skyZM28wAaiNg9sUN1hpSK+145nxqErE2uS26Hftuz/FzDgvrcBTk27jaUlaKojm0ln0mRmX1/tmSKu/vl/j2pyuPYzD9HQyOvdqz5Frc8rVXR74iczfLqd94icX9v54rbYN5ZwApMhKUXMvYzvzD3c325VoxRnf5llBiiik/a3UR6TfJ4eKneR6/erGjhDC7ttlDz5GJ43wfbD33X+r7afu0LP0h8pXwlAmEtZm0MKbnsutlww0MjZ0qwW+k9iiZGlq+pHBhSD6pPqk9xLVMyJxunrDZZZAbZfe+b1mUT1Xo6KvfedSyVdYPPWbMaalJ6S4aT79f4BH/+w3sXm3J4eRp2wKugBJ9ZfDk9LRufxa2ogmu3Y90odlfpOyILGXMigIxW/7M9J3gTnBPlu7Ixa6pl4LeRxir2lt+GNU2w5TvMwjTsNfAANigNc8I8g4mUF27KvR7amgKb9xOp0xzXDNRzHxThN5p4D62Rl3Rhk7tkJWOrC4R4RluakxWywg3ghDGonquhLAlKESj1TrqF6z6Xzc8p8whIdJIEiAScEocoNes9ZVfgOLfQ3FOfRd1vq+UptOuhEycgsusnMOudp0h0U2dpehimmFQHcpMu+ERotuFiApOXDBnzSKrhNlyTVmUYOFbguA8/jvURZTCjSmqBuTPf5ApWLz5/trA6pV9bXq7tP2JmM9/ZUoZWllSU6DRLw1frw2q2kOHLJlwaa59U5iX8AvjP2O8I0C78mlrfGVzjd9PJStw5syjRPdl2bYzThWitvbGKqnN8lBLN63288n2MeUEVgl6bUo1ah1qfgv69b3apcKEBAu7G5wNDFS45MY78xN6kNPIiekkzmA4WtI7iHprBDLCljJZGSk/tTebBZeuHShmllBNVXEsiUDOHXgUOglV0IJ1mDsZvY4MJ7gkm8+DuNYOmwYQa68EBfC54fOYOQp+hQW53RJG1yMzP+PQ3T8Is07q2EeKs1JqiyEe3/kYAAhlr6q00bD2Oxq63p9nXs2l7d+EJSopWocZkgZk8WzgMCKM+U52V45NMD+KOXaH/8uGJy4jBhMAIle7hQairUwwZ0Awf8QlZeaMgQR6JWwTWv1wS2dWmP+jdBn3isUIEAlnsdqINfo/VFGEkeBdREQw8Nelsg5BJWNqNZ+GIHs9jGUV9KHM65kglaXBacSNyTziY+Kuz2SOr9Fe5vsRhV5e/OunLlzvbbVDnGo5RhXJBuOcRXk65zzYyI9JqgbYY156q5zTYMsbSn7YQC2qfNiV1OPbETFJPh7i8bkwRRXZm8e2GKzhMC2Iuea4xNmU73Bb6ysLevnxVs6uToD97D6mLokaTuotZW5PwSQCx1RY/CrzpguUIl6oFSTfQZi4sgzNGUTSqAIV4DqEgWIBGqnKUJi0l3lSfKzx9fygNaDbasMmAYqPO5fGTUDRICGmglHIlYo8o84NBNA8SwBo4GJpn2MFTu1wV2JmZSyEFwvUJCcSrbVRKt7zXEz+1VuGwVa03rU1YhwP5wT0AGu2MFTmE+gV1g2gD3yIK7gn4KtzGQmHj2L/0Yc0u62hCpVOtCE0QKbyK0QI8UAa08QXzNJsv47NPM1/ct+hztRRtrl7iTCSgDAIDGoudvTBrh32pDmH+As9NrWi0Pcrw+5J5j83RZmEyJEJlcbUqdH6hAWWPFpefQiu5SvSp8BYIVgnMogVJsmdjFiAItCDM9un8p7aXUWhHFOoy9nuKLJY2UI5o1ImrjkrUM0w3pRvzDGUw9KdxdDkdN61jRfsS0Fd/rb1AFjpK7Ov0lPuEi1hYFaBQzOSvxL3CrQAC4qqXTSwm5ZMqJ/InGp3yHRuPcbfY5nr1pz7vRMfAzUNY39bzl0PwNIkpIoXILkG+g1mIRRkInlJCkGFvvyPIX+QYy2RXc0VZTwVdcPNJ2vAuU2fCny1mHUPnA3gpflQYFqpGjo3QgJgopwvOWGfpnJxs6Z+dylpPXQKlgjowFLR3gthXPL618NjH3QfsbSdzSnrIOfjmGtIiwtKcndk8/z9hV6Tbda0NHaSMMFJYfmFnaI20D6eexKiviOanxBEyPWqWOJ9Q7GupWNFX62ynXzKl+i+bbqqhN15yqraJzjPH0OHbFArRrsWj2RYEyWfuHOiUamNcW7lty9ErYe/nac4JC0pWUHAfZXGzWtv3dS3bDqTOQR+L28jABsY0Gu2LRtmDhv6aRMUZaND/iA0fkGev3hACZmSB+s1guDlfD9WFQZn5YPhmQJ+etZstlKZs98udbXcv+LTMPfe6R7GdwOtE+Z14c2Zu6uxM5ht7L2qeYp7UvTMt3qXXZbjY3gP4eB6ubWXmIrCb9TRGZcxoc0yjep8PJ9XZF49wuZyWJjPEBWh4PsjGngWVRuVhYQKkOuwAKCOUZC6VtCH5CDXV5hZIIExhsygThLhOKa6qUqjz9xE5QHgVKgR0/p52DhBfeRnp1czGhaLLykx1q5/CxX38xjMyw554RjjjQ0ZTiJOoSvuWxplAPJ2Gt/PsdqGM41RAuGEkcUPSNoj4KVwW9UdSXIMM11RhHGj80+qrqPnr2dhQVEOZrh2Y9n8SdYKR/in8az7NKXV1lYoXB1dlt5+HxVlcXXH3IeOvjEanBvrCcNZ8FfnoihdnA/hEdGY/SEgi6xRUWjNcrakgQT8CPlBWRkbj+KgYO4hdht2PEw+TacRxsvPEsOrw1Iq0jGZ2kzYvEY+kQXqRPpXcPg7YAyQobZgEYtDDf+OSujMyVrABye3facv3NRQjJbj2brAoHVVRA6agUutL04B/zGDTCmwanF7cMjfSHn9sE2mQuPl4e9y3bCDxyLGlxYlhbfeVfx3iI3nFov+etk51lA1jcmJLZ2L3mBN1E0dvSyUW4u55hgbfLkZfq22r/Z1zF37ZbPJTDvMwixnevZPHlOs/7qy6cF7Jz/OmMn0vpM88rwqX3gpx8b2Zu2KNM19ZPPiXz0bfzdJ2SZnjbkdhHldt26LFlklsWXZJ0Djpf0xqTCPi5klYpL5E/nLlhnoXyna796WqkZ7cRLoJhXezRaRVone/2ffvhQD10fh9hY+Erlkoyu9GrB86LKHuX0yWEn7XG3rGl1n90M/77fkuKg7ODP0tkXSpOCTsgRualfVJ0+b5ivoD6MaQGM+duPp7yXSJshTxOpM98npU5DKC8FsX0x3GUl+js3i/fxYgLE8gWz2S7l1sN5ZIkEtf+SOykqy4gfnGuLvHenWYqdnqtzO2JFYf8zxbwaxj9hN0GA+7iC4OU8TDLukwZ5bHTcWfC8cUnxK/wcZ4F8hXZKOZE0F7B7/f4Bly+0m7jcRfEyrol2cWhFW880dnkgblNmg/iwwhPPuJzJTa+eiX9BP4OPHROluFWWQuTlMdowv1/3kiyE+FcqmdQnwWbdvGdpjL+y90BGwCS8R8AfzNpqKf7Kx1EXHXZHj6ydviKgmfi7Fav6cScZJGsMWuQ8WfJ+2fKD6hiech3PqfH3kb7aQteM0Wfk4jybsYp5GBt1KvyN508TJtGBpcnXgxbKuO9ohjUH972F5HhUHGIzw6+7Yu83ZIJcwteReMS3RcJ23/M5ex1n6HLbtyTXT84SQUqwcrSHZCO87rEpYgtC5MTmdSUMH5u7PT0907hE3mWUaJSNApuAPzL5eqM13m+5erQAjLHMFlxQfdbjYP8FR1xWBd1LeIHcKpaFrm18nAbrsQp7RK5vvYZA0fXBF3+qRolNx3t2FShW9z8+NZPInVI4Beyt7IO7MyeYmrrxk7D8JrgyHrPMqLFd9OMQNqmBDaC9mmaOpcVspwPPFwwt9WxiBAZ1e9KUjKPKZqbbcUh68T9JlDFMfq4w6jU47Qs7X9LOTRi681qE/DgcP/sP7kC9b/P9DRNCMVIqtq3Nih+/yGaQz0WNE82OkAvuJ9i6V7652oyYXTMKTKQ+OK0No6IAHP3dnpQtnldlMxfjZbWGW10f2/tTM6rPrbmgxzgKV3h0ba6x6LQmiW5dRFe7Uhy1pulx7KXRRiSXSnhWsxTBtvFcQ6RkRhXy3uovWlKFIz6RehbEZZSrblj30VS+yHDTKuw/BOX/Ta9/vYqP/iFxELtOXKVaqV3ljM9gAnDLE44ZfiJONWTXVvaEn/pKtw0e0wxQ+qfhYVR3OKj/dlZe2Vn0lIqg/S3DnsZt9fwUaWLiHYJIt6pugylJJorZL7i0qPx9+3SfkYkPfwfOax7qFwaNmMUdrcpYn9acCZtZrFUQl6wQyRauD65d6159wP6PZd2Irk0cpLFfmVifvKYH95SX+eB4HGvOBzPb0Cs+jHJDFX1SCiqTUITkYKw0XuWQrlf8fZRdhYdhHKNZCoe/dI/glYQsYIf8fO+XrMLTaFmrJq2fVaBzaRT7QdFR7ryY9vpBc4KfVodWdWll/QzdpOFP/VmVz52008Nga3Lh4X26HGGdc6BgD+RR85ty06wFaJeJtbxcl8FkPUQ41CkQ6g2r/Bot327z8ulyEckY6wxa1+MUyjMxiElhu9+XHD9QFl7eoKNZrK426pwGztOpsrkVn7pMUxpCTTQxCRsjnNiXg7oRDNKnQgEtlYYzhKjcy3J9ua+DzSKJaHiUcnSPfl8it8Q0BXjCi83+/8ulfF4P4RNYkmXheLajAAvTZ6/jLrH17ywmx8visigzGgFYcQUhmyFlaVyNMiZktxfdN9+Z6kghpSElGRy08l0wof6XiRF9rWWMA1Ha2y8ufoU883MTWqffIHWbUq6rW6KiwNo7e0/clWsPHY+cX9zsKg6AU+EpwFU02rz2+WbqXUHfu52f3WYrorM8Azj5VrMGdbhNkElkRKo6dIXCSyKiGrpdnl4Nv232cZIztM6T4SccX1xu/tdNS3zxmM5x7YlrVtKwW2mn1byJRSNnOp/OT+TDyZc16/977xz5mjOOHuxYepXKzrPQgGvdfOyzeW+3U1R1AQ86VRR7rzeCubOCo2zdqkctWq/t3EvNGTFk1mP/tPFlUDMhRwFbHy4oS9WAMLGzF2h3JF1WQ6nUj2l0hoeJsh/TK774gYh4YZ4hosgan2WtuFIe2/o1g81cme8PPigeMuEQ3ohn7Zrj3Gft8/dyXEw9SSAsWypT/pc323FOMherGYXq7mc6vr/03b+yUDB3SZ4G4tYeOl20st5PqfKqldQZe3x4Z5H5dQSXXCSG+pM17HV3PDJtgucp7EYOfmdrh7uVZvU8MTb0iYzP6t40F8Tv4kMzCEFsknJf08nJr7ROIzn5jz0PPllh/ijmMVPZ2FeVO41tgboxQqjizNdn1ZN7ndwabeD9sde1WJP7an6vzV0pDNKLK534BD7DGk6FuHlybhxJ0YOH/x1NS9kmM4gUCe+dc/Bw77MTSlGH5i2YX7I4+I6BzVbtlSQ+Zuu6Y9icSc38vRV0ZaL0fjXGKujO/aJ9nlwxO6ILZMIzpbbEZ4WSFgt4mI8kZlYRSChJC09UrVodI8zapmLLuOkZPLEOBYZ4x3Q/JZxlYTP/eXQyReprW2g4CYcAjb8e4y9+8mMJ+wdjPG/itJgAMcJztC6pC09qY6P3LvjcJwFjpuZNU84i9mFtjAVGqNk6KJMaWzho9gI9s7wltCqo5cuqC01Y84rKYnZFN5Od/ivz/dk6UrduB39VUMJK9idOXnu/49qGVgjXvKU3pVrUzv7Mn7P5w3DyeJFc/CP7mvdI1lsQAlyCrBRdiVc1a9guhJRCI6Xy16t/fipUkVkkPNtFUPbCg9Tj+Q3VJ40GVxiMPLnO8iZbcnk8WTUIp63+qYI/8tQfa98dKmBMzuNbYOZ478VFICJdy+cE5H1cITh71Yisw8jJMLgcfE5d0AYULOY4LX6BIMkjOemR/i/D09qz5xW+kw0wxNT/4wYyAYqZLW3+aOwZ93odpkpNtL2SdjN8ajhl/Nzmp33RdRqQcZRWFLvBUhLPoyOzuqagn7+pkXawWy7UVh9ibduEGejfqXD6G0HSHY6GdM3+Ka1wWtfQcv8FBQDlx6LA9NaK9Q8e3H58X1JqN5ssmSYmx8ye/y7pD4OjiI3xGJSEjKhD9v7OhjJWQ5JAXygmfMjv/Ld9vQ9pn7S8qebGJk6VCEN4i8363srvaZ0ZaujvRNLXXyFm8NUsWqhF4LvkEJMQQPl2pcZcN7Eh2jXtWfoO1wxexy8KCr10dhsmoiNtr3tKnl0rWMpvxWsWceh02nb/I8HobB3g3RUbIEIxYsTZWPGGnx14kYAzGy0hWPHmfRiVMVgaaxml4mH370e2NnX4fYz9u22P/YhEpZC1qV67RhQsVmFFo3jCaWrIcxQqZlZknx7yXkNfUj4Y0HXBTU6O226n1G9NSEYUKavHUs/jf1U+7iw4djmfI2NFwyLZd25WRjshqe9pWsEA609uaX8LhLCziRP/bXv7RcmVocwEg5cimkzyf/t0/z9sRGuHhrRYHL68+gc7Due1dTjqyT6WeqXH+KXw2tSy7+O8qjiZfh0pf8Zc/DjW3PLKnrSQLrqRKup56u5JVMJ6RtRcdu9RH2xSra91o45frK+ZcwtNnw3R9Nw92dOdXPfsq2mANdb2cSOmqePfsaJzPXvr485R+yTOmqLZ2Pzfczap/FyUirTSI5e3EC/XMWCodq46+/eRJ3KNtuT/1h45X6c8TaAQ7W0/ysjvdeOIMOPL3FAY296zpjdmMQ1y2KxeoCFbUnw+u80FRcwq8dk44vW10GqDemiSFWm8mGhlrNpPR4O3H3EQf2NXfbpdI2icShdGykdAzb9nfYnsThH6bH6BpWxsUeVt/46Wbm2OX+a5f6zl/rO+fHp2/ckNOq1es/Txg6934FCS7ZCVetp+UqDJ+JIto60N10j0vd3NqB+bs9VWP1F27VHmXaKDAE6Jb9sBDnvGpq3M8xehfzc7toCyl/X2LLCPb/Ojf32pfy1zObPO68AHLcOBU5YoIeYle5vYh39jY5bpySnItE+V/5UvM+ly0BYRvEB3uVtBpnrRw3TgnxdJPJexICcPKCx4JIax2sla8sCTuoRPlRiK9WQ1bEkrAW8eqehji0U5XnnBVM/usSFJd/uoQN8QY8R+XqPibvOGcBec9h8yE+3Hhyj18tJX/2DSyX48YpyZqoDWsRP+580uqw+iK+3vHKs87RkW1m5WSqFOW3yZOBMYO0OsFaVIryyzOXhwNgkxx1URT52TisMfGTlUGZOOYHYRO/t1fwxFmtqJM/akMb0YszsCTyUQfY8is7oPKfU55QcbhM2MyEfTEp1pcnw67vf/mkSSF2/Kp9fMy2+BrOHPEh38hTQJkwoD0m1vlqzcRvXGEM15uDgSWW5dum/NZhtubkBh+sDr69uAu1vQEz/LtVaZqO+G0v1xzwSfx/rejJXfv8v87lucC/ifDPLTo/mdhJANJBeyafLbUMQa0F9x8phCrwTP1b/1a3RcveL1gHuji7q95zuwX3vFyhda6n3roM/+fg0+EAc8NnoaVRL8j9dJ/YoiVaVjfd87Zyyamzu5Dz3y5WNvFlGfibY8MTIqh24y2h7d5A9tGVwce8Vdk5bw3kpreOo2Zuva7JFsFXanP6OG54PfO8d1D98gbmfToO/sKbLPzsBVaEV3woGBazA8UVqZuaEAra3qw9DcLOTaU7b/wbvUZI7jow4T+mTJ393fXt9dpPZEw0TPK3vy/F9S7J1H8YO4YxSj8nGXEo16GU+f3mxqEcXA8ybbqpCaGg7c16WpgGYXf1pfO887/Ra4R042RfF/6PKdMd7++ubzHoT56xTjYu6vzt74sluv6weZKp/7BEjLtV0s9ooxGHch0iyPP7jXV2Dpe/5u+f2gBe+k5xmx+ZA3zw0ScPHj15/nNc8I9G/KRU37yBEIygGE6QFM2wHC+Ikqyomm6Ylu24nh+EUZykWV6UVd20XT+M07ys236c1/14vt6f7+//x8x2lzg3WVEDfL6IxbMp+93bAhkgq6tyuwD7qHK3o3k/5qB8JJA6KGC7UnsqQc1+Ji6YMJdqQTLSraJB6UuB9+OlBrKLlZ+AYrMQW1lyA3RVROIFTnQK5JBG2oWn5kgcmXE1R8JKF0YinoAeBW4JQkD2NdAXrdQchH04k9aLLjoEbMpCRQR/E1tCYzAAD1ifPm0dtIYJTsJnuOLPIYraqzjgHAVs7anYGfWM5vvKAa9UweCUL1J+In4Yn4JKBQNbzIFSK1YFUyNu/zQ+xKIGa4do41r72/E6V4PlMTeDWJyR29FElsXW6gJiQOosmlW6+KcVoMaChA/+i5vW7tev2kDG50dGRi7gE0xVDgnV+tiEbYalVzngSJcldAtp6WqCfMg/Vn1ewYJZJrwsyP6oLHCssQRf3D69vmR1tzaRSZOItRfxEfcjgWRlhH2XRVZchIS7ybYOBjQih2YF8ajAdVYm9lUspKCtJQMPW97+Pz/RpOeGIrXdjb9NmOquWpWNtMyFCBjBDQAAAA==') format('woff2'), 5 | url('iconfont.woff?t=1561962427119') format('woff'), 6 | url('iconfont.ttf?t=1561962427119') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ 7 | url('iconfont.svg?t=1561962427119#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family: "iconfont" !important; 12 | font-size: 16px; 13 | font-style: normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .icon-douban:before { 19 | content: "\e600"; 20 | } 21 | 22 | .icon-wode:before { 23 | content: "\e660"; 24 | } 25 | 26 | .icon-msg:before { 27 | content: "\e61c"; 28 | } 29 | 30 | .icon-99:before { 31 | content: "\e6bf"; 32 | } 33 | 34 | .icon-baiduyun:before { 35 | content: "\e622"; 36 | } 37 | 38 | .icon-wangluo1:before { 39 | content: "\e687"; 40 | } 41 | 42 | .icon-ip:before { 43 | content: "\e64f"; 44 | } 45 | 46 | .icon-jshunxiao:before { 47 | content: "\e645"; 48 | } 49 | 50 | .icon-huaban:before { 51 | content: "\e690"; 52 | } 53 | 54 | .icon-github:before { 55 | content: "\e709"; 56 | } 57 | 58 | .icon-pinterest:before { 59 | content: "\e79a"; 60 | } 61 | 62 | .icon-weibo:before { 63 | content: "\e63d"; 64 | } 65 | 66 | .icon-youhuiquan:before { 67 | content: "\e65d"; 68 | } 69 | 70 | .icon-juhuasuan:before { 71 | content: "\e779"; 72 | } 73 | 74 | .icon-gmail:before { 75 | content: "\e89f"; 76 | } 77 | 78 | .icon-windows:before { 79 | content: "\ebb1"; 80 | } 81 | 82 | .icon-ai-tool:before { 83 | content: "\e627"; 84 | } 85 | 86 | .icon-emizhifeiji:before { 87 | content: "\e649"; 88 | } 89 | 90 | .icon-h5:before { 91 | content: "\e633"; 92 | } 93 | 94 | .icon-xinlang:before { 95 | content: "\e604"; 96 | } 97 | 98 | .icon-wangyi:before { 99 | content: "\e605"; 100 | } 101 | 102 | .icon-bolezaixian:before { 103 | content: "\e6ea"; 104 | } 105 | 106 | .icon-youxiang:before { 107 | content: "\e667"; 108 | } 109 | 110 | .icon-aiqiyi:before { 111 | content: "\e719"; 112 | } 113 | 114 | .icon-kongzhi:before { 115 | content: "\e60b"; 116 | } 117 | 118 | .icon-gouwuche:before { 119 | content: "\e63b"; 120 | } 121 | 122 | .icon-twitter:before { 123 | content: "\e69b"; 124 | } 125 | 126 | .icon-wangluo:before { 127 | content: "\e617"; 128 | } 129 | 130 | .icon-behance:before { 131 | content: "\e643"; 132 | } 133 | 134 | .icon-zhanku:before { 135 | content: "\e66f"; 136 | } 137 | 138 | .icon-amazon:before { 139 | content: "\e616"; 140 | } 141 | 142 | .icon-eye:before { 143 | content: "\e722"; 144 | } 145 | 146 | .icon-cloud-download:before { 147 | content: "\e61b"; 148 | } 149 | 150 | .icon-gongju:before { 151 | content: "\e603"; 152 | } 153 | 154 | .icon-ip2:before { 155 | content: "\e648"; 156 | } 157 | 158 | .icon-fanyi:before { 159 | content: "\e6ba"; 160 | } 161 | 162 | .icon-acfun:before { 163 | content: "\e68e"; 164 | } 165 | 166 | .icon-yunyouxiang:before { 167 | content: "\e72e"; 168 | } 169 | 170 | .icon-anzhuo:before { 171 | content: "\e64d"; 172 | } 173 | 174 | .icon-youku:before { 175 | content: "\e619"; 176 | } 177 | 178 | .icon-shipin:before { 179 | content: "\e677"; 180 | } 181 | 182 | .icon-temai:before { 183 | content: "\e60f"; 184 | } 185 | 186 | .icon-S:before { 187 | content: "\e67f"; 188 | } 189 | 190 | .icon-youtube:before { 191 | content: "\e612"; 192 | } 193 | 194 | .icon-feedly:before { 195 | content: "\e62e"; 196 | } 197 | 198 | .icon-pingup:before { 199 | content: "\e651"; 200 | } 201 | 202 | .icon-cdnjs:before { 203 | content: "\e665"; 204 | } 205 | 206 | .icon-codepen:before { 207 | content: "\e689"; 208 | } 209 | 210 | .icon-jingdong:before { 211 | content: "\e631"; 212 | } 213 | 214 | .icon-taobao:before { 215 | content: "\e634"; 216 | } 217 | 218 | .icon-sousuo:before { 219 | content: "\e61a"; 220 | } 221 | 222 | .icon-kongzhitai:before { 223 | content: "\e654"; 224 | } 225 | 226 | .icon-daohang:before { 227 | content: "\e611"; 228 | } 229 | 230 | .icon-quxian:before { 231 | content: "\e61e"; 232 | } 233 | 234 | .icon-QQ:before { 235 | content: "\e613"; 236 | } 237 | 238 | .icon-base64:before { 239 | content: "\e84b"; 240 | } 241 | 242 | .icon-instagram:before { 243 | content: "\e87f"; 244 | } 245 | 246 | .icon-feiji:before { 247 | content: "\e704"; 248 | } 249 | 250 | .icon-yinle:before { 251 | content: "\e7b8"; 252 | } 253 | 254 | .icon-zhifeiji:before { 255 | content: "\e7d5"; 256 | } 257 | 258 | .icon-sheji:before { 259 | content: "\eac1"; 260 | } 261 | 262 | .icon-theater-masks:before { 263 | content: "\f0fd"; 264 | } 265 | 266 | .icon-font-awesome:before { 267 | content: "\f1a7"; 268 | } 269 | 270 | .icon-tengxunshipin:before { 271 | content: "\e636"; 272 | } 273 | 274 | .icon-dianshi:before { 275 | content: "\e64b"; 276 | } 277 | 278 | .icon-gongxiang:before { 279 | content: "\e608"; 280 | } 281 | 282 | .icon-dribbble:before { 283 | content: "\e6ec"; 284 | } 285 | 286 | .icon-google:before { 287 | content: "\e8f0"; 288 | } 289 | 290 | .icon-jiaocheng:before { 291 | content: "\e62b"; 292 | } 293 | 294 | .icon-cloudflare:before { 295 | content: "\e64c"; 296 | } 297 | 298 | .icon-md:before { 299 | content: "\e6b5"; 300 | } 301 | 302 | .icon-facebook:before { 303 | content: "\e7ff"; 304 | } 305 | 306 | .icon-yanxuan:before { 307 | content: "\e609"; 308 | } 309 | 310 | .icon-suning:before { 311 | content: "\e60c"; 312 | } 313 | 314 | .icon-zhihu:before { 315 | content: "\e60d"; 316 | } 317 | 318 | .icon-dangdang:before { 319 | content: "\e60e"; 320 | } 321 | 322 | .icon-V:before { 323 | content: "\e610"; 324 | } 325 | 326 | .icon-zimu:before { 327 | content: "\e614"; 328 | } 329 | 330 | .icon-bili:before { 331 | content: "\e615"; 332 | } 333 | 334 | .icon-iconfont:before { 335 | content: "\e618"; 336 | } 337 | 338 | .icon-daohang1:before { 339 | content: "\e620"; 340 | } 341 | 342 | .icon-yunbo:before { 343 | content: "\e621"; 344 | } 345 | 346 | .icon-shilaimu:before { 347 | content: "\e61d"; 348 | } 349 | 350 | -------------------------------------------------------------------------------- /static/css/font_1230786_swt4kkie8ym/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/css/font_1230786_swt4kkie8ym/iconfont.eot -------------------------------------------------------------------------------- /static/css/font_1230786_swt4kkie8ym/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/css/font_1230786_swt4kkie8ym/iconfont.ttf -------------------------------------------------------------------------------- /static/css/font_1230786_swt4kkie8ym/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/css/font_1230786_swt4kkie8ym/iconfont.woff -------------------------------------------------------------------------------- /static/css/font_1230786_swt4kkie8ym/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/css/font_1230786_swt4kkie8ym/iconfont.woff2 -------------------------------------------------------------------------------- /static/css/font_1614281/demo.css: -------------------------------------------------------------------------------- 1 | /* Logo 字体 */ 2 | @font-face { 3 | font-family: "iconfont logo"; 4 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); 5 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), 6 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), 7 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), 8 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); 9 | } 10 | 11 | .logo { 12 | font-family: "iconfont logo"; 13 | font-size: 160px; 14 | font-style: normal; 15 | -webkit-font-smoothing: antialiased; 16 | -moz-osx-font-smoothing: grayscale; 17 | } 18 | 19 | /* tabs */ 20 | .nav-tabs { 21 | position: relative; 22 | } 23 | 24 | .nav-tabs .nav-more { 25 | position: absolute; 26 | right: 0; 27 | bottom: 0; 28 | height: 42px; 29 | line-height: 42px; 30 | color: #666; 31 | } 32 | 33 | #tabs { 34 | border-bottom: 1px solid #eee; 35 | } 36 | 37 | #tabs li { 38 | cursor: pointer; 39 | width: 100px; 40 | height: 40px; 41 | line-height: 40px; 42 | text-align: center; 43 | font-size: 16px; 44 | border-bottom: 2px solid transparent; 45 | position: relative; 46 | z-index: 1; 47 | margin-bottom: -1px; 48 | color: #666; 49 | } 50 | 51 | 52 | #tabs .active { 53 | border-bottom-color: #f00; 54 | color: #222; 55 | } 56 | 57 | .tab-container .content { 58 | display: none; 59 | } 60 | 61 | /* 页面布局 */ 62 | .main { 63 | padding: 30px 100px; 64 | width: 960px; 65 | margin: 0 auto; 66 | } 67 | 68 | .main .logo { 69 | color: #333; 70 | text-align: left; 71 | margin-bottom: 30px; 72 | line-height: 1; 73 | height: 110px; 74 | margin-top: -50px; 75 | overflow: hidden; 76 | *zoom: 1; 77 | } 78 | 79 | .main .logo a { 80 | font-size: 160px; 81 | color: #333; 82 | } 83 | 84 | .helps { 85 | margin-top: 40px; 86 | } 87 | 88 | .helps pre { 89 | padding: 20px; 90 | margin: 10px 0; 91 | border: solid 1px #e7e1cd; 92 | background-color: #fffdef; 93 | overflow: auto; 94 | } 95 | 96 | .icon_lists { 97 | width: 100% !important; 98 | overflow: hidden; 99 | *zoom: 1; 100 | } 101 | 102 | .icon_lists li { 103 | width: 100px; 104 | margin-bottom: 10px; 105 | margin-right: 20px; 106 | text-align: center; 107 | list-style: none !important; 108 | cursor: default; 109 | } 110 | 111 | .icon_lists li .code-name { 112 | line-height: 1.2; 113 | } 114 | 115 | .icon_lists .icon { 116 | display: block; 117 | height: 100px; 118 | line-height: 100px; 119 | font-size: 42px; 120 | margin: 10px auto; 121 | color: #333; 122 | -webkit-transition: font-size 0.25s linear, width 0.25s linear; 123 | -moz-transition: font-size 0.25s linear, width 0.25s linear; 124 | transition: font-size 0.25s linear, width 0.25s linear; 125 | } 126 | 127 | .icon_lists .icon:hover { 128 | font-size: 100px; 129 | } 130 | 131 | .icon_lists .svg-icon { 132 | /* 通过设置 font-size 来改变图标大小 */ 133 | width: 1em; 134 | /* 图标和文字相邻时,垂直对齐 */ 135 | vertical-align: -0.15em; 136 | /* 通过设置 color 来改变 SVG 的颜色/fill */ 137 | fill: currentColor; 138 | /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 139 | normalize.css 中也包含这行 */ 140 | overflow: hidden; 141 | } 142 | 143 | .icon_lists li .name, 144 | .icon_lists li .code-name { 145 | color: #666; 146 | } 147 | 148 | /* markdown 样式 */ 149 | .markdown { 150 | color: #666; 151 | font-size: 14px; 152 | line-height: 1.8; 153 | } 154 | 155 | .highlight { 156 | line-height: 1.5; 157 | } 158 | 159 | .markdown img { 160 | vertical-align: middle; 161 | max-width: 100%; 162 | } 163 | 164 | .markdown h1 { 165 | color: #404040; 166 | font-weight: 500; 167 | line-height: 40px; 168 | margin-bottom: 24px; 169 | } 170 | 171 | .markdown h2, 172 | .markdown h3, 173 | .markdown h4, 174 | .markdown h5, 175 | .markdown h6 { 176 | color: #404040; 177 | margin: 1.6em 0 0.6em 0; 178 | font-weight: 500; 179 | clear: both; 180 | } 181 | 182 | .markdown h1 { 183 | font-size: 28px; 184 | } 185 | 186 | .markdown h2 { 187 | font-size: 22px; 188 | } 189 | 190 | .markdown h3 { 191 | font-size: 16px; 192 | } 193 | 194 | .markdown h4 { 195 | font-size: 14px; 196 | } 197 | 198 | .markdown h5 { 199 | font-size: 12px; 200 | } 201 | 202 | .markdown h6 { 203 | font-size: 12px; 204 | } 205 | 206 | .markdown hr { 207 | height: 1px; 208 | border: 0; 209 | background: #e9e9e9; 210 | margin: 16px 0; 211 | clear: both; 212 | } 213 | 214 | .markdown p { 215 | margin: 1em 0; 216 | } 217 | 218 | .markdown>p, 219 | .markdown>blockquote, 220 | .markdown>.highlight, 221 | .markdown>ol, 222 | .markdown>ul { 223 | width: 80%; 224 | } 225 | 226 | .markdown ul>li { 227 | list-style: circle; 228 | } 229 | 230 | .markdown>ul li, 231 | .markdown blockquote ul>li { 232 | margin-left: 20px; 233 | padding-left: 4px; 234 | } 235 | 236 | .markdown>ul li p, 237 | .markdown>ol li p { 238 | margin: 0.6em 0; 239 | } 240 | 241 | .markdown ol>li { 242 | list-style: decimal; 243 | } 244 | 245 | .markdown>ol li, 246 | .markdown blockquote ol>li { 247 | margin-left: 20px; 248 | padding-left: 4px; 249 | } 250 | 251 | .markdown code { 252 | margin: 0 3px; 253 | padding: 0 5px; 254 | background: #eee; 255 | border-radius: 3px; 256 | } 257 | 258 | .markdown strong, 259 | .markdown b { 260 | font-weight: 600; 261 | } 262 | 263 | .markdown>table { 264 | border-collapse: collapse; 265 | border-spacing: 0px; 266 | empty-cells: show; 267 | border: 1px solid #e9e9e9; 268 | width: 95%; 269 | margin-bottom: 24px; 270 | } 271 | 272 | .markdown>table th { 273 | white-space: nowrap; 274 | color: #333; 275 | font-weight: 600; 276 | } 277 | 278 | .markdown>table th, 279 | .markdown>table td { 280 | border: 1px solid #e9e9e9; 281 | padding: 8px 16px; 282 | text-align: left; 283 | } 284 | 285 | .markdown>table th { 286 | background: #F7F7F7; 287 | } 288 | 289 | .markdown blockquote { 290 | font-size: 90%; 291 | color: #999; 292 | border-left: 4px solid #e9e9e9; 293 | padding-left: 0.8em; 294 | margin: 1em 0; 295 | } 296 | 297 | .markdown blockquote p { 298 | margin: 0; 299 | } 300 | 301 | .markdown .anchor { 302 | opacity: 0; 303 | transition: opacity 0.3s ease; 304 | margin-left: 8px; 305 | } 306 | 307 | .markdown .waiting { 308 | color: #ccc; 309 | } 310 | 311 | .markdown h1:hover .anchor, 312 | .markdown h2:hover .anchor, 313 | .markdown h3:hover .anchor, 314 | .markdown h4:hover .anchor, 315 | .markdown h5:hover .anchor, 316 | .markdown h6:hover .anchor { 317 | opacity: 1; 318 | display: inline-block; 319 | } 320 | 321 | .markdown>br, 322 | .markdown>p>br { 323 | clear: both; 324 | } 325 | 326 | 327 | .hljs { 328 | display: block; 329 | background: white; 330 | padding: 0.5em; 331 | color: #333333; 332 | overflow-x: auto; 333 | } 334 | 335 | .hljs-comment, 336 | .hljs-meta { 337 | color: #969896; 338 | } 339 | 340 | .hljs-string, 341 | .hljs-variable, 342 | .hljs-template-variable, 343 | .hljs-strong, 344 | .hljs-emphasis, 345 | .hljs-quote { 346 | color: #df5000; 347 | } 348 | 349 | .hljs-keyword, 350 | .hljs-selector-tag, 351 | .hljs-type { 352 | color: #a71d5d; 353 | } 354 | 355 | .hljs-literal, 356 | .hljs-symbol, 357 | .hljs-bullet, 358 | .hljs-attribute { 359 | color: #0086b3; 360 | } 361 | 362 | .hljs-section, 363 | .hljs-name { 364 | color: #63a35c; 365 | } 366 | 367 | .hljs-tag { 368 | color: #333333; 369 | } 370 | 371 | .hljs-title, 372 | .hljs-attr, 373 | .hljs-selector-id, 374 | .hljs-selector-class, 375 | .hljs-selector-attr, 376 | .hljs-selector-pseudo { 377 | color: #795da3; 378 | } 379 | 380 | .hljs-addition { 381 | color: #55a532; 382 | background-color: #eaffea; 383 | } 384 | 385 | .hljs-deletion { 386 | color: #bd2c00; 387 | background-color: #ffecec; 388 | } 389 | 390 | .hljs-link { 391 | text-decoration: underline; 392 | } 393 | 394 | /* 代码高亮 */ 395 | /* PrismJS 1.15.0 396 | https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ 397 | /** 398 | * prism.js default theme for JavaScript, CSS and HTML 399 | * Based on dabblet (http://dabblet.com) 400 | * @author Lea Verou 401 | */ 402 | code[class*="language-"], 403 | pre[class*="language-"] { 404 | color: black; 405 | background: none; 406 | text-shadow: 0 1px white; 407 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 408 | text-align: left; 409 | white-space: pre; 410 | word-spacing: normal; 411 | word-break: normal; 412 | word-wrap: normal; 413 | line-height: 1.5; 414 | 415 | -moz-tab-size: 4; 416 | -o-tab-size: 4; 417 | tab-size: 4; 418 | 419 | -webkit-hyphens: none; 420 | -moz-hyphens: none; 421 | -ms-hyphens: none; 422 | hyphens: none; 423 | } 424 | 425 | pre[class*="language-"]::-moz-selection, 426 | pre[class*="language-"] ::-moz-selection, 427 | code[class*="language-"]::-moz-selection, 428 | code[class*="language-"] ::-moz-selection { 429 | text-shadow: none; 430 | background: #b3d4fc; 431 | } 432 | 433 | pre[class*="language-"]::selection, 434 | pre[class*="language-"] ::selection, 435 | code[class*="language-"]::selection, 436 | code[class*="language-"] ::selection { 437 | text-shadow: none; 438 | background: #b3d4fc; 439 | } 440 | 441 | @media print { 442 | 443 | code[class*="language-"], 444 | pre[class*="language-"] { 445 | text-shadow: none; 446 | } 447 | } 448 | 449 | /* Code blocks */ 450 | pre[class*="language-"] { 451 | padding: 1em; 452 | margin: .5em 0; 453 | overflow: auto; 454 | } 455 | 456 | :not(pre)>code[class*="language-"], 457 | pre[class*="language-"] { 458 | background: #f5f2f0; 459 | } 460 | 461 | /* Inline code */ 462 | :not(pre)>code[class*="language-"] { 463 | padding: .1em; 464 | border-radius: .3em; 465 | white-space: normal; 466 | } 467 | 468 | .token.comment, 469 | .token.prolog, 470 | .token.doctype, 471 | .token.cdata { 472 | color: slategray; 473 | } 474 | 475 | .token.punctuation { 476 | color: #999; 477 | } 478 | 479 | .namespace { 480 | opacity: .7; 481 | } 482 | 483 | .token.property, 484 | .token.tag, 485 | .token.boolean, 486 | .token.number, 487 | .token.constant, 488 | .token.symbol, 489 | .token.deleted { 490 | color: #905; 491 | } 492 | 493 | .token.selector, 494 | .token.attr-name, 495 | .token.string, 496 | .token.char, 497 | .token.builtin, 498 | .token.inserted { 499 | color: #690; 500 | } 501 | 502 | .token.operator, 503 | .token.entity, 504 | .token.url, 505 | .language-css .token.string, 506 | .style .token.string { 507 | color: #9a6e3a; 508 | background: hsla(0, 0%, 100%, .5); 509 | } 510 | 511 | .token.atrule, 512 | .token.attr-value, 513 | .token.keyword { 514 | color: #07a; 515 | } 516 | 517 | .token.function, 518 | .token.class-name { 519 | color: #DD4A68; 520 | } 521 | 522 | .token.regex, 523 | .token.important, 524 | .token.variable { 525 | color: #e90; 526 | } 527 | 528 | .token.important, 529 | .token.bold { 530 | font-weight: bold; 531 | } 532 | 533 | .token.italic { 534 | font-style: italic; 535 | } 536 | 537 | .token.entity { 538 | cursor: help; 539 | } 540 | -------------------------------------------------------------------------------- /static/css/font_1614281/demo_index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IconFont Demo 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |

19 | 29 |
30 |
31 |
    32 | 33 |
  • 34 | 35 |
    home
    36 |
    &#xe600;
    37 |
  • 38 | 39 |
  • 40 | 41 |
    警告
    42 |
    &#xe631;
    43 |
  • 44 | 45 |
  • 46 | 47 |
    添加
    48 |
    &#xe64b;
    49 |
  • 50 | 51 |
  • 52 | 53 |
    close
    54 |
    &#xe7e3;
    55 |
  • 56 | 57 |
  • 58 | 59 |
    user
    60 |
    &#xe7e7;
    61 |
  • 62 | 63 |
  • 64 | 65 |
    edit
    66 |
    &#xe7e4;
    67 |
  • 68 | 69 |
  • 70 | 71 |
    delete
    72 |
    &#xe7e5;
    73 |
  • 74 | 75 |
  • 76 | 77 |
    align-left
    78 |
    &#xe7e8;
    79 |
  • 80 | 81 |
  • 82 | 83 |
    plus
    84 |
    &#xe7e6;
    85 |
  • 86 | 87 |
  • 88 | 89 |
    strore-add
    90 |
    &#xe7ea;
    91 |
  • 92 | 93 |
  • 94 | 95 |
    set
    96 |
    &#xe7e9;
    97 |
  • 98 | 99 |
  • 100 | 101 |
    book-edit
    102 |
    &#xe7eb;
    103 |
  • 104 | 105 |
106 |
107 |

Unicode 引用

108 |
109 | 110 |

Unicode 是字体在网页端最原始的应用方式,特点是:

111 |
    112 |
  • 兼容性最好,支持 IE6+,及所有现代浏览器。
  • 113 |
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • 114 |
  • 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
  • 115 |
116 |
117 |

注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式

118 |
119 |

Unicode 使用步骤如下:

120 |

第一步:拷贝项目下面生成的 @font-face

121 |
@font-face {
123 |   font-family: 'iconfont';
124 |   src: url('iconfont.eot');
125 |   src: url('iconfont.eot?#iefix') format('embedded-opentype'),
126 |       url('iconfont.woff2') format('woff2'),
127 |       url('iconfont.woff') format('woff'),
128 |       url('iconfont.ttf') format('truetype'),
129 |       url('iconfont.svg#iconfont') format('svg');
130 | }
131 | 
132 |

第二步:定义使用 iconfont 的样式

133 |
.iconfont {
135 |   font-family: "iconfont" !important;
136 |   font-size: 16px;
137 |   font-style: normal;
138 |   -webkit-font-smoothing: antialiased;
139 |   -moz-osx-font-smoothing: grayscale;
140 | }
141 | 
142 |

第三步:挑选相应图标并获取字体编码,应用于页面

143 |
144 | <span class="iconfont">&#x33;</span>
146 | 
147 |
148 |

"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

149 |
150 |
151 |
152 |
153 |
    154 | 155 |
  • 156 | 157 |
    158 | home 159 |
    160 |
    .iconhome 161 |
    162 |
  • 163 | 164 |
  • 165 | 166 |
    167 | 警告 168 |
    169 |
    .iconjinggao 170 |
    171 |
  • 172 | 173 |
  • 174 | 175 |
    176 | 添加 177 |
    178 |
    .icontianjia 179 |
    180 |
  • 181 | 182 |
  • 183 | 184 |
    185 | close 186 |
    187 |
    .iconclose 188 |
    189 |
  • 190 | 191 |
  • 192 | 193 |
    194 | user 195 |
    196 |
    .iconuser 197 |
    198 |
  • 199 | 200 |
  • 201 | 202 |
    203 | edit 204 |
    205 |
    .iconedit 206 |
    207 |
  • 208 | 209 |
  • 210 | 211 |
    212 | delete 213 |
    214 |
    .icondelete 215 |
    216 |
  • 217 | 218 |
  • 219 | 220 |
    221 | align-left 222 |
    223 |
    .iconalign-left 224 |
    225 |
  • 226 | 227 |
  • 228 | 229 |
    230 | plus 231 |
    232 |
    .iconplus 233 |
    234 |
  • 235 | 236 |
  • 237 | 238 |
    239 | strore-add 240 |
    241 |
    .iconstrore-add 242 |
    243 |
  • 244 | 245 |
  • 246 | 247 |
    248 | set 249 |
    250 |
    .iconset 251 |
    252 |
  • 253 | 254 |
  • 255 | 256 |
    257 | book-edit 258 |
    259 |
    .iconbook-edit 260 |
    261 |
  • 262 | 263 |
264 |
265 |

font-class 引用

266 |
267 | 268 |

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

269 |

与 Unicode 使用方式相比,具有如下特点:

270 |
    271 |
  • 兼容性良好,支持 IE8+,及所有现代浏览器。
  • 272 |
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • 273 |
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • 274 |
  • 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
  • 275 |
276 |

使用步骤如下:

277 |

第一步:引入项目下面生成的 fontclass 代码:

278 |
<link rel="stylesheet" href="./iconfont.css">
279 | 
280 |

第二步:挑选相应图标并获取类名,应用于页面:

281 |
<span class="iconfont iconxxx"></span>
282 | 
283 |
284 |

" 285 | iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

286 |
287 |
288 |
289 |
290 |
    291 | 292 |
  • 293 | 296 |
    home
    297 |
    #iconhome
    298 |
  • 299 | 300 |
  • 301 | 304 |
    警告
    305 |
    #iconjinggao
    306 |
  • 307 | 308 |
  • 309 | 312 |
    添加
    313 |
    #icontianjia
    314 |
  • 315 | 316 |
  • 317 | 320 |
    close
    321 |
    #iconclose
    322 |
  • 323 | 324 |
  • 325 | 328 |
    user
    329 |
    #iconuser
    330 |
  • 331 | 332 |
  • 333 | 336 |
    edit
    337 |
    #iconedit
    338 |
  • 339 | 340 |
  • 341 | 344 |
    delete
    345 |
    #icondelete
    346 |
  • 347 | 348 |
  • 349 | 352 |
    align-left
    353 |
    #iconalign-left
    354 |
  • 355 | 356 |
  • 357 | 360 |
    plus
    361 |
    #iconplus
    362 |
  • 363 | 364 |
  • 365 | 368 |
    strore-add
    369 |
    #iconstrore-add
    370 |
  • 371 | 372 |
  • 373 | 376 |
    set
    377 |
    #iconset
    378 |
  • 379 | 380 |
  • 381 | 384 |
    book-edit
    385 |
    #iconbook-edit
    386 |
  • 387 | 388 |
389 |
390 |

Symbol 引用

391 |
392 | 393 |

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 394 | 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

395 |
    396 |
  • 支持多色图标了,不再受单色限制。
  • 397 |
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • 398 |
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • 399 |
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • 400 |
401 |

使用步骤如下:

402 |

第一步:引入项目下面生成的 symbol 代码:

403 |
<script src="./iconfont.js"></script>
404 | 
405 |

第二步:加入通用 CSS 代码(引入一次就行):

406 |
<style>
407 | .icon {
408 |   width: 1em;
409 |   height: 1em;
410 |   vertical-align: -0.15em;
411 |   fill: currentColor;
412 |   overflow: hidden;
413 | }
414 | </style>
415 | 
416 |

第三步:挑选相应图标并获取类名,应用于页面:

417 |
<svg class="icon" aria-hidden="true">
418 |   <use xlink:href="#icon-xxx"></use>
419 | </svg>
420 | 
421 |
422 |
423 | 424 |
425 |
426 | 445 | 446 | 447 | -------------------------------------------------------------------------------- /static/css/font_1614281/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: "iconfont"; 2 | src: url('iconfont.eot?t=1579680559784'); /* IE9 */ 3 | src: url('iconfont.eot?t=1579680559784#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), 5 | url('iconfont.woff?t=1579680559784') format('woff'), 6 | url('iconfont.ttf?t=1579680559784') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ 7 | url('iconfont.svg?t=1579680559784#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family: "iconfont" !important; 12 | font-size: 16px; 13 | font-style: normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .iconhome:before { 19 | content: "\e600"; 20 | } 21 | 22 | .iconjinggao:before { 23 | content: "\e631"; 24 | } 25 | 26 | .icontianjia:before { 27 | content: "\e64b"; 28 | } 29 | 30 | .iconclose:before { 31 | content: "\e7e3"; 32 | } 33 | 34 | .iconuser:before { 35 | content: "\e7e7"; 36 | } 37 | 38 | .iconedit:before { 39 | content: "\e7e4"; 40 | } 41 | 42 | .icondelete:before { 43 | content: "\e7e5"; 44 | } 45 | 46 | .iconalign-left:before { 47 | content: "\e7e8"; 48 | } 49 | 50 | .iconplus:before { 51 | content: "\e7e6"; 52 | } 53 | 54 | .iconstrore-add:before { 55 | content: "\e7ea"; 56 | } 57 | 58 | .iconset:before { 59 | content: "\e7e9"; 60 | } 61 | 62 | .iconbook-edit:before { 63 | content: "\e7eb"; 64 | } 65 | 66 | -------------------------------------------------------------------------------- /static/css/font_1614281/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/css/font_1614281/iconfont.eot -------------------------------------------------------------------------------- /static/css/font_1614281/iconfont.js: -------------------------------------------------------------------------------- 1 | !function(a){var c,o='',t=(c=document.getElementsByTagName("script"))[c.length-1].getAttribute("data-injectcss");if(t&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}!function(c){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(c,0);else{var t=function(){document.removeEventListener("DOMContentLoaded",t,!1),c()};document.addEventListener("DOMContentLoaded",t,!1)}else document.attachEvent&&(e=c,s=a.document,i=!1,(o=function(){try{s.documentElement.doScroll("left")}catch(c){return void setTimeout(o,50)}l()})(),s.onreadystatechange=function(){"complete"==s.readyState&&(s.onreadystatechange=null,l())});function l(){i||(i=!0,e())}var e,s,i,o}(function(){var c,t,l,e,s,i;(c=document.createElement("div")).innerHTML=o,o=null,(t=c.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",l=t,(e=document.body).firstChild?(s=l,(i=e.firstChild).parentNode.insertBefore(s,i)):e.appendChild(l))})}(window); -------------------------------------------------------------------------------- /static/css/font_1614281/iconfont.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "1614281", 3 | "name": "sou2", 4 | "font_family": "iconfont", 5 | "css_prefix_text": "icon", 6 | "description": "sou2 图标管理", 7 | "glyphs": [ 8 | { 9 | "icon_id": "1058864", 10 | "name": "home", 11 | "font_class": "home", 12 | "unicode": "e600", 13 | "unicode_decimal": 58880 14 | }, 15 | { 16 | "icon_id": "1618316", 17 | "name": "警告", 18 | "font_class": "jinggao", 19 | "unicode": "e631", 20 | "unicode_decimal": 58929 21 | }, 22 | { 23 | "icon_id": "5831309", 24 | "name": "添加", 25 | "font_class": "tianjia", 26 | "unicode": "e64b", 27 | "unicode_decimal": 58955 28 | }, 29 | { 30 | "icon_id": "12818648", 31 | "name": "close", 32 | "font_class": "close", 33 | "unicode": "e7e3", 34 | "unicode_decimal": 59363 35 | }, 36 | { 37 | "icon_id": "12818653", 38 | "name": "user", 39 | "font_class": "user", 40 | "unicode": "e7e7", 41 | "unicode_decimal": 59367 42 | }, 43 | { 44 | "icon_id": "12818654", 45 | "name": "edit", 46 | "font_class": "edit", 47 | "unicode": "e7e4", 48 | "unicode_decimal": 59364 49 | }, 50 | { 51 | "icon_id": "12818655", 52 | "name": "delete", 53 | "font_class": "delete", 54 | "unicode": "e7e5", 55 | "unicode_decimal": 59365 56 | }, 57 | { 58 | "icon_id": "12818659", 59 | "name": "align-left", 60 | "font_class": "align-left", 61 | "unicode": "e7e8", 62 | "unicode_decimal": 59368 63 | }, 64 | { 65 | "icon_id": "12818665", 66 | "name": "plus", 67 | "font_class": "plus", 68 | "unicode": "e7e6", 69 | "unicode_decimal": 59366 70 | }, 71 | { 72 | "icon_id": "12818673", 73 | "name": "strore-add", 74 | "font_class": "strore-add", 75 | "unicode": "e7ea", 76 | "unicode_decimal": 59370 77 | }, 78 | { 79 | "icon_id": "12818677", 80 | "name": "set", 81 | "font_class": "set", 82 | "unicode": "e7e9", 83 | "unicode_decimal": 59369 84 | }, 85 | { 86 | "icon_id": "12818679", 87 | "name": "book-edit", 88 | "font_class": "book-edit", 89 | "unicode": "e7eb", 90 | "unicode_decimal": 59371 91 | } 92 | ] 93 | } 94 | -------------------------------------------------------------------------------- /static/css/font_1614281/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | Created by iconfont 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /static/css/font_1614281/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/css/font_1614281/iconfont.ttf -------------------------------------------------------------------------------- /static/css/font_1614281/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/css/font_1614281/iconfont.woff -------------------------------------------------------------------------------- /static/css/font_1614281/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/css/font_1614281/iconfont.woff2 -------------------------------------------------------------------------------- /static/css/sou.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | /* 4 | / 5 | github:https://github.com/5iux/sou 6 | github:https://github.com/yeetime/sou2 7 | */ 8 | 9 | * { 10 | padding: 0; 11 | margin: 0; 12 | outline: none; 13 | -webkit-tap-highlight-color: transparent; 14 | } 15 | 16 | html, 17 | body { 18 | width: 100%; 19 | height: 100%; 20 | position: relative; 21 | overflow: hidden; 22 | background: #f5f5f5; 23 | } 24 | 25 | html { 26 | font-family: 'Josefin Sans', sans-serif; 27 | font-weight: 300; 28 | color: #000; 29 | } 30 | 31 | .search, 32 | .wd, 33 | .s { 34 | padding: 0; 35 | margin: 0; 36 | border: none; 37 | outline: none; 38 | background: none; 39 | } 40 | 41 | input:focus::-webkit-input-placeholder { color:transparent; } 42 | input:focus:-moz-placeholder { color:transparent; } 43 | input:focus::-moz-placeholder { color:transparent; } 44 | input:focus:-ms-input-placeholder { color:transparent; } 45 | 46 | .wd::-webkit-input-placeholder { 47 | color: #ccc; 48 | letter-spacing: 2px; 49 | font-size: 16px; 50 | } 51 | 52 | ul, 53 | li { 54 | display: block; 55 | list-style: none; 56 | } 57 | 58 | a { 59 | text-decoration: none; 60 | color: #464545; 61 | } 62 | 63 | #content { 64 | width: 100%; 65 | height: 100%; 66 | } 67 | 68 | .con { 69 | width: 100%; 70 | transition: 1s all; 71 | margin: auto; 72 | min-width: 320px; 73 | height: 380px; 74 | position: absolute; 75 | left: 0; 76 | top: -100px; 77 | right: 0; 78 | bottom: 0; 79 | } 80 | 81 | .con .shlogo { 82 | position: relative; 83 | width: 120px; 84 | height: 120px; 85 | margin: 5px auto; 86 | background: url("avatar-300x300.webp") no-repeat center/cover; 87 | } 88 | 89 | .con .shlogo a { 90 | width: 100%; 91 | display: block; 92 | width: 100%; 93 | height: 100%; 94 | } 95 | 96 | .sou { 97 | max-width: 680px; 98 | height: 50px; 99 | } 100 | 101 | .con .sou { 102 | max-width: 680px; 103 | position: relative; 104 | width: calc(100% - 60px); 105 | min-width: 320px; 106 | margin: 0 auto; 107 | } 108 | 109 | .con .sou form { 110 | width: 100%; 111 | /*border: 1px solid #ddd;*/ 112 | height: 50px; 113 | display: block; 114 | margin: 10px auto 30px; 115 | position: relative; 116 | } 117 | 118 | .sou form .se { 119 | width: 40px; 120 | height: 40px; 121 | display: block; 122 | position: absolute; 123 | z-index: 10; 124 | left: 6px; 125 | top: 6px; 126 | cursor: pointer; 127 | font-size: 22px; 128 | line-height: 40px; 129 | border-radius: 50%; 130 | color: #777; 131 | } 132 | 133 | .sou form .se:hover { 134 | filter:alpha(Opacity=70); 135 | -moz-opacity:0.7; 136 | opacity: 0.7 137 | } 138 | 139 | .con .sou form .wd { 140 | width: 90%; 141 | height: 100%; 142 | text-overflow: ellipsis; 143 | display: block; 144 | line-height: 100%; 145 | text-indent: 55px; 146 | font-size: 18px; 147 | } 148 | 149 | .con .sou form .wd:focus { 150 | background: transparent; 151 | } 152 | 153 | .con .sou form { 154 | width: 100%; 155 | height: 100%; 156 | border: 1px solid #fbfbfb; 157 | background: #fbfbfb; 158 | border-radius: 25px; 159 | } 160 | 161 | .con .sou form:hover { 162 | background: #fdfdfd; 163 | box-shadow: 0 1px 6px 0 #fdfdfd; 164 | border-color: #fdfdfd; 165 | border: 1px solid #fdfdfd; 166 | border-radius: 25px; 167 | } 168 | 169 | .sou form .s { 170 | width: 40px; 171 | height: 40px; 172 | display: block; 173 | position: absolute; 174 | z-index: 10; 175 | right: 6px; 176 | top: 6px; 177 | cursor: pointer; 178 | font-size: 22px; 179 | line-height: 40px; 180 | border-radius: 50%; 181 | color: #777; 182 | } 183 | 184 | .search-engine { 185 | position: absolute; 186 | top: 60px; 187 | left: 0; 188 | width: 100%; 189 | background: #FFF; 190 | padding: 15px 0px 0px 0px; 191 | border-radius: 5px; 192 | box-shadow: 0px 5px 20px 0px #d8d7d7; 193 | transition: all 0.5s; 194 | display: none; 195 | z-index: 1001 196 | } 197 | 198 | .search-engine-head { 199 | overflow: hidden; 200 | text-indent: 20px; 201 | margin-bottom: 10px; 202 | padding-right: 15px; 203 | } 204 | 205 | .search-engine-tit { 206 | float: left; 207 | margin: 0; 208 | font-size: 14px; 209 | color: #999; 210 | } 211 | 212 | .search-engine ul { 213 | padding: 0; 214 | height: 40px; 215 | margin: 0 auto; 216 | justify-content: left; 217 | } 218 | 219 | .search-engine ul::before { 220 | content: ''; 221 | width: 0px; 222 | height: 0px; 223 | position: absolute; 224 | top: -15px; 225 | left: 20px; 226 | border-top: 8px solid transparent; 227 | border-right: 8px solid transparent; 228 | border-bottom: 8px solid #fff; 229 | border-left: 8px solid transparent; 230 | 231 | } 232 | 233 | .search-engine-list::after { 234 | content: ''; 235 | width: 70px; 236 | height: 18px; 237 | position: absolute; 238 | top: -17px; 239 | left: 1px; 240 | } 241 | 242 | .search-engine-list li { 243 | float: left; 244 | width: 80px; 245 | height: 30px; 246 | line-height: 30px; 247 | text-align: left; 248 | font-size: 14px; 249 | left: 15px; 250 | padding: 5px 10px 5px 10px; 251 | margin: 0 10px 10px 0; 252 | background: #f9f9f9; 253 | color: #999; 254 | cursor: pointer; 255 | list-style: none; 256 | position: relative; 257 | border-radius: 10px; 258 | text-overflow: ellipsis; 259 | overflow: hidden; 260 | white-space: nowrap; 261 | } 262 | 263 | .search-engine-list li img { 264 | width: 25px; 265 | height: 25px; 266 | border-radius: 15px; 267 | float: left; 268 | margin-right: 5px; 269 | margin-top: 2.5px; 270 | } 271 | 272 | .quick-div { 273 | margin: 0 auto; 274 | width: 100%; 275 | justify-content: left; 276 | overflow: hidden; 277 | } 278 | 279 | a.quick_div_a { 280 | font-size: 14px; 281 | } 282 | 283 | .quick { 284 | width: 17%; 285 | height: 40px; 286 | margin: 5px 3px; 287 | left: 30px; 288 | float: left; 289 | -webkit-tap-highlight-color: transparent; 290 | background: #fdfdfd; 291 | font-size: 16px; 292 | color: #777; 293 | text-overflow: ellipsis; 294 | overflow: hidden; 295 | white-space: nowrap; 296 | line-height: 40px; 297 | text-align: center; 298 | text-indent: 30px; 299 | cursor: pointer; 300 | position: relative; 301 | border-radius: 20px; 302 | } 303 | 304 | .quick:active { 305 | background: #fff; 306 | box-shadow: 0 1px 20px 0 rgba(0, 0, 0, .1); 307 | } 308 | 309 | .quick i { 310 | position: absolute; 311 | display: block; 312 | width: 40px; 313 | height: 40px; 314 | left: 0; 315 | border-radius: 50%; 316 | background-size: cover; 317 | background-repeat: no-repeat; 318 | background-position: center; 319 | transform: scale(0.7); 320 | } 321 | 322 | .foot { 323 | position: absolute; 324 | bottom: 20px; 325 | z-index: 1000; 326 | text-align: center; 327 | width: 100%; 328 | color: #999; 329 | height: 20px; 330 | line-height: 20px; 331 | font-size: 12px; 332 | } 333 | 334 | 335 | #menu { 336 | width: 50px; 337 | height: 50px; 338 | transform: scale(0.8); 339 | position: absolute; 340 | right: 10px; 341 | top: 5px; 342 | z-index: 2000000; 343 | cursor: pointer; 344 | transition: 0.5s ease-in-out; 345 | } 346 | 347 | #menu i { 348 | position: absolute; 349 | left: 0; 350 | right: 0; 351 | margin: 24px auto; 352 | width: 30px; 353 | height: 2px; 354 | background: #777; 355 | } 356 | 357 | #menu i:before { 358 | content: ''; 359 | width: 20px; 360 | height: 2px; 361 | top: -8px; 362 | background: #777; 363 | position: absolute; 364 | right: 0; 365 | } 366 | 367 | #menu i:after { 368 | content: ''; 369 | width: 20px; 370 | height: 2px; 371 | bottom: -8px; 372 | background: #777; 373 | position: absolute; 374 | left: 0; 375 | } 376 | 377 | #menu.on { 378 | right: 380px; 379 | background: #29f; 380 | border-radius: 25px; 381 | box-shadow: 0 6px 8px rgba(36, 159, 253, .3); 382 | } 383 | 384 | #menu.on i { 385 | width: 20px; 386 | background: #fff; 387 | } 388 | 389 | #menu.on i:before { 390 | top: -5px; 391 | transform: rotate(45deg); 392 | width: 14px; 393 | right: -1px; 394 | left: auto; 395 | background: #fff; 396 | } 397 | 398 | #menu.on i:after { 399 | bottom: -5px; 400 | transform: rotate(-45deg); 401 | width: 14px; 402 | right: -1px; 403 | left: auto; 404 | background: #fff; 405 | } 406 | 407 | .side { 408 | width: 357px; 409 | padding:0px 10px; 410 | height: 100%; 411 | position: absolute; 412 | right: 0px; 413 | z-index: 2000; 414 | background: #222d46; 415 | transition: 0.5s all ease-in-out; 416 | } 417 | 418 | .side.closed { 419 | right: -380px; 420 | } 421 | 422 | .tab-nav { 423 | overflow: hidden; 424 | height: 5%; 425 | } 426 | 427 | .tab-nav a { 428 | display: block; 429 | float: left; 430 | width: 60px; 431 | height: 30px; 432 | line-height: 30px; 433 | text-align: center; 434 | text-decoration: none; 435 | color: #999; 436 | 437 | } 438 | 439 | .tab-nav a.current { 440 | background: rgba(0, 27, 26, 0.28); 441 | color: #fff; 442 | } 443 | 444 | .tab-con { 445 | position: relative; 446 | width: 357px; 447 | height: 95%; 448 | overflow: hidden; 449 | } 450 | 451 | .j-tab-con { 452 | height: 100%; 453 | } 454 | 455 | .tab-con-item { 456 | height: 100%; 457 | width: 357px; 458 | display: none; 459 | overflow: hidden; 460 | overflow-y: auto; 461 | } 462 | 463 | .list ul { 464 | height: 100%; 465 | float: left; 466 | margin-bottom: 20px; 467 | 468 | } 469 | 470 | .list ul li { 471 | float: left; 472 | margin: 5px; 473 | width: 100px; 474 | height: 30px; 475 | text-align: left; 476 | line-height: 30px; 477 | } 478 | 479 | .list ul li a { 480 | width: 100%; 481 | border-radius: 5px; 482 | transition: 0.4s all linear; 483 | height: 100%; 484 | display: block; 485 | color: #fff; 486 | font-weight: 500; 487 | background: #293550; 488 | text-align: left; 489 | font-size: 12px; 490 | } 491 | 492 | .list ul li a i { 493 | margin-right: 5px; 494 | margin-left: 15px; 495 | transition: 0.4s all linear; 496 | } 497 | 498 | .list ul li a i.iconfont { 499 | font-size: 14px; 500 | } 501 | 502 | .list ul li:hover a { 503 | color: #fff; 504 | background-color: #29f; 505 | background-image: linear-gradient(135deg, rgba(35, 153, 255) 0%, rgba(84, 175, 253) 100%); 506 | box-shadow: 0 3px 3px rgba(0, 40, 70, .3); 507 | } 508 | 509 | .list ul li:hover a i { 510 | color: #fff !important; 511 | } 512 | 513 | .list ul li.title { 514 | width: 100%; 515 | height: 40px; 516 | line-height: 40px; 517 | margin: 10px 0 0; 518 | text-align: left; 519 | text-indent: 10px; 520 | /*border-bottom: 1px dashed #dedede;*/ 521 | color: #fff; 522 | font-size: 18px; 523 | font-weight: bold; 524 | } 525 | 526 | .list ul li.title i { 527 | color: #29f; 528 | margin-right: 5px; 529 | font-weight: normal; 530 | } 531 | 532 | 533 | .set_blocks { 534 | background: rgb(221, 221, 221); 535 | margin-top: 10px; 536 | border-radius: 5px; 537 | } 538 | 539 | .set_blocks_title { 540 | font-size: 14px; 541 | background-color: rgb(65, 110, 152); 542 | color: #fff; 543 | padding: 10px 15px; 544 | border-top-right-radius: 5px; 545 | border-top-left-radius: 5px; 546 | } 547 | 548 | .set_blocks_content { 549 | font-size: 14px; 550 | padding: 10px 15px; 551 | } 552 | 553 | .set_blocks_content table { 554 | font-size: 14px; 555 | text-align:right; 556 | width:100%; 557 | border-collapse:collapse; 558 | } 559 | 560 | .set_blocks_content table tr td:nth-child(2) { 561 | text-align:left; 562 | } 563 | 564 | .set_blocks_content table tr td { 565 | border-bottom:1px solid; 566 | border-color: rgb(71, 144, 191); 567 | } 568 | 569 | .set_blocks_content button { 570 | background: none; 571 | border:1px solid rgba(72, 91, 94, 0); 572 | border-radius: 3px; 573 | } 574 | 575 | .set_blocks_content button:hover { 576 | border:1px solid #485b5e; 577 | } 578 | 579 | .set_blocks_content button:active { 580 | color: #fff; 581 | background-color: #599cff; 582 | } 583 | 584 | .set_blocks_content .se_add_preinstall { 585 | margin-top: 10px; 586 | text-align:center; 587 | } 588 | 589 | .set_blocks_content .se_add_preinstall button { 590 | width: 40%; 591 | height: 20px; 592 | border:1px solid #485b5e; 593 | border-radius: 3px; 594 | text-align:center; 595 | background: none; 596 | } 597 | 598 | .set_blocks_content .se_add_preinstall button:active { 599 | color: #fff; 600 | background-color: #599cff; 601 | } 602 | 603 | .add_content { 604 | border:1px solid #599cff; 605 | border-radius: 3px; 606 | margin-top: 10px; 607 | padding: 8px 12px; 608 | } 609 | 610 | .add_content .from_items { 611 | margin-top: 5px; 612 | margin-bottom: 5px; 613 | } 614 | 615 | .add_content input { 616 | width: 100%; 617 | } 618 | 619 | .add_content .button { 620 | text-align:center; 621 | } 622 | 623 | .add_content button { 624 | width: 30%; 625 | height: 20px; 626 | border:1px solid #485b5e; 627 | border-radius: 3px; 628 | text-align:center; 629 | background: none; 630 | margin:0px 10px; 631 | } 632 | 633 | .add_content .se_add_save:active { 634 | color: #fff; 635 | background-color: #21ff2c; 636 | } 637 | 638 | .add_content .se_add_cancel:active { 639 | color: #fff; 640 | background-color: #599cff; 641 | } 642 | 643 | .me { 644 | text-align: center; 645 | color: #fff; 646 | } 647 | 648 | .my_data { 649 | color: #fff; 650 | } 651 | 652 | .my_data textarea { 653 | width:100% 654 | } 655 | 656 | 657 | 658 | @media (max-width: 720px) { 659 | .con { 660 | top: 0px; 661 | } 662 | .con .shlogo { 663 | width: 100px; 664 | height: 100px; 665 | } 666 | .con .sou form button { 667 | border-radius: 25px; 668 | } 669 | #menu.on { 670 | right: 270px; 671 | } 672 | .side { 673 | width: 227px; 674 | } 675 | .tab-con { 676 | width: 227px; 677 | } 678 | .tab-con-item { 679 | width: 227px; 680 | } 681 | .side ul { 682 | width: 220px; 683 | } 684 | .con .sou ul li { 685 | width: 23%; 686 | font-size: 12px; 687 | max-width: 116px; 688 | } 689 | .quick{ 690 | left: 0px; 691 | } 692 | .home, 693 | #menu { 694 | top: 5px; 695 | } 696 | ul{ 697 | margin-left: 25px !important; 698 | } 699 | } 700 | @media (max-width: 698px) { 701 | .con .sou ul li { 702 | width: 18.5%; 703 | } 704 | } 705 | @media (max-width: 609px) { 706 | .con .sou ul li { 707 | width: 22% !important; 708 | } 709 | ul{ 710 | margin-left: 30px !important; 711 | } 712 | } 713 | @media (max-width: 455px) { 714 | .con .sou ul li { 715 | width: 31% !important; 716 | } 717 | ul{ 718 | margin-left: 15px !important; 719 | } 720 | } 721 | @media (max-width: 400px) { 722 | ul{ 723 | margin-left: 10px !important; 724 | width: fit-content; 725 | } 726 | .con .sou ul li { 727 | width: 50px !important; 728 | margin: 10px; 729 | height: 50px !important; 730 | border-radius: 25px; 731 | } 732 | .quick i { 733 | width: 50px !important; 734 | height: 50px !important; 735 | } 736 | .con .sou ul li { 737 | margin: 5px !important; 738 | } 739 | div#txtq{ 740 | display: none !important; 741 | } 742 | } 743 | 744 | /* portrait */ 745 | @media screen and (orientation:portrait) { 746 | @media (max-width: 550px) { 747 | ul{ 748 | margin-left: auto !important; 749 | margin-right: auto !important; 750 | width: fit-content; 751 | } 752 | .con .sou ul li { 753 | width: 50px !important; 754 | margin: 10px; 755 | height: 50px !important; 756 | border-radius: 25px; 757 | } 758 | .quick i { 759 | width: 50px !important; 760 | height: 50px !important; 761 | } 762 | .con .sou ul li { 763 | margin: 5px !important; 764 | } 765 | div#txtq{ 766 | display: none !important; 767 | } 768 | } 769 | } 770 | 771 | @media (max-height: 420px) { 772 | .con { 773 | margin: 0; 774 | top: 0px; 775 | } 776 | .con .sou form .wd { 777 | text-indent: 50px; 778 | } 779 | .con .sou form:after { 780 | content: ""; 781 | display: block; 782 | width: 30px; 783 | height: 30px; 784 | position: absolute; 785 | left: 10px; 786 | top: 10px; 787 | /*background: url(icon/lg.svg) no-repeat center/cover;*/ 788 | border-radius: 50%; 789 | overflow: hidden; 790 | } 791 | .con .shlogo { 792 | display: none; 793 | } 794 | .home, 795 | #menu, 796 | .theme-switch, 797 | .mywth, 798 | .foot { 799 | display: none; 800 | } 801 | } 802 | 803 | ::-webkit-scrollbar { 804 | width: 6px; 805 | height: 6px; 806 | } 807 | 808 | ::-webkit-scrollbar-track { 809 | background: #222d46; 810 | border-radius: 0px; 811 | } 812 | 813 | ::-webkit-scrollbar-thumb { 814 | background: #293550; 815 | border-radius: 0px; 816 | } 817 | 818 | ::-webkit-scrollbar-thumb:hover { 819 | background: #293550; 820 | } 821 | 822 | ::-webkit-scrollbar-corner { 823 | background: #222d46; 824 | } 825 | .mywth { 826 | position: absolute; 827 | left: 20px; 828 | top: 15px; 829 | font-size: 12px; 830 | height: 20px; 831 | line-height: 20px; 832 | cursor: pointer; 833 | z-index: 1; 834 | height: 22px; 835 | } 836 | .mywth { 837 | color: #777; 838 | left: 10px; 839 | top: 20px; 840 | overflow: hidden; 841 | 842 | } 843 | 844 | .mywth.hidden { 845 | display: none; 846 | } 847 | .mywth { 848 | color: #bbb; 849 | } 850 | .hitokoto{ 851 | position: absolute; 852 | margin-top: 50px; 853 | z-index: 1000; 854 | text-align: center; 855 | width: 100%; 856 | color: #383838; 857 | height: 25px; 858 | line-height: 28px; 859 | font-size: 15px; 860 | } 861 | 862 | .theme-switch{ 863 | top: 20.5px; 864 | right: 75px; 865 | position: absolute!important; 866 | z-index: 2; 867 | } -------------------------------------------------------------------------------- /static/css/sou_night.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | /* 4 | Night mode for sou2 5 | Author:Holger Huo 6 | https://blog.holger.net.cn/ 7 | Apr.11 2020 8 | */ 9 | 10 | /* 11 | Copyright 2020 Holger https://holger.net.cn Under GPLv3.0 @ https://github.com/holgerhuo/minimalist-search 12 | */ 13 | 14 | * { 15 | padding: 0; 16 | margin: 0; 17 | outline: none; 18 | -webkit-tap-highlight-color: transparent; 19 | } 20 | 21 | html, 22 | body { 23 | width: 100%; 24 | height: 100%; 25 | position: relative; 26 | overflow: hidden; 27 | background: #202020; 28 | } 29 | 30 | h3 { 31 | color: #BBBBBB; 32 | } 33 | 34 | html { 35 | font-family: 'Josefin Sans', sans-serif; 36 | font-weight: 300; 37 | color: #AAAAAA; 38 | } 39 | 40 | .search, 41 | .wd, 42 | .s { 43 | padding: 0; 44 | margin: 0; 45 | border: none; 46 | outline: none; 47 | background: none; 48 | } 49 | 50 | input:focus::-webkit-input-placeholder { color:transparent; } 51 | input:focus:-moz-placeholder { color:transparent; } 52 | input:focus::-moz-placeholder { color:transparent; } 53 | input:focus:-ms-input-placeholder { color:transparent; } 54 | 55 | .wd::-webkit-input-placeholder { 56 | color: #AAAAAA; 57 | letter-spacing: 2px; 58 | font-size: 16px; 59 | } 60 | 61 | ul, 62 | li { 63 | display: block; 64 | list-style: none; 65 | } 66 | 67 | a { 68 | text-decoration: none; 69 | color: #BBBBBB; 70 | } 71 | 72 | #content { 73 | width: 100%; 74 | height: 100%; 75 | } 76 | 77 | .con { 78 | width: 100%; 79 | transition: 1s all; 80 | margin: auto; 81 | min-width: 320px; 82 | height: 380px; 83 | position: absolute; 84 | left: 0; 85 | top: -100px; 86 | right: 0; 87 | bottom: 0; 88 | } 89 | 90 | .con .shlogo { 91 | position: relative; 92 | width: 120px; 93 | height: 120px; 94 | margin: 5px auto; 95 | background: url(avatar_night.png) no-repeat center/cover; 96 | } 97 | 98 | .con .shlogo a { 99 | width: 100%; 100 | display: block; 101 | width: 100%; 102 | height: 100%; 103 | } 104 | 105 | .sou { 106 | max-width: 680px; 107 | height: 50px; 108 | } 109 | 110 | .con .sou { 111 | max-width: 680px; 112 | position: relative; 113 | width: calc(100% - 60px); 114 | min-width: 320px; 115 | margin: 0 auto; 116 | } 117 | 118 | .con .sou form { 119 | width: 100%; 120 | /*border: 1px solid #ddd;*/ 121 | height: 50px; 122 | display: block; 123 | margin: 10px auto 30px; 124 | position: relative; 125 | } 126 | 127 | .sou form .se { 128 | width: 40px; 129 | height: 40px; 130 | display: block; 131 | position: absolute; 132 | z-index: 10; 133 | left: 6px; 134 | top: 6px; 135 | cursor: pointer; 136 | font-size: 22px; 137 | line-height: 40px; 138 | border-radius: 50%; 139 | color: #AAAAAA; 140 | } 141 | 142 | .sou form .se:hover { 143 | filter:alpha(Opacity=70); 144 | -moz-opacity:0.7; 145 | opacity: 0.7 146 | } 147 | 148 | input.wd { 149 | color: #AAAAAA; 150 | } 151 | 152 | .con .sou form .wd { 153 | width: 90%; 154 | height: 100%; 155 | text-overflow: ellipsis; 156 | display: block; 157 | line-height: 100%; 158 | text-indent: 55px; 159 | font-size: 18px; 160 | } 161 | 162 | .con .sou form .wd:focus { 163 | background: transparent; 164 | } 165 | 166 | .con .sou form { 167 | width: 100%; 168 | height: 100%; 169 | border: 1px solid #353535; 170 | background: #353535; 171 | border-radius: 25px; 172 | } 173 | 174 | .con .sou form:hover { 175 | background: rgb(27, 26, 26); 176 | box-shadow: 0 1px 6px 0 rgba(32, 33, 36, 0.28); 177 | border-color: rgb(27, 26, 26); 178 | border: 1px solid rgb(27, 26, 26); 179 | border-radius: 25px; 180 | } 181 | 182 | .sou form .s { 183 | width: 40px; 184 | height: 40px; 185 | display: block; 186 | position: absolute; 187 | z-index: 10; 188 | right: 6px; 189 | top: 6px; 190 | cursor: pointer; 191 | font-size: 22px; 192 | line-height: 40px; 193 | border-radius: 50%; 194 | color: rgb(99, 96, 96); 195 | } 196 | 197 | .search-engine { 198 | position: absolute; 199 | top: 60px; 200 | left: 0; 201 | width: 100%; 202 | background: rgb(31, 31, 31); 203 | padding: 15px 0px 0px 0px; 204 | border-radius: 5px; 205 | box-shadow: 0px 5px 20px 0px #0e0e0e; 206 | transition: all 0.5s; 207 | display: none; 208 | z-index: 1001 209 | } 210 | 211 | .search-engine-head { 212 | overflow: hidden; 213 | text-indent: 20px; 214 | margin-bottom: 10px; 215 | padding-right: 15px; 216 | } 217 | 218 | .search-engine-tit { 219 | float: left; 220 | margin: 0; 221 | font-size: 14px; 222 | color: #BBBBBB; 223 | } 224 | 225 | .search-engine ul { 226 | padding: 0; 227 | height: 40px; 228 | margin: 0 auto; 229 | justify-content: left; 230 | } 231 | 232 | .search-engine ul::before { 233 | content: ''; 234 | width: 0px; 235 | height: 0px; 236 | position: absolute; 237 | top: -15px; 238 | left: 20px; 239 | border-top: 8px solid transparent; 240 | border-right: 8px solid transparent; 241 | border-bottom: 8px solid #777; 242 | border-left: 8px solid transparent; 243 | 244 | } 245 | 246 | .search-engine-list::after { 247 | content: ''; 248 | width: 70px; 249 | height: 18px; 250 | position: absolute; 251 | top: -17px; 252 | left: 1px; 253 | } 254 | 255 | .search-engine-list li { 256 | float: left; 257 | width: 80px; 258 | height: 30px; 259 | line-height: 30px; 260 | text-align: left; 261 | font-size: 14px; 262 | left: 15px; 263 | padding: 5px 10px 5px 10px; 264 | margin: 0 10px 10px 0; 265 | background: #333; 266 | color: rgb(216, 214, 214); 267 | cursor: pointer; 268 | list-style: none; 269 | position: relative; 270 | border-radius: 10px; 271 | text-overflow: ellipsis; 272 | overflow: hidden; 273 | white-space: nowrap; 274 | } 275 | 276 | .search-engine-list li img { 277 | width: 25px; 278 | height: 25px; 279 | border-radius: 15px; 280 | float: left; 281 | margin-right: 5px; 282 | margin-top: 2.5px; 283 | } 284 | 285 | .quick-div { 286 | margin: 0 auto; 287 | width: 100%; 288 | justify-content: left; 289 | overflow: hidden; 290 | } 291 | 292 | a.quick_div_a { 293 | font-size: 14px; 294 | } 295 | 296 | .quick { 297 | width: 17%; 298 | height: 40px; 299 | margin: 5px 3px; 300 | left: 30px; 301 | float: left; 302 | -webkit-tap-highlight-color: transparent; 303 | background: rgb(58, 56, 56); 304 | font-size: 16px; 305 | color: #AAAAAA; 306 | text-overflow:ellipsis; 307 | overflow: hidden; 308 | white-space: nowrap; 309 | line-height: 40px; 310 | text-align: center; 311 | text-indent: 30px; 312 | cursor: pointer; 313 | position: relative; 314 | border-radius: 20px; 315 | } 316 | 317 | .quick:active { 318 | background: rgb(45, 44, 44); 319 | box-shadow: 0 1px 20px 0 rgba(0, 0, 0, .1); 320 | } 321 | 322 | .quick i { 323 | position: absolute; 324 | display: block; 325 | width: 40px; 326 | height: 40px; 327 | left: 0; 328 | border-radius: 50%; 329 | background-size: cover; 330 | background-repeat: no-repeat; 331 | background-position: center; 332 | transform: scale(0.7); 333 | } 334 | 335 | .foot { 336 | position: absolute; 337 | bottom: 20px; 338 | z-index: 1000; 339 | text-align: center; 340 | width: 100%; 341 | color: rgb(172, 167, 167); 342 | height: 20px; 343 | line-height: 20px; 344 | font-size: 12px; 345 | } 346 | 347 | 348 | #menu { 349 | width: 50px; 350 | height: 50px; 351 | transform: scale(0.8); 352 | position: absolute; 353 | right: 10px; 354 | top: 5px; 355 | z-index: 2000000; 356 | cursor: pointer; 357 | transition: 0.5s ease-in-out; 358 | } 359 | 360 | #menu i { 361 | position: absolute; 362 | left: 0; 363 | right: 0; 364 | margin: 24px auto; 365 | width: 30px; 366 | height: 2px; 367 | background: #777; 368 | } 369 | 370 | #menu i:before { 371 | content: ''; 372 | width: 20px; 373 | height: 2px; 374 | top: -8px; 375 | background: #777; 376 | position: absolute; 377 | right: 0; 378 | } 379 | 380 | #menu i:after { 381 | content: ''; 382 | width: 20px; 383 | height: 2px; 384 | bottom: -8px; 385 | background: #777; 386 | position: absolute; 387 | left: 0; 388 | } 389 | 390 | #menu.on { 391 | right: 380px; 392 | background: #29f; 393 | border-radius: 25px; 394 | box-shadow: 0 6px 8px rgba(36, 159, 253, .3); 395 | } 396 | 397 | #menu.on i { 398 | width: 20px; 399 | background: #fff; 400 | } 401 | 402 | #menu.on i:before { 403 | top: -5px; 404 | transform: rotate(45deg); 405 | width: 14px; 406 | right: -1px; 407 | left: auto; 408 | background: #fff; 409 | } 410 | 411 | #menu.on i:after { 412 | bottom: -5px; 413 | transform: rotate(-45deg); 414 | width: 14px; 415 | right: -1px; 416 | left: auto; 417 | background: #fff; 418 | } 419 | 420 | .side { 421 | width: 357px; 422 | padding:0px 10px; 423 | height: 100%; 424 | position: absolute; 425 | right: 0px; 426 | z-index: 2000; 427 | background: #222d46; 428 | transition: 0.5s all ease-in-out; 429 | } 430 | 431 | .side.closed { 432 | right: -380px; 433 | } 434 | 435 | .tab-nav { 436 | overflow: hidden; 437 | height: 5%; 438 | } 439 | 440 | .tab-nav a { 441 | display: block; 442 | float: left; 443 | width: 60px; 444 | height: 30px; 445 | line-height: 30px; 446 | text-align: center; 447 | text-decoration: none; 448 | color: rgb(170, 163, 163); 449 | 450 | } 451 | 452 | .tab-nav a.current { 453 | background: rgba(0, 27, 26, 0.28); 454 | color: #dedbdb; 455 | } 456 | 457 | .tab-con { 458 | position: relative; 459 | width: 357px; 460 | height: 95%; 461 | overflow: hidden; 462 | } 463 | 464 | .j-tab-con { 465 | height: 100%; 466 | } 467 | 468 | .tab-con-item { 469 | height: 100%; 470 | width: 357px; 471 | display: none; 472 | overflow: hidden; 473 | overflow-y: auto; 474 | } 475 | 476 | .list ul { 477 | height: 100%; 478 | float: left; 479 | margin-bottom: 20px; 480 | 481 | } 482 | 483 | .list ul li { 484 | float: left; 485 | margin: 5px; 486 | width: 100px; 487 | height: 30px; 488 | text-align: left; 489 | line-height: 30px; 490 | } 491 | 492 | .list ul li a { 493 | width: 100%; 494 | border-radius: 5px; 495 | transition: 0.4s all linear; 496 | height: 100%; 497 | display: block; 498 | color: #BBBBBB; 499 | font-weight: 500; 500 | background: #293550; 501 | text-align: left; 502 | font-size: 12px; 503 | } 504 | 505 | .list ul li a i { 506 | margin-right: 5px; 507 | margin-left: 15px; 508 | transition: 0.4s all linear; 509 | } 510 | 511 | .list ul li a i.iconfont { 512 | font-size: 14px; 513 | } 514 | 515 | .list ul li:hover a { 516 | color: #fff; 517 | background-color: #29f; 518 | background-image: linear-gradient(135deg, rgba(35, 153, 255) 0%, rgba(84, 175, 253) 100%); 519 | box-shadow: 0 3px 3px rgba(0, 40, 70, .3); 520 | } 521 | 522 | .list ul li:hover a i { 523 | color: #fff !important; 524 | } 525 | 526 | .list ul li.title { 527 | width: 100%; 528 | height: 40px; 529 | line-height: 40px; 530 | margin: 10px 0 0; 531 | text-align: left; 532 | text-indent: 10px; 533 | /*border-bottom: 1px dashed #dedede;*/ 534 | color: #aaa; 535 | font-size: 18px; 536 | font-weight: bold; 537 | } 538 | 539 | .list ul li.title i { 540 | color: #29f; 541 | margin-right: 5px; 542 | font-weight: normal; 543 | } 544 | 545 | 546 | .set_blocks { 547 | background: rgb(221, 221, 221); 548 | margin-top: 10px; 549 | border-radius: 5px; 550 | } 551 | 552 | .set_blocks_title { 553 | font-size: 14px; 554 | background-color: rgb(65, 110, 152); 555 | color: #d2d2d2; 556 | padding: 10px 15px; 557 | border-top-right-radius: 5px; 558 | border-top-left-radius: 5px; 559 | } 560 | 561 | .set_blocks_content { 562 | font-size: 14px; 563 | padding: 10px 15px; 564 | background: #5d89b3; 565 | color: #ccc; 566 | } 567 | 568 | .set_blocks_content table { 569 | font-size: 14px; 570 | text-align:right; 571 | width:100%; 572 | border-collapse:collapse; 573 | } 574 | 575 | .set_blocks_content table tr td:nth-child(2) { 576 | text-align:left; 577 | } 578 | 579 | .set_blocks_content table tr td { 580 | border-bottom:1px solid; 581 | border-color: rgb(71, 144, 191); 582 | } 583 | 584 | .set_blocks_content button { 585 | background: none; 586 | border:1px solid rgba(72, 91, 94, 0); 587 | border-radius: 3px; 588 | } 589 | 590 | .set_blocks_content button:hover { 591 | border:1px solid #485b5e; 592 | } 593 | 594 | .set_blocks_content button:active { 595 | color: #fff; 596 | background-color: #599cff; 597 | } 598 | 599 | .set_blocks_content .se_add_preinstall { 600 | margin-top: 10px; 601 | text-align:center; 602 | } 603 | 604 | .set_blocks_content .se_add_preinstall button { 605 | width: 40%; 606 | height: 20px; 607 | border:1px solid #485b5e; 608 | border-radius: 3px; 609 | text-align:center; 610 | background: none; 611 | } 612 | 613 | .set_blocks_content .se_add_preinstall button:active { 614 | color: #fff; 615 | background-color: #599cff; 616 | } 617 | 618 | .add_content { 619 | border:1px solid #599cff; 620 | border-radius: 3px; 621 | margin-top: 10px; 622 | padding: 8px 12px; 623 | } 624 | 625 | .add_content .from_items { 626 | margin-top: 5px; 627 | margin-bottom: 5px; 628 | } 629 | 630 | .add_content input { 631 | width: 100%; 632 | } 633 | 634 | .add_content .button { 635 | text-align:center; 636 | } 637 | 638 | .add_content button { 639 | width: 30%; 640 | height: 20px; 641 | border:1px solid #485b5e; 642 | border-radius: 3px; 643 | text-align:center; 644 | background: none; 645 | margin:0px 10px; 646 | } 647 | 648 | .add_content .se_add_save:active { 649 | color: #fff; 650 | background-color: #21ff2c; 651 | } 652 | 653 | .add_content .se_add_cancel:active { 654 | color: #fff; 655 | background-color: #599cff; 656 | } 657 | 658 | .me { 659 | text-align: center; 660 | color: #fff; 661 | } 662 | 663 | .my_data { 664 | color: #fff; 665 | } 666 | 667 | .my_data textarea { 668 | width:100%; 669 | background: #565656; 670 | } 671 | 672 | 673 | 674 | @media (max-width: 720px) { 675 | .con { 676 | top: 0px; 677 | } 678 | .con .shlogo { 679 | width: 100px; 680 | height: 100px; 681 | } 682 | .con .sou form button { 683 | border-radius: 25px; 684 | } 685 | #menu.on { 686 | right: 270px; 687 | } 688 | .side { 689 | width: 227px; 690 | } 691 | .tab-con { 692 | width: 227px; 693 | } 694 | .tab-con-item { 695 | width: 227px; 696 | } 697 | .side ul { 698 | width: 220px; 699 | } 700 | .con .sou ul li { 701 | width: 23%; 702 | font-size: 12px; 703 | max-width: 116px; 704 | } 705 | .quick{ 706 | left: 0px; 707 | } 708 | .home, 709 | #menu { 710 | top: 5px; 711 | } 712 | ul{ 713 | margin-left: 25px !important; 714 | } 715 | } 716 | @media (max-width: 698px) { 717 | .con .sou ul li { 718 | width: 18.5%; 719 | } 720 | } 721 | @media (max-width: 609px) { 722 | .con .sou ul li { 723 | width: 22% !important; 724 | } 725 | ul{ 726 | margin-left: 30px !important; 727 | } 728 | } 729 | @media (max-width: 455px) { 730 | .con .sou ul li { 731 | width: 31% !important; 732 | } 733 | ul{ 734 | margin-left: 15px !important; 735 | } 736 | } 737 | @media (max-width: 400px) { 738 | ul{ 739 | margin-left: 10px !important; 740 | width: fit-content; 741 | } 742 | .con .sou ul li { 743 | width: 50px !important; 744 | margin: 10px; 745 | height: 50px !important; 746 | border-radius: 25px; 747 | } 748 | .quick i { 749 | width: 50px !important; 750 | height: 50px !important; 751 | } 752 | .con .sou ul li { 753 | margin: 5px !important; 754 | } 755 | div#txtq{ 756 | display: none !important; 757 | } 758 | } 759 | 760 | /* portrait */ 761 | @media screen and (orientation:portrait) { 762 | @media (max-width: 550px) { 763 | ul{ 764 | margin-left: auto !important; 765 | margin-right: auto !important; 766 | width: fit-content; 767 | } 768 | .con .sou ul li { 769 | width: 50px !important; 770 | margin: 10px; 771 | height: 50px !important; 772 | border-radius: 25px; 773 | } 774 | .quick i { 775 | width: 50px !important; 776 | height: 50px !important; 777 | } 778 | .con .sou ul li { 779 | margin: 5px !important; 780 | } 781 | div#txtq{ 782 | display: none !important; 783 | } 784 | } 785 | } 786 | 787 | @media (max-height: 420px) { 788 | .con { 789 | margin: 0; 790 | top: 0px; 791 | } 792 | .con .sou form .wd { 793 | text-indent: 50px; 794 | } 795 | .con .sou form:after { 796 | content: ""; 797 | display: block; 798 | width: 30px; 799 | height: 30px; 800 | position: absolute; 801 | left: 10px; 802 | top: 10px; 803 | /*background: url(icon/lg.svg) no-repeat center/cover;*/ 804 | border-radius: 50%; 805 | overflow: hidden; 806 | } 807 | .con .shlogo { 808 | display: none; 809 | } 810 | .home, 811 | .mywth, 812 | #menu, 813 | .theme-switch, 814 | .foot { 815 | display: none; 816 | } 817 | } 818 | 819 | ::-webkit-scrollbar { 820 | width: 6px; 821 | height: 6px; 822 | } 823 | 824 | ::-webkit-scrollbar-track { 825 | background: #222d46; 826 | border-radius: 0px; 827 | } 828 | 829 | ::-webkit-scrollbar-thumb { 830 | background: #293550; 831 | border-radius: 0px; 832 | } 833 | 834 | ::-webkit-scrollbar-thumb:hover { 835 | background: #293550; 836 | } 837 | 838 | ::-webkit-scrollbar-corner { 839 | background: #222d46; 840 | } 841 | .mywth { 842 | position: absolute; 843 | left: 20px; 844 | top: 15px; 845 | font-size: 12px; 846 | height: 20px; 847 | line-height: 20px; 848 | cursor: pointer; 849 | z-index: 1; 850 | height: 22px; 851 | } 852 | .mywth { 853 | color: #777; 854 | left: 10px; 855 | top: 20px; 856 | overflow: hidden; 857 | 858 | } 859 | 860 | .mywth.hidden { 861 | display: none; 862 | } 863 | .mywth { 864 | color: #bbb; 865 | } 866 | .hitokoto{ 867 | position: absolute; 868 | margin-top: 50px; 869 | z-index: 1000; 870 | text-align: center; 871 | width: 100%; 872 | color: #aaa9a9; 873 | height: 25px; 874 | line-height: 28px; 875 | font-size: 15px; 876 | } 877 | 878 | .theme-switch{ 879 | top: 20.5px; 880 | right: 75px; 881 | position: absolute!important; 882 | z-index: 2; 883 | } -------------------------------------------------------------------------------- /static/icon/Logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/Logo.ico -------------------------------------------------------------------------------- /static/icon/baidu.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/baidu.ico -------------------------------------------------------------------------------- /static/icon/bilibili.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/bilibili.png -------------------------------------------------------------------------------- /static/icon/bing.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/bing.ico -------------------------------------------------------------------------------- /static/icon/btn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/icon/btn2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/icon/doge_ico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/doge_ico.png -------------------------------------------------------------------------------- /static/icon/g.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 12 | 13 | 14 | 16 | 18 | 20 | 21 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /static/icon/github.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/github.ico -------------------------------------------------------------------------------- /static/icon/google_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/google_1.png -------------------------------------------------------------------------------- /static/icon/icon-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /static/icon/icon-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 13 | 15 | 17 | 19 | 20 | 22 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /static/icon/mijisou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/mijisou.png -------------------------------------------------------------------------------- /static/icon/right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/icon/scp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/scp.png -------------------------------------------------------------------------------- /static/icon/seeres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/seeres.png -------------------------------------------------------------------------------- /static/icon/steam.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/steam.ico -------------------------------------------------------------------------------- /static/icon/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/user.png -------------------------------------------------------------------------------- /static/icon/v2ex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/icon/v2ex.png -------------------------------------------------------------------------------- /static/images/aggregator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/aggregator.gif -------------------------------------------------------------------------------- /static/images/avatar-110x110.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/avatar-110x110.webp -------------------------------------------------------------------------------- /static/images/avatar-300x300.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/avatar-300x300.webp -------------------------------------------------------------------------------- /static/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/avatar.png -------------------------------------------------------------------------------- /static/images/avatar.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/avatar.webp -------------------------------------------------------------------------------- /static/images/avatar_night.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/avatar_night.png -------------------------------------------------------------------------------- /static/images/darkmode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/darkmode.gif -------------------------------------------------------------------------------- /static/images/search_engine.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/search_engine.gif -------------------------------------------------------------------------------- /static/images/server/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/android-chrome-192x192.png -------------------------------------------------------------------------------- /static/images/server/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/android-chrome-512x512.png -------------------------------------------------------------------------------- /static/images/server/apple-icon-114x114-dunplab-manifest-4403.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-icon-114x114-dunplab-manifest-4403.png -------------------------------------------------------------------------------- /static/images/server/apple-icon-180x180-dunplab-manifest-4403.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-icon-180x180-dunplab-manifest-4403.png -------------------------------------------------------------------------------- /static/images/server/apple-icon-57x57-dunplab-manifest-4403.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-icon-57x57-dunplab-manifest-4403.png -------------------------------------------------------------------------------- /static/images/server/apple-icon-60x60-dunplab-manifest-4403.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-icon-60x60-dunplab-manifest-4403.png -------------------------------------------------------------------------------- /static/images/server/apple-icon-76x76-dunplab-manifest-4403.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-icon-76x76-dunplab-manifest-4403.png -------------------------------------------------------------------------------- /static/images/server/apple-touch-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-touch-icon-114x114.png -------------------------------------------------------------------------------- /static/images/server/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /static/images/server/apple-touch-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-touch-icon-144x144.png -------------------------------------------------------------------------------- /static/images/server/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /static/images/server/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /static/images/server/apple-touch-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-touch-icon-57x57.png -------------------------------------------------------------------------------- /static/images/server/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /static/images/server/apple-touch-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-touch-icon-72x72.png -------------------------------------------------------------------------------- /static/images/server/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /static/images/server/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/apple-touch-icon.png -------------------------------------------------------------------------------- /static/images/server/avatar-110x110.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/avatar-110x110.webp -------------------------------------------------------------------------------- /static/images/server/avatar-300x300.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/avatar-300x300.webp -------------------------------------------------------------------------------- /static/images/server/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/avatar.png -------------------------------------------------------------------------------- /static/images/server/avatar.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/avatar.webp -------------------------------------------------------------------------------- /static/images/server/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/favicon-16x16.png -------------------------------------------------------------------------------- /static/images/server/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/favicon-32x32.png -------------------------------------------------------------------------------- /static/images/server/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/favicon.ico -------------------------------------------------------------------------------- /static/images/server/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/icon-128x128.png -------------------------------------------------------------------------------- /static/images/server/icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/icon-144x144.png -------------------------------------------------------------------------------- /static/images/server/icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/icon-152x152.png -------------------------------------------------------------------------------- /static/images/server/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/icon-192x192.png -------------------------------------------------------------------------------- /static/images/server/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/icon-384x384.png -------------------------------------------------------------------------------- /static/images/server/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/icon-512x512.png -------------------------------------------------------------------------------- /static/images/server/icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/icon-72x72.png -------------------------------------------------------------------------------- /static/images/server/icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/icon-96x96.png -------------------------------------------------------------------------------- /static/images/server/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/mstile-144x144.png -------------------------------------------------------------------------------- /static/images/server/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/mstile-150x150.png -------------------------------------------------------------------------------- /static/images/server/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 39 | 42 | 46 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /static/images/server/splash_screen.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzhonghao/lzh_web_start/c4c3f811c61c150961e163f5c7a1d83f8ba01bc0/static/images/server/splash_screen.gif -------------------------------------------------------------------------------- /static/js/defocus.js: -------------------------------------------------------------------------------- 1 | var _0xbcdf=["\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x74\x61\x67\x4E\x61\x6D\x65","\x61\x63\x74\x69\x76\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x69\x6E\x70\x75\x74","\x42\x4C\x55\x52\x52\x45\x44","\x6C\x6F\x67","\x62\x6C\x75\x72","\x73\x65\x74\x54\x69\x6D\x65\x6F\x75\x74","\x63\x6C\x69\x63\x6B","\x74\x61\x72\x67\x65\x74","\x49\x4E\x50\x55\x54","\x4D\x41\x4E\x55\x41\x4C\x20\x43\x4C\x49\x43\x4B","\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72","\x62\x6F\x64\x79","\x6B\x65\x79\x64\x6F\x77\x6E"];var maxTime=10;var timeoutInterval=5;var usedTime=0;var isManualFocus=false;function check(){if(!isManualFocus&& document[_0xbcdf[2]][_0xbcdf[1]][_0xbcdf[0]]()== _0xbcdf[3]){console[_0xbcdf[5]](_0xbcdf[4]);document[_0xbcdf[2]][_0xbcdf[6]]()};usedTime+= timeoutInterval;if(usedTime< maxTime){window[_0xbcdf[7]](check,timeoutInterval)}}check();document[_0xbcdf[13]][_0xbcdf[12]](_0xbcdf[8],function(_0x45a9x6){if(_0x45a9x6[_0xbcdf[9]][_0xbcdf[1]]== _0xbcdf[10]){console[_0xbcdf[5]](_0xbcdf[11]);isManualFocus= true}});document[_0xbcdf[13]][_0xbcdf[12]](_0xbcdf[14],function(_0x45a9x6){isManualFocus= true}) 2 | -------------------------------------------------------------------------------- /static/js/jQuery.rTabs.js: -------------------------------------------------------------------------------- 1 | 2 | (function($){ 3 | 4 | $.fn.rTabs = function(options){ 5 | 6 | //默认值 7 | var defaultVal = { 8 | btnClass:'.j-tab-nav', /*按钮的父级Class*/ 9 | conClass:'.j-tab-con', /*内容的父级Class*/ 10 | bind:'hover', /*事件参数 click,hover*/ 11 | animation:'0', /*动画方向 left,up,fadein,0 为无动画*/ 12 | speed:300, /*动画运动速度*/ 13 | delay:200, /*Tab延迟速度*/ 14 | auto:false, /*是否开启自动运行 true,false*/ 15 | autoSpeed:3000 /*自动运行速度*/ 16 | }; 17 | 18 | //全局变量 19 | var obj = $.extend(defaultVal, options), 20 | evt = obj.bind, 21 | btn = $(this).find(obj.btnClass), 22 | con = $(this).find(obj.conClass), 23 | anim = obj.animation, 24 | conWidth = con.width(), 25 | conHeight = con.height(), 26 | len = con.children().length, 27 | sw = len * conWidth, 28 | sh = len * conHeight, 29 | i = 0, 30 | len,t,timer; 31 | 32 | return this.each(function(){ 33 | 34 | //判断动画方向 35 | function judgeAnim(){ 36 | var w = i * conWidth, 37 | h = i * conHeight; 38 | btn.children().removeClass('current').eq(i).addClass('current'); 39 | switch(anim){ 40 | case '0': 41 | con.children().hide().eq(i).show(); 42 | break; 43 | case 'left': 44 | con.css({position:'absolute',width:sw}).children().css({float:'left',display:'block'}).end().stop().animate({left:-w},obj.speed); 45 | break; 46 | case 'up': 47 | con.css({position:'absolute',height:sh}).children().css({display:'block'}).end().stop().animate({top:-h},obj.speed); 48 | break; 49 | case 'fadein': 50 | con.children().hide().eq(i).fadeIn(); 51 | break; 52 | } 53 | } 54 | 55 | //判断事件类型 56 | if(evt == "hover"){ 57 | btn.children().hover(function(){ 58 | var j = $(this).index(); 59 | function s(){ 60 | i = j; 61 | judgeAnim(); 62 | } 63 | timer=setTimeout(s,obj.delay); 64 | }, function(){ 65 | clearTimeout(timer); 66 | }) 67 | }else{ 68 | btn.children().bind(evt,function(){ 69 | i = $(this).index(); 70 | judgeAnim(); 71 | }) 72 | } 73 | 74 | //自动运行 75 | function startRun(){ 76 | t = setInterval(function(){ 77 | i++; 78 | if(i>=len){ 79 | switch(anim){ 80 | case 'left': 81 | con.stop().css({left:conWidth}); 82 | break; 83 | case 'up': 84 | con.stop().css({top:conHeight}); 85 | } 86 | i=0; 87 | } 88 | judgeAnim(); 89 | },obj.autoSpeed) 90 | } 91 | 92 | //如果自动运行开启,调用自动运行函数 93 | if(obj.auto){ 94 | $(this).hover(function(){ 95 | clearInterval(t); 96 | },function(){ 97 | startRun(); 98 | }) 99 | startRun(); 100 | } 101 | 102 | }) 103 | 104 | } 105 | 106 | })(jQuery); -------------------------------------------------------------------------------- /static/js/js.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * JavaScript Cookie v2.2.1 3 | * https://github.com/js-cookie/js-cookie 4 | */ 5 | ;(function (factory) { 6 | var registeredInModuleLoader; 7 | if (typeof define === 'function' && define.amd) { 8 | define(factory); 9 | registeredInModuleLoader = true; 10 | } 11 | if (typeof exports === 'object') { 12 | module.exports = factory(); 13 | registeredInModuleLoader = true; 14 | } 15 | if (!registeredInModuleLoader) { 16 | var OldCookies = window.Cookies; 17 | var api = window.Cookies = factory(); 18 | api.noConflict = function () { 19 | window.Cookies = OldCookies; 20 | return api; 21 | }; 22 | } 23 | }(function () { 24 | function extend () { 25 | var i = 0; 26 | var result = {}; 27 | for (; i < arguments.length; i++) { 28 | var attributes = arguments[ i ]; 29 | for (var key in attributes) { 30 | result[key] = attributes[key]; 31 | } 32 | } 33 | return result; 34 | } 35 | 36 | function decode (s) { 37 | return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent); 38 | } 39 | 40 | function init (converter) { 41 | function api() {} 42 | 43 | function set (key, value, attributes) { 44 | if (typeof document === 'undefined') { 45 | return; 46 | } 47 | 48 | attributes = extend({ 49 | path: '/' 50 | }, api.defaults, attributes); 51 | 52 | if (typeof attributes.expires === 'number') { 53 | attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5); 54 | } 55 | 56 | // We're using "expires" because "max-age" is not supported by IE 57 | attributes.expires = attributes.expires ? attributes.expires.toUTCString() : ''; 58 | 59 | try { 60 | var result = JSON.stringify(value); 61 | if (/^[\{\[]/.test(result)) { 62 | value = result; 63 | } 64 | } catch (e) {} 65 | 66 | value = converter.write ? 67 | converter.write(value, key) : 68 | encodeURIComponent(String(value)) 69 | .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); 70 | 71 | key = encodeURIComponent(String(key)) 72 | .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent) 73 | .replace(/[\(\)]/g, escape); 74 | 75 | var stringifiedAttributes = ''; 76 | for (var attributeName in attributes) { 77 | if (!attributes[attributeName]) { 78 | continue; 79 | } 80 | stringifiedAttributes += '; ' + attributeName; 81 | if (attributes[attributeName] === true) { 82 | continue; 83 | } 84 | 85 | // Considers RFC 6265 section 5.2: 86 | // ... 87 | // 3. If the remaining unparsed-attributes contains a %x3B (";") 88 | // character: 89 | // Consume the characters of the unparsed-attributes up to, 90 | // not including, the first %x3B (";") character. 91 | // ... 92 | stringifiedAttributes += '=' + attributes[attributeName].split(';')[0]; 93 | } 94 | 95 | return (document.cookie = key + '=' + value + stringifiedAttributes); 96 | } 97 | 98 | function get (key, json) { 99 | if (typeof document === 'undefined') { 100 | return; 101 | } 102 | 103 | var jar = {}; 104 | // To prevent the for loop in the first place assign an empty array 105 | // in case there are no cookies at all. 106 | var cookies = document.cookie ? document.cookie.split('; ') : []; 107 | var i = 0; 108 | 109 | for (; i < cookies.length; i++) { 110 | var parts = cookies[i].split('='); 111 | var cookie = parts.slice(1).join('='); 112 | 113 | if (!json && cookie.charAt(0) === '"') { 114 | cookie = cookie.slice(1, -1); 115 | } 116 | 117 | try { 118 | var name = decode(parts[0]); 119 | cookie = (converter.read || converter)(cookie, name) || 120 | decode(cookie); 121 | 122 | if (json) { 123 | try { 124 | cookie = JSON.parse(cookie); 125 | } catch (e) {} 126 | } 127 | 128 | jar[name] = cookie; 129 | 130 | if (key === name) { 131 | break; 132 | } 133 | } catch (e) {} 134 | } 135 | 136 | return key ? jar[key] : jar; 137 | } 138 | 139 | api.set = set; 140 | api.get = function (key) { 141 | return get(key, false /* read as raw */); 142 | }; 143 | api.getJSON = function (key) { 144 | return get(key, true /* read as json */); 145 | }; 146 | api.remove = function (key, attributes) { 147 | set(key, '', extend(attributes, { 148 | expires: -1 149 | })); 150 | }; 151 | 152 | api.defaults = {}; 153 | 154 | api.withConverter = init; 155 | 156 | return api; 157 | } 158 | 159 | return init(function () {}); 160 | })); 161 | -------------------------------------------------------------------------------- /static/js/latency.js: -------------------------------------------------------------------------------- 1 | var _0x8d31=["\x68\x74\x74\x70\x3A\x2F\x2F\x68\x6F\x6C\x67\x65\x72\x2E\x6E\x65\x74\x2E\x63\x6E","\x70\x69\x6E\x67\x2B\x2B","\x6C\x65\x6E\x67\x74\x68","\x54\x65\x73\x74\x69\x6E\x67\x2E\x2E\x2E","\x68\x74\x6D\x6C","\x70\x69\x6E\x67","\x66\x69\x6E\x64","\x65\x71","\x70\x73\x73","\x3C\x69\x6D\x67\x20\x73\x72\x63\x3D\x27\x68\x74\x74\x70\x73\x3A\x2F\x2F\x69\x2E\x68\x6F\x6C\x67\x65\x72\x2E\x6E\x65\x74\x2E\x63\x6E\x2F\x70\x69\x6E\x67\x27\x20\x77\x69\x64\x74\x68\x3D\x27\x31\x27\x20\x68\x65\x69\x67\x68\x74\x3D\x27\x31\x27\x20\x6F\x6E\x65\x72\x72\x6F\x72\x3D\x27\x61\x75\x74\x6F\x74\x65\x73\x74\x28","\x29\x27\x20\x73\x74\x79\x6C\x65\x3D\x27\x64\x69\x73\x70\x6C\x61\x79\x3A\x6E\x6F\x6E\x65\x27\x3E","\x61\x70\x70\x65\x6E\x64","\x6D\x73","\x74\x65\x78\x74"];var ping=1,urlList=[_0x8d31[0]];setInterval(_0x8d31[1],100);newRequest();function newRequest(){for(var _0x9121x4=0;_0x9121x4< urlList[_0x8d31[2]];_0x9121x4++){$(_0x8d31[8])[_0x8d31[7]](_0x9121x4)[_0x8d31[6]](_0x8d31[5])[_0x8d31[4]](_0x8d31[3]);$(_0x8d31[8])[_0x8d31[7]](_0x9121x4)[_0x8d31[6]](_0x8d31[5])[_0x8d31[11]](_0x8d31[9]+ _0x9121x4+ _0x8d31[10])}}function autotest(_0x9121x4){$(_0x8d31[8])[_0x8d31[7]](_0x9121x4)[_0x8d31[6]](_0x8d31[5])[_0x8d31[13]](ping* 10+ _0x8d31[12])} 2 | -------------------------------------------------------------------------------- /static/js/orientation.js: -------------------------------------------------------------------------------- 1 | /* Deprecated */ 2 | var mql = window.matchMedia('(orientation: portrait)'); 3 | console.log(mql); 4 | function onMatchMediaChange(mql){ 5 | if(mql.matches){ 6 | $("txtq").css("background-color","none"); 7 | console.log('Portrait enabled.') 8 | }else{ 9 | $("txtq").removeClass("quick_hid"); 10 | console.log('Landscape activated.') 11 | } 12 | } 13 | onMatchMediaChange(mql); 14 | mql.addListener(onMatchMediaChange); 15 | -------------------------------------------------------------------------------- /static/js/sou.js: -------------------------------------------------------------------------------- 1 | /* 2 | https://github.com/5iux/sou 3 | https://github.com/yeetime/sou2 4 | */ 5 | 6 | $(document).ready(function() { 7 | 8 | //搜索引擎列表【预设】 9 | var se_list_preinstall = { 10 | '1':{ 11 | id :1, 12 | title :"Google", 13 | url :"https://www.google.com/search", 14 | name :"q", 15 | img :"./static/icon/google_1.png", 16 | 17 | }, 18 | '2':{ 19 | id :2, 20 | title :"百度", 21 | url :"https://www.baidu.com/s", 22 | name :"wd", 23 | img :"./static/icon/baidu.ico", 24 | }, 25 | '3':{ 26 | id :3, 27 | title :"Bing CN", 28 | url :"https://cn.bing.com/search", 29 | name :"q", 30 | img :"./static/icon/bing.ico", 31 | }, 32 | '4':{ 33 | id :4, 34 | title :"多吉", 35 | url :"https://www.dogedoge.com/results", 36 | name :"q", 37 | img :"./static/icon/doge_ico.png", 38 | }, 39 | '5':{ 40 | id :5, 41 | title :"秘迹", 42 | url :"https://mijisou.com", 43 | name :"q", 44 | img :"./static/icon/mijisou.png", 45 | }, 46 | '6':{ 47 | id :6, 48 | title :"seeres*", 49 | url :"https://seeres.com/search", 50 | name :"q", 51 | img :"./static/icon/seeres.png", 52 | }, 53 | }; 54 | 55 | //主页快捷方式【预设】 56 | var quick_list_preinstall = { 57 | '1':{ 58 | title :"Blog", 59 | url :"https://blog.holger.net.cn/", 60 | img :"https://i.holger.net.cn/static/images/avatar-300x300.webp", 61 | explain :"Holger's Blog", 62 | }, 63 | '2':{ 64 | title :"Island", 65 | url :"https://mast.dragon-fly.club", 66 | img :"https://mast.dragon-fly.club/favicon.ico", 67 | explain :"Island 岛屿 | 一座属于你的岛屿", 68 | 69 | }, 70 | '3':{ 71 | title :"V2EX", 72 | url :"https://www.v2ex.com/", 73 | img :"./static/icon/v2ex.png", 74 | explain :"V2EX", 75 | }, 76 | '4':{ 77 | title :"Steam", 78 | url :"https://store.steampowered.com/", 79 | img :"./static/icon/steam.ico", 80 | explain :"Steam", 81 | }, 82 | '5':{ 83 | title :"GitHub", 84 | url :"https://github.com/", 85 | img :"./static/icon/github.ico", 86 | explain :"GitHub", 87 | }, 88 | }; 89 | 90 | //搜索框数据加载 91 | searchData(); 92 | 93 | //快捷方式数据加载 94 | quickData(); 95 | 96 | //判断窗口大小,添加输入框自动完成 97 | var wid = $("body").width(); 98 | if (wid < 640) { 99 | $(".wd").attr('autocomplete', 'off'); 100 | }else{ 101 | $(".wd").focus(); 102 | } 103 | 104 | //设置内容加载 105 | setSeInit();//搜索引擎设置 106 | setQuickInit();//快捷方式设置 107 | 108 | 109 | //获取搜索引擎列表 110 | function getSeList() { 111 | var se_list_local = Cookies.get('se_list'); 112 | if (se_list_local !== "{}"&&se_list_local) { 113 | return JSON.parse(se_list_local); 114 | } else { 115 | setSeList (se_list_preinstall); 116 | return se_list_preinstall; 117 | } 118 | } 119 | 120 | //设置搜索引擎列表 121 | function setSeList (se_list) { 122 | if(se_list){ 123 | Cookies.set('se_list', se_list, { expires: 36500 }); 124 | return true; 125 | } 126 | return false; 127 | } 128 | 129 | //选择搜索引擎点击事件 130 | $(document).on('click',function(e){ 131 | if($(".search-engine").is(":hidden") && $(".se").is(e.target)){ 132 | if ($(".se").is(e.target)) { 133 | seList(); 134 | $(".search-engine").show(); 135 | } 136 | }else{ 137 | if (!$(".search-engine").is(e.target) && $(".search-engine").has(e.target).length === 0) { 138 | $(".search-engine").hide(); 139 | } 140 | } 141 | }); 142 | 143 | //搜索引擎列表点击 144 | $(".search-engine-list").on("click",".se-li",function(){ 145 | var url = $(this).attr('url'); 146 | var name = $(this).attr('name'); 147 | var img = $(this).attr('img'); 148 | $(".search").attr("action",url); 149 | $(".wd").attr("name",name); 150 | $(".se").attr("src",img); 151 | $(".search-engine").hide(); 152 | }); 153 | 154 | //菜单点击 155 | $("#menu").click(function(event) { 156 | $(this).toggleClass('on'); 157 | $(".side").toggleClass('closed'); 158 | }); 159 | $("#content").click(function(event) { 160 | $(".on").removeClass('on'); 161 | $(".side").addClass('closed'); 162 | }); 163 | 164 | // 侧栏标签卡切换 165 | $(".side").rTabs({ 166 | bind: 'click', 167 | animation: 'left' 168 | }); 169 | 170 | //修改默认搜索引擎 171 | $(".se_list_table").on("click",".set_se_default",function(){ 172 | var name = $(this).val(); 173 | Cookies.set('se_default', name, { expires: 36500 }); 174 | setSeInit(); 175 | }); 176 | 177 | //获得默认搜索引擎 178 | function getSeDefault(){ 179 | var se_default = Cookies.get('se_default'); 180 | return se_default?se_default:1; 181 | } 182 | 183 | //搜索框数据加载 184 | function searchData() { 185 | var se_default =getSeDefault(); 186 | var se_list = getSeList(); 187 | var defaultSe = se_list[se_default]; 188 | if (defaultSe){ 189 | $(".search").attr("action", defaultSe["url"]); 190 | $(".se").attr("src", defaultSe["img"]); 191 | $(".wd").attr("name", defaultSe["name"]); 192 | } 193 | 194 | } 195 | 196 | //搜索引擎列表加载 197 | function seList() { 198 | var html = ""; 199 | var se_list = getSeList(); 200 | for(var i in se_list){ 201 | html+="
  • "+se_list[i]["title"]+"
  • "; 202 | } 203 | $(".search-engine-list").html(html); 204 | } 205 | 206 | //设置-搜索引擎列表加载 207 | function setSeInit () { 208 | var se_default = getSeDefault(); 209 | var se_list = getSeList(); 210 | var html = ""; 211 | for(var i in se_list){ 212 | var tr = ""; 213 | if(i == se_default){ 214 | tr =""; 215 | } 216 | tr += ""+i+". "+ se_list[i]["title"] +" "; 217 | html+=tr; 218 | } 219 | $(".se_list_table").html(html); 220 | } 221 | 222 | //搜索引擎添加 223 | $(".set_se_list_add").click(function () { 224 | $(".se_add_content input").val(""); 225 | $(".se_add_content").show(); 226 | }); 227 | 228 | //搜索引擎保存 229 | $(".se_add_save").click(function () { 230 | var key_inhere = $(".se_add_content input[name='key_inhere']").val(); 231 | var key = $(".se_add_content input[name='key']").val(); 232 | var title = $(".se_add_content input[name='title']").val(); 233 | var url = $(".se_add_content input[name='url']").val(); 234 | var name = $(".se_add_content input[name='name']").val(); 235 | var img = $(".se_add_content input[name='img']").val(); 236 | 237 | var num = /^\+?[1-9][0-9]*$/; 238 | if (!num.test(key)){ 239 | alert("Sequence "+key+" is invalid!"); 240 | return; 241 | } 242 | 243 | var se_list = getSeList(); 244 | 245 | if (se_list[key]) { 246 | alert("Sequence "+key+" has been taken!"); 247 | return; 248 | } 249 | 250 | if (key_inhere && key != key_inhere) { 251 | delete se_list[key_inhere]; 252 | } 253 | 254 | se_list[key] = { 255 | title: title, 256 | url: url, 257 | name: name, 258 | img: img, 259 | }; 260 | setSeList(se_list); 261 | setSeInit(); 262 | $(".se_add_content").hide(); 263 | 264 | }); 265 | 266 | //关闭表单 267 | $(".se_add_cancel").click(function () { 268 | $(".se_add_content").hide(); 269 | }); 270 | 271 | //搜索引擎修改 272 | $(".se_list").on("click",".edit_se",function(){ 273 | 274 | var se_list = getSeList(); 275 | var key = $(this).val(); 276 | $(".se_add_content input[name='key_inhere']").val(key); 277 | $(".se_add_content input[name='key']").val(key); 278 | $(".se_add_content input[name='title']").val(se_list[key]["title"]); 279 | $(".se_add_content input[name='url']").val(se_list[key]["url"]); 280 | $(".se_add_content input[name='name']").val(se_list[key]["name"]); 281 | $(".se_add_content input[name='img']").val(se_list[key]["img"]); 282 | 283 | $(".se_add_content").show(); 284 | }); 285 | 286 | //搜索引擎删除 287 | $(".se_list").on("click",".delete_se",function(){ 288 | var se_default = getSeDefault(); 289 | var key = $(this).val(); 290 | if (key==se_default){ 291 | alert("Cannot delete default search engine!"); 292 | } else { 293 | var r = confirm("Delete sequence "+key+" ?"); 294 | if (r) { 295 | var se_list = getSeList(); 296 | delete se_list[key]; 297 | setSeList(se_list); 298 | setSeInit(); 299 | } 300 | } 301 | }); 302 | 303 | //恢复预设搜索引擎 304 | $(".set_se_list_preinstall").click(function () { 305 | var r=confirm("Current settings will be removed! (You'd better backup before performing this)"); 306 | if (r) { 307 | setSeList (se_list_preinstall); 308 | Cookies.set('se_default', 1, { expires: 36500 }); 309 | setSeInit(); 310 | } 311 | }); 312 | 313 | //获取快捷方式列表 314 | function getQuickList() { 315 | var quick_list_local = Cookies.get('quick_list'); 316 | if (quick_list_local !== "{}" && quick_list_local) { 317 | return JSON.parse(quick_list_local); 318 | } else { 319 | setQuickList(quick_list_preinstall); 320 | return quick_list_preinstall; 321 | } 322 | } 323 | 324 | //设置快捷方式列表 325 | function setQuickList(quick_list) { 326 | if(quick_list){ 327 | Cookies.set('quick_list', quick_list, {expires: 36500}); 328 | return true; 329 | } 330 | return false; 331 | } 332 | 333 | //快捷方式数据加载 334 | function quickData() { 335 | var html = ""; 336 | var quick_list = getQuickList(); 337 | for (var i in quick_list) { 338 | html += "
  • \ 339 | \ 340 |
    \ 341 | "+quick_list[i]['title']+"\
    \ 342 |
    \ 343 |
  • "; 344 | } 345 | $(".quick-ul").html(html); 346 | } 347 | 348 | //设置-快捷方式加载 349 | function setQuickInit () { 350 | 351 | var quick_list = getQuickList(); 352 | var html = ""; 353 | for(var i in quick_list){ 354 | tr ="\ 355 | "+i+". \ 356 | "+quick_list[i]['title']+"\ 357 | \ 358 | \ 359 |  \ 360 | \ 361 | \ 362 | "; 363 | html+=tr; 364 | } 365 | $(".quick_list_table").html(html); 366 | } 367 | 368 | //设置-快捷方式添加 369 | $(".set_quick_list_add").click(function () { 370 | $(".quick_add_content input").val(""); 371 | $(".quick_add_content").show(); 372 | }); 373 | 374 | //设置-快捷方式保存 375 | $(".quick_add_save").click(function () { 376 | var key_inhere = $(".quick_add_content input[name='key_inhere']").val(); 377 | var key = $(".quick_add_content input[name='key']").val(); 378 | var title = $(".quick_add_content input[name='title']").val(); 379 | var url = $(".quick_add_content input[name='url']").val(); 380 | var img = $(".quick_add_content input[name='img']").val(); 381 | 382 | var num = /^\+?[1-9][0-9]*$/; 383 | if (!num.test(key)){ 384 | alert("Sequence "+key+" is invalid!"); 385 | return; 386 | } 387 | 388 | var quick_list = getQuickList(); 389 | 390 | if (quick_list[key]) { 391 | alert("Sequence "+key+" has been taken!"); 392 | return; 393 | } 394 | 395 | if (key_inhere && key != key_inhere) { 396 | delete quick_list[key_inhere]; 397 | } 398 | 399 | quick_list[key] = { 400 | title: title, 401 | url: url, 402 | img: img, 403 | }; 404 | setQuickList(quick_list); 405 | setQuickInit(); 406 | $(".quick_add_content").hide(); 407 | }); 408 | 409 | //设置-快捷方式关闭添加表单 410 | $(".quick_add_cancel").click(function () { 411 | $(".quick_add_content").hide(); 412 | }); 413 | 414 | //恢复预设快捷方式 415 | $(".set_quick_list_preinstall").click(function () { 416 | var r=confirm("Current settings will be removed! (You'd better backup before performing this)"); 417 | if (r) { 418 | setQuickList (quick_list_preinstall); 419 | setQuickInit(); 420 | } 421 | }); 422 | 423 | //快捷方式修改 424 | $(".quick_list").on("click",".edit_quick",function(){ 425 | 426 | var quick_list = getQuickList(); 427 | var key = $(this).val(); 428 | $(".quick_add_content input[name='key_inhere']").val(key); 429 | $(".quick_add_content input[name='key']").val(key); 430 | $(".quick_add_content input[name='title']").val(quick_list[key]["title"]); 431 | $(".quick_add_content input[name='url']").val(quick_list[key]["url"]); 432 | $(".quick_add_content input[name='img']").val(quick_list[key]["img"]); 433 | 434 | $(".quick_add_content").show(); 435 | }); 436 | 437 | //快捷方式删除 438 | $(".quick_list").on("click",".delete_quick",function(){ 439 | 440 | var key = $(this).val(); 441 | 442 | var r = confirm("Delete sequence "+key+" ?"); 443 | if (r) { 444 | var quick_list = getQuickList(); 445 | delete quick_list[key]; 446 | setQuickList(quick_list); 447 | setQuickInit(); 448 | } 449 | }); 450 | 451 | //我的数据导出 452 | $("#my_data_out").click(function () { 453 | var se = getSeList(); 454 | var se_default = getSeDefault(); 455 | var quick = getQuickList(); 456 | 457 | var mydata = {"se":se,"se_default":se_default,"quick":quick}; 458 | var json = JSON.stringify(mydata); 459 | $("#data_txt").val(json); 460 | }); 461 | 462 | //我的数据导入 463 | $("#my_data_in").click(function () { 464 | var json = $("#data_txt").val(); 465 | 466 | //json 格式校验 467 | try { 468 | var mydata = JSON.parse(json); 469 | } catch (e) { 470 | alert("Invalid backup!"); 471 | black; 472 | } 473 | if (typeof mydata != 'object') { 474 | alert("Invalid format!"); 475 | black; 476 | } 477 | 478 | if(confirm("Current settings will be erased, continue?")){ 479 | setSeList(mydata["se"]); 480 | if (mydata["se_default"]) { 481 | Cookies.set('se_default', mydata["se_default"], {expires: 36500}); 482 | } 483 | setQuickList(mydata["quick"]); 484 | 485 | searchData(); 486 | quickData(); 487 | setSeInit(); 488 | setQuickInit(); 489 | 490 | alert("Success!"); 491 | } 492 | 493 | }); 494 | }); 495 | -------------------------------------------------------------------------------- /static/js/theme_auto.js: -------------------------------------------------------------------------------- 1 | const hasNativePrefersColorScheme = 2 | window.matchMedia('(prefers-color-scheme)').media !== 'not all'; 3 | let theme_value = localStorage.getItem('theme'), 4 | daily_theme_list = [], dark_theme_list = []; 5 | 6 | daily_theme_list.push(document.getElementById('daily-theme')); 7 | dark_theme_list.push(document.getElementById('dark-theme')); 8 | let loadMode = function(mode) { 9 | if (mode !== "daily" && mode !== "dark") return; 10 | daily_theme_list.forEach((obj) => { 11 | if (mode === "daily") { 12 | if (obj.hasAttribute('disabled')) { 13 | obj.removeAttribute('disabled'); 14 | } 15 | obj.setAttribute('media', 'all'); 16 | } else { 17 | obj.setAttribute('disabled', ''); 18 | obj.setAttribute('media', obj.getAttribute('data-original-media')); 19 | } 20 | }); 21 | dark_theme_list.forEach((obj) => { 22 | if (mode === "daily") { 23 | obj.setAttribute('disabled', ''); 24 | obj.setAttribute('media', obj.getAttribute('data-original-media')); 25 | } else { 26 | if (obj.hasAttribute('disabled')) { 27 | obj.removeAttribute('disabled'); 28 | } 29 | obj.setAttribute('media', 'all'); 30 | } 31 | }); 32 | localStorage.setItem('theme', mode); 33 | theme_value = mode; 34 | }; 35 | window.matchMedia('(prefers-color-scheme: dark)').addListener(({matches}) => { 36 | dispatchEvent(new CustomEvent("colorschemechange", { 37 | detail: {colorScheme: (matches ? "dark" : "daily")} 38 | })); 39 | }); 40 | if(Cookies.get('theme')!=="1"&&Cookies.get('theme')!=="0"){ 41 | if ((window.matchMedia('(prefers-color-scheme: light)').matches) || 42 | (window.matchMedia('(prefers-color-scheme: no-preference)').matches)) { 43 | $("#theme-switch-icon").attr("src", "static/icon/icon-light.svg"); 44 | Cookies.set('theme',2, { expires: 1 }); 45 | } else if (window.matchMedia('(prefers-color-scheme: dark)').matches) { 46 | $("#theme-switch-icon").attr("src", "static/icon/icon-dark.svg"); 47 | Cookies.set('theme',3, { expires: 1 }); 48 | } 49 | window.addEventListener('colorschemechange', (e) => { 50 | if(e.detail.colorScheme == "dark"){ 51 | if(Cookies.get('theme')!=="1"&&Cookies.get('theme')!=="0"){ 52 | $("#theme-switch-icon").attr("src", "static/icon/icon-dark.svg")} 53 | Cookies.set('theme',3, { expires: 1 }); 54 | } 55 | if(e.detail.colorScheme == "daily"){ 56 | if(Cookies.get('theme')!=="1"&&Cookies.get('theme')!=="0"){ 57 | $("#theme-switch-icon").attr("src", "static/icon/icon-light.svg")} 58 | Cookies.set('theme',2, { expires: 1 }); 59 | } 60 | }); 61 | } 62 | -------------------------------------------------------------------------------- /static/js/theme_manual.js: -------------------------------------------------------------------------------- 1 | /* manual switch*/ 2 | function themeDark(){$('head').append('');} 3 | function themeLight(){$('head').append('');} 4 | function initThemeSwitch(){ 5 | theme = Cookies.get('theme'); 6 | if(theme == '1'){ 7 | $("#theme-switch-icon").attr("src", "static/icon/icon-dark.svg"); 8 | } 9 | if(theme == '0'){ 10 | $("#theme-switch-icon").attr("src", "static/icon/icon-light.svg"); 11 | } 12 | } 13 | function initTheme(){ 14 | theme = Cookies.get('theme'); 15 | if(theme =='1'){ 16 | themeDark(); 17 | } 18 | if(theme == '0'){ 19 | themeLight(); 20 | } 21 | initThemeSwitch(); 22 | } 23 | initTheme(); 24 | 25 | $(document).ready(function(){ 26 | theme = Cookies.get('theme'); 27 | $("#theme-switch").click(function() { 28 | if(theme =='1' || theme == '3'){ 29 | Cookies.set('theme',0, { expires: 1 }); 30 | themeLight(); 31 | $("#theme-switch-icon").attr("src", "static/icon/icon-light.svg"); 32 | }if(theme == "0" || theme == '2'){ 33 | Cookies.set('theme', '1', { expires: 1 }); 34 | themeDark(); 35 | $("#theme-switch-icon").attr("src", "static/icon/icon-dark.svg"); 36 | } 37 | initThemeSwitch(); 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"Minimalist Search", 3 | "short_name":"Search", 4 | "theme_color":"#f5f5f5", 5 | "background_color":"#f5f5f5", 6 | "display":"standalone", 7 | "scope":"/", 8 | "start_url":"/", 9 | "icons":[ { 10 | "src": "images/server/icon-72x72.png", 11 | "sizes": "72x72", 12 | "type": "image/png" 13 | } 14 | , 15 | { 16 | "src": "images/server/icon-96x96.png", 17 | "sizes": "96x96", 18 | "type": "image/png" 19 | } 20 | , 21 | { 22 | "src": "images/server/icon-128x128.png", 23 | "sizes": "128x128", 24 | "type": "image/png" 25 | } 26 | , 27 | { 28 | "src": "images/server/icon-144x144.png", 29 | "sizes": "144x144", 30 | "type": "image/png" 31 | } 32 | , 33 | { 34 | "src": "images/server/icon-152x152.png", 35 | "sizes": "152x152", 36 | "type": "image/png" 37 | } 38 | , 39 | { 40 | "src": "images/server/icon-192x192.png", 41 | "sizes": "192x192", 42 | "type": "image/png" 43 | } 44 | , 45 | { 46 | "src": "images/server/icon-384x384.png", 47 | "sizes": "384x384", "type": 48 | "image/png" 49 | } 50 | , 51 | { 52 | "src": "images/server/icon-512x512.png", 53 | "sizes": "512x512", 54 | "type": "image/png" 55 | } 56 | ], 57 | "splash_pages":"images/server/splash_screen.gif" 58 | } --------------------------------------------------------------------------------