├── 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 |
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,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') 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 |
20 |
21 | - Unicode
22 | - Font class
23 | - Symbol
24 |
25 |
26 |
查看项目
27 |
28 |
29 |
30 |
31 |
32 |
33 | -
34 |
35 |
home
36 | 
37 |
38 |
39 | -
40 |
41 |
警告
42 | 
43 |
44 |
45 | -
46 |
47 |
添加
48 | 
49 |
50 |
51 | -
52 |
53 |
close
54 | 
55 |
56 |
57 | -
58 |
59 |
user
60 | 
61 |
62 |
63 | -
64 |
65 |
edit
66 | 
67 |
68 |
69 | -
70 |
71 |
delete
72 | 
73 |
74 |
75 | -
76 |
77 |
align-left
78 | 
79 |
80 |
81 | -
82 |
83 |
plus
84 | 
85 |
86 |
87 | -
88 |
89 |
strore-add
90 | 
91 |
92 |
93 | -
94 |
95 |
set
96 | 
97 |
98 |
99 | -
100 |
101 |
book-edit
102 | 
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">3</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 |
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 |
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 |
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 |
18 |
--------------------------------------------------------------------------------
/static/icon/icon-light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 |
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 | }
--------------------------------------------------------------------------------