hexo-theme-solitude 1.2.6 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/CONTRIBUTING.md +41 -0
  2. package/README.md +8 -8
  3. package/README_EN.md +6 -6
  4. package/_config.yml +502 -297
  5. package/languages/en-US.yml +105 -8
  6. package/languages/zh-CN.yml +98 -1
  7. package/layout/archive.pug +4 -5
  8. package/layout/category.pug +4 -5
  9. package/layout/includes/body/mode.pug +40 -0
  10. package/layout/includes/console.pug +15 -16
  11. package/layout/includes/footer.pug +26 -28
  12. package/layout/includes/head/config.pug +27 -8
  13. package/layout/includes/head/fest.pug +22 -0
  14. package/layout/includes/head/opengraph.pug +11 -0
  15. package/layout/includes/head.pug +1 -3
  16. package/layout/includes/header.pug +1 -1
  17. package/layout/includes/inject/body.pug +36 -13
  18. package/layout/includes/inject/head.pug +30 -20
  19. package/layout/includes/layout.pug +12 -8
  20. package/layout/includes/loading.pug +1 -64
  21. package/layout/includes/mixins/articleSort.pug +4 -4
  22. package/layout/includes/mixins/pagination.pug +1 -1
  23. package/layout/includes/nav.pug +10 -10
  24. package/layout/includes/page/about.pug +1 -0
  25. package/layout/includes/page/categories.pug +3 -3
  26. package/layout/includes/page/default.pug +1 -1
  27. package/layout/includes/page/echarts.pug +3 -3
  28. package/layout/includes/page/equipment.pug +0 -1
  29. package/layout/includes/page/links.pug +5 -26
  30. package/layout/includes/page/moments.pug +0 -1
  31. package/layout/includes/page/music.pug +19 -0
  32. package/layout/includes/page/not_configured.pug +18 -0
  33. package/layout/includes/page/rss.pug +20 -22
  34. package/layout/includes/page/says.pug +1 -2
  35. package/layout/includes/page/tags.pug +3 -3
  36. package/layout/includes/page/tlink.pug +0 -1
  37. package/layout/includes/sidebar.pug +7 -7
  38. package/layout/includes/widgets/aside/aside.pug +13 -1
  39. package/layout/includes/widgets/aside/asideArchive.pug +5 -3
  40. package/layout/includes/widgets/aside/asideCustom.pug +6 -0
  41. package/layout/includes/widgets/aside/asideHistory.pug +3 -3
  42. package/layout/includes/widgets/aside/asideInfoCard.pug +4 -6
  43. package/layout/includes/widgets/aside/asideNewestPost.pug +1 -1
  44. package/layout/includes/widgets/aside/asideSwitch.pug +0 -11
  45. package/layout/includes/widgets/aside/asideTag.pug +2 -2
  46. package/layout/includes/widgets/aside/asideToc.pug +1 -1
  47. package/layout/includes/widgets/aside/asideWebInfo.pug +6 -6
  48. package/layout/includes/widgets/aside/asideWelcome.pug +1 -1
  49. package/layout/includes/widgets/home/banner.pug +2 -2
  50. package/layout/includes/widgets/home/bbTimeList.pug +3 -3
  51. package/layout/includes/widgets/home/categoryBar.pug +3 -3
  52. package/layout/includes/widgets/home/categoryGroup.pug +2 -2
  53. package/layout/includes/widgets/home/hometop.pug +7 -7
  54. package/layout/includes/widgets/home/postList.pug +12 -8
  55. package/layout/includes/widgets/home/topGroup.pug +17 -13
  56. package/layout/includes/widgets/nav/left.pug +6 -6
  57. package/layout/includes/widgets/nav/menu.pug +4 -4
  58. package/layout/includes/widgets/nav/right.pug +14 -14
  59. package/layout/includes/widgets/page/about/authorinfo.pug +1 -1
  60. package/layout/includes/widgets/page/about/award.pug +11 -9
  61. package/layout/includes/widgets/page/about/contentinfo.pug +7 -7
  62. package/layout/includes/widgets/page/about/hobbies.pug +1 -1
  63. package/layout/includes/widgets/page/about/motto.pug +2 -2
  64. package/layout/includes/widgets/page/about/other.pug +10 -9
  65. package/layout/includes/widgets/page/about/personalities.pug +2 -2
  66. package/layout/includes/widgets/page/about/skillsinfo.pug +10 -12
  67. package/layout/includes/widgets/page/about/tenyear.pug +48 -0
  68. package/layout/includes/widgets/page/banner.pug +2 -2
  69. package/layout/includes/widgets/page/links/banner.pug +12 -14
  70. package/layout/includes/widgets/page/links/linksItem.pug +0 -1
  71. package/layout/includes/widgets/page/moments/angle.pug +7 -12
  72. package/layout/includes/widgets/page/moments/index.pug +7 -2
  73. package/layout/includes/widgets/post/award.pug +12 -8
  74. package/layout/includes/widgets/post/copyright.pug +16 -14
  75. package/layout/includes/widgets/post/postMeta.pug +36 -25
  76. package/layout/includes/widgets/post/postNav.pug +15 -15
  77. package/layout/includes/widgets/randomlink.pug +10 -5
  78. package/layout/includes/widgets/rightside/index.pug +9 -8
  79. package/layout/includes/widgets/third-party/ai/index.pug +12 -0
  80. package/layout/includes/widgets/third-party/comments/comment.pug +6 -1
  81. package/layout/includes/widgets/third-party/comments/twikoo.pug +5 -4
  82. package/layout/includes/widgets/third-party/comments/waline.pug +4 -5
  83. package/layout/includes/widgets/third-party/music.pug +1 -1
  84. package/layout/includes/widgets/third-party/pjax.pug +6 -1
  85. package/layout/includes/widgets/third-party/search/algolia-search.pug +4 -3
  86. package/layout/includes/widgets/third-party/search/index.pug +2 -2
  87. package/layout/includes/widgets/third-party/search/local-search.pug +3 -3
  88. package/layout/index.pug +5 -6
  89. package/layout/page.pug +34 -29
  90. package/layout/post.pug +3 -23
  91. package/layout/tag.pug +3 -3
  92. package/package.json +2 -2
  93. package/scripts/filter/checkThemeConfig.js +0 -5
  94. package/scripts/helper/cdn.js +12 -0
  95. package/scripts/helper/page.js +13 -0
  96. package/scripts/helper/related_post.js +0 -1
  97. package/scripts/tags/button.js +21 -0
  98. package/scripts/tags/card.js +9 -0
  99. package/scripts/tags/checkbox.js +51 -0
  100. package/scripts/tags/fold.js +0 -5
  101. package/scripts/tags/image.js +75 -0
  102. package/scripts/tags/inline-image.js +12 -0
  103. package/scripts/tags/label.js +10 -0
  104. package/scripts/tags/link.js +2 -0
  105. package/scripts/tags/media.js +29 -0
  106. package/scripts/tags/span.js +17 -0
  107. package/scripts/tags/timeline.js +2 -15
  108. package/scripts/tags/u.js +7 -0
  109. package/source/css/_global/animation.css +57 -0
  110. package/source/css/_global/index.styl +5 -20
  111. package/source/css/_global/var.styl +16 -1
  112. package/source/css/_layout/{base.styl → basic.styl} +24 -116
  113. package/source/css/_layout/header.styl +204 -616
  114. package/source/css/_layout/index.styl +29 -271
  115. package/source/css/_mode/index.styl +102 -93
  116. package/source/css/_page/_home/category-bar.styl +74 -0
  117. package/source/css/_page/_home/home-top.styl +541 -0
  118. package/source/css/_page/_home/index.styl +15 -0
  119. package/source/css/_page/_home/pagination.styl +176 -0
  120. package/source/css/_page/_home/recent-post.styl +204 -0
  121. package/source/css/_page/about/index.styl +1 -0
  122. package/source/css/_page/about/tenyear.styl +56 -0
  123. package/source/css/_page/about.styl +555 -626
  124. package/source/css/_page/category.styl +95 -119
  125. package/source/css/_page/douban.styl +126 -0
  126. package/source/css/_page/equipment.styl +100 -99
  127. package/source/css/_page/error.styl +130 -146
  128. package/source/css/_page/home.styl +41 -50
  129. package/source/css/_page/index.styl +42 -10
  130. package/source/css/_page/links.styl +306 -0
  131. package/source/css/_page/moment.styl +51 -51
  132. package/source/css/_page/music.styl +506 -0
  133. package/source/css/_page/rss.styl +62 -67
  134. package/source/css/_page/says.styl +375 -344
  135. package/source/css/_page/tag.styl +15 -13
  136. package/source/css/_widgets/{aside → _aside}/flip.styl +7 -5
  137. package/source/css/_widgets/{aside → _aside}/history.styl +9 -2
  138. package/source/css/_widgets/_aside/index.styl +96 -0
  139. package/source/css/_widgets/{aside → _aside}/info.styl +86 -89
  140. package/source/css/_widgets/{aside → _aside}/newPost.styl +7 -1
  141. package/source/css/_widgets/{aside → _aside}/toc.styl +28 -5
  142. package/source/css/_widgets/{comment → _comment}/index.styl +4 -12
  143. package/source/css/_widgets/{comment → _comment}/twikoo.styl +5 -2
  144. package/source/css/_widgets/{comment → _comment}/waline.styl +21 -5
  145. package/source/css/{_extra → _widgets/_extra}/console.styl +33 -10
  146. package/source/css/_widgets/_extra/fullpage.styl +46 -0
  147. package/source/css/_widgets/_extra/music.styl +218 -0
  148. package/source/css/_widgets/_extra/pace.styl +39 -0
  149. package/source/css/_widgets/_extra/rightmenu.styl +78 -0
  150. package/source/css/_widgets/_mixins/article-sort.styl +93 -0
  151. package/source/css/_widgets/_mixins/footer.styl +273 -0
  152. package/source/css/_widgets/_mixins/other.styl +34 -0
  153. package/source/css/_widgets/_mixins/sidebar.styl +230 -0
  154. package/source/css/_widgets/_post/_highlight/diff.styl +75 -0
  155. package/source/css/_widgets/_post/_highlight/index.styl +144 -0
  156. package/source/css/_widgets/_post/_highlight/theme/default.styl +12 -0
  157. package/source/css/_widgets/_post/_highlight/theme/mac.styl +25 -0
  158. package/source/css/_widgets/_post/_highlight/theme.styl +68 -0
  159. package/source/css/_widgets/_post/commentBarrage.styl +144 -0
  160. package/source/css/_widgets/_post/content.styl +152 -0
  161. package/source/css/_widgets/_post/copyright.styl +98 -0
  162. package/source/css/_widgets/_post/index.styl +20 -0
  163. package/source/css/_widgets/_post/meta.styl +420 -0
  164. package/source/css/_widgets/_post/pagination.styl +177 -0
  165. package/source/css/_widgets/_post/postAI.styl +131 -0
  166. package/source/css/{_post → _widgets/_post}/relatedPost.styl +4 -1
  167. package/source/css/_widgets/_post/tools.styl +249 -0
  168. package/source/css/{_search → _widgets/_search}/algolia-search.styl +4 -0
  169. package/source/css/{_search → _widgets/_search}/local-search.styl +15 -5
  170. package/source/css/_widgets/_tags/button.styl +60 -0
  171. package/source/css/_widgets/_tags/bvideo.styl +8 -0
  172. package/source/css/_widgets/_tags/card.styl +52 -0
  173. package/source/css/_widgets/_tags/checkbox.styl +85 -0
  174. package/source/css/_widgets/_tags/fold.styl +79 -0
  175. package/source/css/_widgets/_tags/image.styl +10 -0
  176. package/source/css/_widgets/_tags/index.styl +61 -0
  177. package/source/css/_widgets/_tags/inline-image.styl +6 -0
  178. package/source/css/_widgets/_tags/label.styl +3 -0
  179. package/source/css/_widgets/_tags/link.styl +80 -0
  180. package/source/css/_widgets/_tags/note.styl +101 -0
  181. package/source/css/_widgets/_tags/span.styl +61 -0
  182. package/source/css/_widgets/_tags/tabs.styl +105 -0
  183. package/source/css/_widgets/_tags/timeline.styl +80 -0
  184. package/source/css/_widgets/index.styl +50 -1
  185. package/source/css/index.styl +0 -25
  186. package/source/js/{commentBarrage.js → extend/comment/twikoo/commentBarrage.js} +0 -4
  187. package/source/js/extend/comment/{twikoo.js → twikoo/twikoo.js} +12 -40
  188. package/source/js/extend/comment/waline/commentBarrage.js +155 -0
  189. package/source/js/extend/comment/{waline.js → waline/waline.js} +10 -11
  190. package/source/js/extend/search/algolia-search.js +1 -5
  191. package/source/js/extend/search/local-search.js +33 -13
  192. package/source/js/main.js +135 -171
  193. package/source/js/music.js +129 -0
  194. package/source/js/utils.js +4 -7
  195. package/source/lib/cover-color.min.js +7 -0
  196. package/source/lib/rightside.min.js +1 -0
  197. package/source/lib/sco-ai.min.js +8 -0
  198. package/source/lib/snackbar.min.css +1 -1
  199. package/source/lib/txmap.min.js +1 -0
  200. package/source/lib/universe.min.js +1 -0
  201. package/source/lib/view-image.min.js +1 -1
  202. package/layout/includes/widgets/aside/asidePower.pug +0 -19
  203. package/layout/includes/widgets/home/rencentPost.pug +0 -26
  204. package/source/css/_extra/rightmenu.styl +0 -83
  205. package/source/css/_layout/articleSort.styl +0 -199
  206. package/source/css/_layout/footer.styl +0 -359
  207. package/source/css/_layout/sidebar.styl +0 -226
  208. package/source/css/_page/homeTop.styl +0 -1035
  209. package/source/css/_page/link.styl +0 -433
  210. package/source/css/_post/commentBarrage.styl +0 -149
  211. package/source/css/_post/externalTags.styl +0 -694
  212. package/source/css/_post/highlight.styl +0 -96
  213. package/source/css/_post/index.styl +0 -935
  214. package/source/css/_post/pagination.styl +0 -467
  215. package/source/css/_post/postContent.styl +0 -957
  216. package/source/css/_post/reward.styl +0 -217
  217. package/source/css/_widgets/aside/index.styl +0 -156
  218. package/source/css/_widgets/aside/power.styl +0 -90
  219. package/source/img/logo-horizontal_version.png +0 -0
  220. package/source/img/pwa/16.png +0 -0
  221. package/source/img/pwa/180.png +0 -0
  222. package/source/img/pwa/192.png +0 -0
  223. package/source/img/pwa/32.png +0 -0
  224. package/source/img/pwa/512.png +0 -0
  225. package/source/img/pwa/logo.png +0 -0
  226. package/source/img/pwa/siteicon/splash-1125x2436.png +0 -0
  227. package/source/img/pwa/siteicon/splash-1136x640.png +0 -0
  228. package/source/img/pwa/siteicon/splash-1170x2532.png +0 -0
  229. package/source/img/pwa/siteicon/splash-1179x2556.png +0 -0
  230. package/source/img/pwa/siteicon/splash-1242x2208.png +0 -0
  231. package/source/img/pwa/siteicon/splash-1242x2688.png +0 -0
  232. package/source/img/pwa/siteicon/splash-1248x2778.png +0 -0
  233. package/source/img/pwa/siteicon/splash-1290x2796.png +0 -0
  234. package/source/img/pwa/siteicon/splash-1334x750.png +0 -0
  235. package/source/img/pwa/siteicon/splash-1536x2048.png +0 -0
  236. package/source/img/pwa/siteicon/splash-1620x2160.png +0 -0
  237. package/source/img/pwa/siteicon/splash-1668x2224.png +0 -0
  238. package/source/img/pwa/siteicon/splash-1668x2388.png +0 -0
  239. package/source/img/pwa/siteicon/splash-1792x828.png +0 -0
  240. package/source/img/pwa/siteicon/splash-2048x1536.png +0 -0
  241. package/source/img/pwa/siteicon/splash-2048x2732.png +0 -0
  242. package/source/img/pwa/siteicon/splash-2160x1620.png +0 -0
  243. package/source/img/pwa/siteicon/splash-2208x1242.png +0 -0
  244. package/source/img/pwa/siteicon/splash-2224x1668.png +0 -0
  245. package/source/img/pwa/siteicon/splash-2388x1668.png +0 -0
  246. package/source/img/pwa/siteicon/splash-2436x1125.png +0 -0
  247. package/source/img/pwa/siteicon/splash-2532x1170.png +0 -0
  248. package/source/img/pwa/siteicon/splash-2556x1179.png +0 -0
  249. package/source/img/pwa/siteicon/splash-2688x1242.png +0 -0
  250. package/source/img/pwa/siteicon/splash-2732x2048.png +0 -0
  251. package/source/img/pwa/siteicon/splash-2778x1248.png +0 -0
  252. package/source/img/pwa/siteicon/splash-2796x1290.png +0 -0
  253. package/source/img/pwa/siteicon/splash-640x1136.png +0 -0
  254. package/source/img/pwa/siteicon/splash-750x1334.png +0 -0
  255. package/source/img/pwa/siteicon/splash-828x1792.png +0 -0
  256. package/source/img/solitude-show.jpg +0 -0
  257. package/source/js/extend/covercolor/local.js +0 -160
  258. package/source/js/rightside.js +0 -402
  259. package/source/js/txmap.js +0 -236
  260. package/source/lib/chuckle-post-ai.js +0 -1
  261. /package/source/css/_widgets/{aside → _aside}/allinfo.styl +0 -0
  262. /package/source/css/_widgets/{aside → _aside}/welcome.styl +0 -0
  263. /package/source/img/{theme/avatar.png → avatar.png} +0 -0
@@ -22,12 +22,11 @@ const utils = {
22
22
 
23
23
  const later = function () {
24
24
  previous = options.leading === false ? 0 : new Date().getTime()
25
- timeout = null
26
25
  func.apply(context, args)
27
- if (!timeout) context = args = null
26
+ context = args = null
28
27
  }
29
28
 
30
- const throttled = function () {
29
+ return function () {
31
30
  const now = new Date().getTime()
32
31
  if (!previous && options.leading === false) previous = now
33
32
  const remaining = wait - (now - previous)
@@ -45,8 +44,6 @@ const utils = {
45
44
  timeout = setTimeout(later, remaining)
46
45
  }
47
46
  }
48
-
49
- return throttled
50
47
  },
51
48
 
52
49
  fadeIn: (ele, time) => {
@@ -105,7 +102,7 @@ const utils = {
105
102
  },
106
103
 
107
104
  timeDiff: (timeObj, today) => {
108
- var timeDiff = today.getTime() - timeObj.getTime();
105
+ const timeDiff = today.getTime() - timeObj.getTime();
109
106
  return Math.floor(timeDiff / (1000 * 3600 * 24));
110
107
  },
111
108
 
@@ -133,7 +130,6 @@ const utils = {
133
130
  }
134
131
  })
135
132
  },
136
-
137
133
  siblings: (ele, selector) => {
138
134
  return [...ele.parentNode.children].filter((child) => {
139
135
  if (selector) {
@@ -145,6 +141,7 @@ const utils = {
145
141
  isMobile: () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),
146
142
  isHidden: e => 0 === e.offsetHeight && 0 === e.offsetWidth,
147
143
  addEventListenerPjax: function (element, eventType, callback, useCapture = false) {
144
+ if (element == null) return
148
145
  element.addEventListener(eventType, callback, useCapture);
149
146
  utils.addGlobalFn("pjax", function () {
150
147
  element.removeEventListener(eventType, callback, useCapture);
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @name: coverColorConfig
3
+ * @description: 根据文章封面图片获取主题色
4
+ * @param {string} coverUrl 封面图片地址
5
+ * @copyright Copyright (c) 2023 Solitude
6
+ */
7
+ const ColorMode=coverColorConfig.mode;function coverColor(){const e=document.getElementById("post-cover")?.src;if(e)switch(ColorMode){case"local":localColor(e);break;case"api":handleApiColor(e);break;case"api_redis":img2color(e)}else setThemeColors()}function handleApiColor(e){const t=saveToLocal.get("Solitude")||{};if(t.postcolor&&t.postcolor[e]){const o=t.postcolor[e].value,[n,r,c]=o.match(/\w\w/g).map((e=>parseInt(e,16)));setThemeColors(o,n,r,c)}else img2color(e)}function localColor(e){const t=new Image;t.crossOrigin="Anonymous",t.onload=function(){const e=document.createElement("canvas");e.width=this.width,e.height=this.height;const t=e.getContext("2d");t.drawImage(this,0,0);const o=t.getImageData(0,0,this.width,this.height).data,{r:n,g:r,b:c}=calculateRGB(o);let l=rgbToHex(n,r,c);"light"===getContrastYIQ(l)&&(l=LightenDarkenColor(l,-50)),setThemeColors(l,n,r,c)},t.src=e}function calculateRGB(e){let t=0,o=0,n=0;for(let r=0;r<e.length;r+=20)t+=e[r],o+=e[r+1],n+=e[r+2];return t=Math.floor(t/(e.length/4/5)),o=Math.floor(o/(e.length/4/5)),n=Math.floor(n/(e.length/4/5)),{r:t,g:o,b:n}}function rgbToHex(e,t,o){return"#"+[e,t,o].map((e=>e.toString(16).padStart(2,"0"))).join("")}function getContrastYIQ(e){var t=colorRgb(e).match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),o=299*t[1]+587*t[2]+114*t[3];return(o/=255e3)>=.5?"light":"dark"}function LightenDarkenColor(e,t){let o=!1;"#"===e[0]&&(e=e.slice(1),o=!0);const n=parseInt(e,16),r=Math.min(255,Math.max(0,(n>>16)+t)),c=Math.min(255,Math.max(0,(n>>8&255)+t));return`${o?"#":""}${(Math.min(255,Math.max(0,(255&n)+t))|c<<8|r<<16).toString(16).padStart(6,"0")}`}function colorHex(e){let t=e;if(/^(rgb|RGB)/.test(t)){return"#"+t.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",").map((e=>{const t=Number(e).toString(16);return 1===t.length?"0"+t:t})).join("")}if(/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(t)){const e=t.replace(/#/,"").split("");if(6===e.length)return t;if(3===e.length){return"#"+e.map((e=>e+e)).join("")}}return t}function colorRgb(e){if(!e||"string"!=typeof e)return e;const t=e.toLowerCase();let o="";if(t&&(/^#([0-9a-fA-f]{3})$/.test(t)||/^#([0-9a-fA-f]{6})$/.test(t))){o=4===t.length?t.replace(/^#(.)/g,"#$1$1"):t;const e=o.slice(1).match(/.{2}/g).map((e=>parseInt(e,16)));return`rgb(${e[0]}, ${e[1]}, ${e[2]})`}return t}function img2color(e){if(e.startsWith("http://localhost"))localColor(e);else{const t=coverColorConfig.api+encodeURIComponent(e);fetch(t).then((e=>e.json())).then((t=>{const o=t.RGB,[n,r,c]=o.match(/\w\w/g).map((e=>parseInt(e,16)));if(setThemeColors(o,n,r,c),"api"===ColorMode){const t=Date.now()+coverColorConfig.time,n=saveToLocal.get("Solitude")||{};n.postcolor=n.postcolor||{},n.postcolor[e]={value:o,expiration:t},saveToLocal.set("Solitude",n,coverColorConfig.time)}})).catch((e=>{console.error("请检查API是否正常!\n"+e),setThemeColors()}))}}function setThemeColors(e,t=null,o=null,n=null){if(e){if(document.documentElement.style.setProperty("--sco-main",e),document.documentElement.style.setProperty("--sco-main-op",e+"23"),document.documentElement.style.setProperty("--sco-main-op-deep",e+"dd"),document.documentElement.style.setProperty("--sco-main-none",e+"00"),t&&o&&n)if(Math.round((299*parseInt(t)+587*parseInt(o)+114*parseInt(n))/1e3)<125){for(var r=document.getElementsByClassName("card-content"),c=0;c<r.length;c++)r[c].style.setProperty("--sco-card-bg","var(--sco-white)");var l=document.getElementsByClassName("author-info__sayhi");for(c=0;c<l.length;c++)l[c].style.setProperty("background","var(--sco-white-op)"),l[c].style.setProperty("color","var(--sco-white)")}document.getElementById("coverdiv").classList.add("loaded"),initThemeColor()}else document.documentElement.style.setProperty("--sco-main","var(--sco-theme)"),document.documentElement.style.setProperty("--sco-main-op","var(--sco-theme-op)"),document.documentElement.style.setProperty("--sco-main-op-deep","var(--sco-theme-op-deep)"),document.documentElement.style.setProperty("--sco-main-none","var(--sco-theme-none)"),initThemeColor()}function initThemeColor(){let e;e=(window.scrollY||document.documentElement.scrollTop)>0?getComputedStyle(document.documentElement).getPropertyValue("--sco-card-bg"):PAGE_CONFIG.is_post?getComputedStyle(document.documentElement).getPropertyValue("--sco-main"):getComputedStyle(document.documentElement).getPropertyValue("--sco-background"),changeThemeColor(e)}function changeThemeColor(e){const t=document.querySelector('meta[name="theme-color"]');t&&t.setAttribute("content",e)}
@@ -0,0 +1 @@
1
+ let rm = {}; rm.stopdragimg = Array.from(document.getElementsByTagName("img")), rm.stopdragimg.forEach((function (e) { e.addEventListener("dragstart", (function () { return !1 })) })), rm.showRightMenu = function (e, t = 0, n = 0) { let o = document.getElementById("rightMenu"); o.style.top = t + "px", o.style.left = n + "px", e ? (o.style.display = "block", stopMaskScroll()) : o.style.display = "none" }, rm.hideRightMenu = function () { rm.showRightMenu(!1), document.getElementById("rightmenu-mask").style.display = "none" }, document.querySelector("#rightMenu").style.display = "block", rmWidth = document.querySelector("#rightMenu").offsetWidth, rmHeight = document.querySelector("#rightMenu").offsetHeight, document.querySelector("#rightMenu").style.display = "none", rm.reloadrmSize = function () { document.querySelector("#rightMenu").style.display = "block", rmWidth = document.querySelector("#rightMenu").offsetWidth, rmHeight = document.querySelector("#rightMenu").offsetHeight, document.querySelector("#rightMenu").style.display = "none" }; let domhref = "", domImgSrc = "", globalEvent = null; function imageToBlob(e) { const t = new Image, n = document.createElement("canvas"), o = n.getContext("2d"); return t.crossOrigin = "", t.src = e, new Promise((e => { t.onload = function () { n.width = this.naturalWidth, n.height = this.naturalHeight, o.drawImage(this, 0, 0), n.toBlob((t => { e(t) }), "image/png", .75) } })) } async function copyImage(e) { try { const t = await imageToBlob(e), n = new ClipboardItem({ "image/png": t }); await navigator.clipboard.write([n]) } catch (e) { console.error("Failed to copy image: ", e) } } function stopMaskScroll() { document.getElementById("rightmenu-mask") && document.getElementById("rightmenu-mask").addEventListener("mousewheel", (function (e) { rm.hideRightMenu() }), !1), document.getElementById("rightMenu") && document.getElementById("rightMenu").addEventListener("mousewheel", (function (e) { rm.hideRightMenu() }), !1) } window.oncontextmenu = function (e) { if (document.body.clientWidth > 768) { let t = e.clientX + 10, n = e.clientY, o = document.getElementsByClassName("rightMenuOther"), i = document.getElementsByClassName("rightMenuPlugin"), c = document.getElementById("menu-copytext"), l = document.getElementById("menu-pastetext"), m = document.getElementById("menu-commenttext"), d = document.getElementById("menu-newwindow"), r = document.getElementById("menu-copylink"), s = document.getElementById("menu-copyimg"), a = document.getElementById("menu-downloadimg"), u = document.getElementById("menu-search"), g = document.getElementById("menu-searchBaidu"), y = document.getElementById("menu-music-toggle"), h = document.getElementById("menu-music-back"), p = document.getElementById("menu-music-forward"), w = document.getElementById("menu-music-playlist"), E = document.getElementById("menu-music-copyMusicName"), f = e.target.href, k = e.target.currentSrc, B = !1; for (let e = 0; e < o.length; e++)o[e].style.display = "block"; if (globalEvent = e, selectTextNow && window.getSelection() ? (B = !0, c.style.display = "block", m.style.display = "block", u.style.display = "block", g.style.display = "block") : (c.style.display = "none", m.style.display = "none", g.style.display = "none", u.style.display = "none"), f ? (B = !0, d.style.display = "block", r.style.display = "block", domhref = f) : (d.style.display = "none", r.style.display = "none"), k ? (B = !0, s.style.display = "block", a.style.display = "block", domImgSrc = k) : (s.style.display = "none", a.style.display = "none"), "input" === e.target.tagName.toLowerCase() || "textarea" === e.target.tagName.toLowerCase() ? (B = !0, l.style.display = "block") : l.style.display = "none", "METING-JS" === e.target.nodeName ? (B = !0, y.style.display = "block", h.style.display = "block", p.style.display = "block", w.style.display = "block", E.style.display = "block") : (y.style.display = "none", h.style.display = "none", p.style.display = "none", w.style.display = "none", E.style.display = "none"), B) { for (let e = 0; e < o.length; e++)o[e].style.display = "none"; for (let e = 0; e < i.length; e++)i[e].style.display = "block" } else for (let e = 0; e < i.length; e++)i[e].style.display = "none"; return rm.reloadrmSize(), t + rmWidth > window.innerWidth && (t -= rmWidth + 10), n + rmHeight > window.innerHeight && (n -= n + rmHeight - window.innerHeight), rm.showRightMenu(!0, n, t), document.getElementById("rightmenu-mask").style.display = "flex", !1 } }, rm.downloadimging = !1, rm.writeClipImg = function (e) { const t = "localhost" === window.location.hostname || "127.0.0.1" === window.location.hostname ? 0 : 1e4; rm.hideRightMenu(), utils.snackbarShow("正在下载中,请稍后", !1, t), 0 == rm.downloadimging && (rm.downloadimging = !0, setTimeout((async function () { await copyImage(e), utils.snackbarShow("复制成功!图片已添加盲水印,请遵守版权协议"), rm.downloadimging = !1 }), 1e3)) }, rm.switchDarkMode = function () { sco.switchDarkMode(), rm.hideRightMenu() }, rm.copyUrl = function (e) { var t = e, n = document.createElement("input"); n.id = "copyVal", document.body.appendChild(n), n.value = t, n.select(), n.setSelectionRange(0, n.value.length), document.execCommand("copy"), document.body.removeChild(n) }, rm.rightmenuCopyText = function (e) { navigator.clipboard && navigator.clipboard.writeText(e), utils.snackbarShow("复制文本成功", !1, 2e3), rm.hideRightMenu() }, rm.copyPageUrl = function () { var e = window.location.href; rm.copyUrl(e), utils.snackbarShow("复制本页链接地址成功", !1, 2e3), rm.hideRightMenu() }, rm.sharePage = function () { window, rm.copyUrl(url), utils.snackbarShow("复制本页链接地址成功", !1, 2e3), rm.hideRightMenu() }; var selectTextNow = ""; function selceText() { var e; e = document.selection ? document.selection.createRange().text : window.getSelection() + "", selectTextNow = e || "" } function replaceAll(e, t, n) { return e.split(t).join(n) } function addRightMenuClickEvent() { document.getElementById("menu-backward").addEventListener("click", (function () { window.history.back(), rm.hideRightMenu() })), document.getElementById("menu-forward").addEventListener("click", (function () { window.history.forward(), rm.hideRightMenu() })), document.getElementById("menu-refresh").addEventListener("click", (function () { window.location.reload() })), document.getElementById("menu-top").addEventListener("click", (function () { utils.scrollToDest(0, 500), rm.hideRightMenu() })), Array.from(document.getElementsByClassName("menu-link")).forEach((function (e) { e.addEventListener("click", rm.hideRightMenu) })); var e = document.getElementById("menu-darkmode"); if (e.onclick = null, e.addEventListener("click", rm.switchDarkMode), document.getElementById("menu-randomPost").addEventListener("click", (function () { toRandomPost() })), GLOBAL_CONFIG.comment.enable && GLOBAL_CONFIG.comment.commentBarrage) { const e = document.getElementById("menu-commentBarrage"); e.onclick = null, e.addEventListener("click", sco.switchCommentBarrage) } var t = document.getElementById("rightmenu-mask"); t.addEventListener("click", rm.hideRightMenu), t.addEventListener("contextmenu", (function () { return rm.hideRightMenu(), !1 })), document.getElementById("menu-copy").addEventListener("click", rm.copyPageUrl), document.getElementById("menu-pastetext").addEventListener("click", rm.pasteText), document.getElementById("menu-copytext").addEventListener("click", (function () { rm.rightmenuCopyText(selectTextNow), utils.snackbarShow("复制成功,复制和转载请标注本文地址") })), document.getElementById("menu-commenttext").addEventListener("click", (function () { rm.rightMenuCommentText(selectTextNow) })), document.getElementById("menu-newwindow").addEventListener("click", (function () { window.open(domhref), rm.hideRightMenu() })), document.getElementById("menu-copylink").addEventListener("click", rm.copyLink), document.getElementById("menu-downloadimg").addEventListener("click", (function () { sco.downloadImage(domImgSrc) })), document.getElementById("menu-copyimg").addEventListener("click", (function () { rm.writeClipImg(domImgSrc) })), document.getElementById("menu-searchBaidu").addEventListener("click", rm.searchBaidu), document.getElementById("menu-music-toggle").addEventListener("click", sco.musicToggle), document.getElementById("menu-music-back").addEventListener("click", sco.musicSkipBack), document.getElementById("menu-music-forward").addEventListener("click", sco.musicSkipForward), document.getElementById("menu-music-copyMusicName").addEventListener("click", (function () { rm.rightmenuCopyText(sco.musicGetName()), utils.snackbarShow("复制歌曲名称成功", !1, 3e3) })) } document.onmouseup = document.ondbclick = selceText, rm.readClipboard = function () { navigator.clipboard && navigator.clipboard.readText().then((e => rm.insertAtCaret(globalEvent.target, e))) }, rm.insertAtCaret = function (e, t) { const n = e.selectionStart, o = e.selectionEnd; if (document.selection) e.focus(), document.selection.createRange().text = t, e.focus(); else if (n || "0" == n) { var i = e.scrollTop; e.value = e.value.substring(0, n) + t + e.value.substring(o, e.value.length), e.focus(), e.selectionStart = n + t.length, e.selectionEnd = n + t.length, e.scrollTop = i } else e.value += t, e.focus() }, rm.pasteText = function () { rm.readClipboard(), rm.hideRightMenu() }, rm.rightMenuCommentText = function (e) { rm.hideRightMenu(); var t = document.getElementsByClassName("el-textarea__inner")[0]; let n = document.createEvent("HTMLEvents"); n.initEvent("input", !0, !0); let o = replaceAll(e, "\n", "\n> "); t.value = "> " + o + "\n\n", t.dispatchEvent(n); const i = document.querySelector("#post-comment").offsetTop; window.scrollTo(0, i - 80), t.focus(), t.setSelectionRange(-1, -1), document.getElementById("comment-tips") && document.getElementById("comment-tips").classList.add("show") }, rm.searchBaidu = function () { utils.snackbarShow("即将跳转到百度搜索", !1, 2e3), setTimeout((function () { window.open("https://www.baidu.com/s?wd=" + selectTextNow) }), 2e3), rm.hideRightMenu() }, rm.copyLink = function () { rm.rightmenuCopyText(domhref), utils.snackbarShow("已复制链接地址") };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @name ScoAI
3
+ * @description 一个基于AI的文章摘要生成器
4
+ * @version 1.0.0
5
+ * @author 王卓Sco
6
+ * @license GNU General Public License v3.0
7
+ */
8
+ var ScoAI={root:"https://summary.tianli0.top",aiTalkMode:!1,aiPostExplanation:"",config:GLOBAL_CONFIG.ai,init(){this.scoGPTIsRunning=!1,this.generate(),this.AIEngine()},getTitleAndContent(){const e=document.title,t=document.getElementById("article-container"),n=t.getElementsByTagName("p"),o=t.querySelectorAll("h1, h2, h3, h4, h5");let i="";for(let e of o)i+=e.innerText+" ";for(let e of n)i+=e.innerText.replace(/https?:\/\/[^\s]+/g,"");return(e+" "+i).slice(0,1e3)},generate(){this.aiShowAnimation(this.fetch(this.getTitleAndContent(),this.config.key))},async fetch(e, t){const n=`${this.root}/?content=${encodeURIComponent(e)}&key=${encodeURIComponent(t)}&url=${encodeURIComponent(window.location.href)}`;try{const e=new AbortController,t=await fetch(n,{signal:e.signal});if(t.ok){const e=await t.json();return this.aiPostExplanation=e.summary,e.summary}throw Error("Request failed")}catch(e){return"AbortError"===e.name?console.error("Request timed out"):console.error("Request failed:",e),"获取文章摘要超时。当你出现这个问题时,可能是因为文章过长导致的AI运算量过大, 您可以稍等一下然后重新尝试。"}},aiShowAnimation(e, t=!1){const n=document.querySelector(".ai-explanation"),o=document.querySelector(".ai-tag");if(!n||this.scoGPTIsRunning)return;this.scoGPTIsRunning=!0,this.cleanSuggestions(),o.classList.add("loadingAI"),n.style.display="block",n.innerHTML='生成中...<span class="blinking-cursor"></span>';let i,s,r=!0,a=0,c=!0;const l=new IntersectionObserver((e=>{r=e[0].isIntersecting,r&&requestAnimationFrame(s)}),{threshold:0});e.then((e=>{i=performance.now(),s=()=>{if(a<e.length&&r){const c=performance.now(),g=c-i,d=e.slice(a,a+1),h=/[,。!、?,.!?]/.test(d),u=/[a-zA-Z0-9]/.test(d);g>=(h?100*Math.random()+100:u?10:25)&&(n.innerText=e.slice(0,a+1),i=c,a++,a<e.length?n.innerHTML=e.slice(0,a)+'<span class="blinking-cursor"></span>':(n.innerHTML=e,n.style.display="block",this.scoGPTIsRunning=!1,o.classList.remove("loadingAI"),l.disconnect(),t&&this.createSuggestions())),r&&requestAnimationFrame(s)}},r&&c&&setTimeout((()=>{requestAnimationFrame(s),c=!1}),3e3),l.observe(n)})).catch((e=>{console.error("检索信息失败:",e),n.innerHTML="检索信息失败",n.style.display="block",this.scoGPTIsRunning=!1,o.classList.remove("loadingAI"),l.disconnect()}))},AIEngine(){const e=document.querySelector(".ai-tag");e&&e.addEventListener("click",(()=>{this.scoGPTIsRunning||(this.aiTalkMode=!0,this.aiShowAnimation(Promise.resolve(this.config.talk),!0))}))},cleanSuggestions(){const e=document.querySelector(".ai-suggestions");e?e.innerHTML="":console.error("没有这个元素:'ai-suggestions'")},createSuggestions(){this.aiTalkMode&&this.cleanSuggestions(),this.createSuggestionItemWithAction("这篇文章讲了什么?",(()=>{this.aiShowAnimation(Promise.resolve(this.aiPostExplanation),!0)})),this.config.randomPost&&this.createSuggestionItemWithAction("带我去看看其他文章",(()=>toRandomPost())),this.aiTalkMode=!0},createSuggestionItemWithAction(e, t){const n=document.querySelector(".ai-suggestions");if(!n)return void console.error("无法找到具有class为ai-suggestions的元素");const o=document.createElement("div");o.classList.add("ai-suggestions-item"),o.textContent=e,o.addEventListener("click",t),n.appendChild(o)}};console.log("%c🤖 程序:ScoAI | Solitude 主题内置 | Github: https://github.com/DuoSco/Hexo-theme-solitude","color: #fff; background: linear-gradient(-25deg, #a8edea, #fed6e3); padding: 8px 15px; border-radius: 8px; text-shadow: 2px 2px 4px white; color: black;");
@@ -1 +1 @@
1
- .snackbar-container{transition:all .5s ease;transition-property:top,right,bottom,left,opacity;font-family:Roboto,sans-serif;font-size:14px;min-height:14px;background-color:#070b0e;position:fixed;display:flex;justify-content:space-between;align-items:center;color:#fff;line-height:22px;padding:18px 24px;bottom:-100px;top:-100px;opacity:0;z-index:9999}.snackbar-container .action{background:inherit;display:inline-block;border:none;font-size:inherit;text-transform:uppercase;color:#4caf50;margin:0 0 0 24px;padding:0;min-width:min-content;cursor:pointer}@media (min-width:640px){.snackbar-container{min-width:288px;max-width:568px;display:inline-flex;border-radius:2px;margin:24px}}@media (max-width:640px){.snackbar-container{left:0;right:0;width:100%}}.snackbar-pos.bottom-center{top:auto!important;bottom:0;left:50%;transform:translate(-50%,0)}.snackbar-pos.bottom-left{top:auto!important;bottom:0;left:0}.snackbar-pos.bottom-right{top:auto!important;bottom:0;right:0}.snackbar-pos.top-left{bottom:auto!important;top:0;left:0}.snackbar-pos.top-center{bottom:auto!important;top:0;left:50%;transform:translate(-50%,0)}.snackbar-pos.top-right{bottom:auto!important;top:0;right:0}@media (max-width:640px){.snackbar-pos.bottom-center,.snackbar-pos.top-center{left:0;transform:none}}
1
+ @keyframes snackbar-progress{0%{width:0}to{width:100%}}.snackbar-container{transition:all .5s ease;font-family:Roboto,sans-serif;font-size:14px;position:fixed;align-items:center;line-height:22px;padding:18px 24px;bottom:-100px;top:-100px;opacity:0;z-index:9999;background:var(--sco-lighttext)!important;color:var(--sco-card-bg);border-radius:0;display:flex;justify-content:center;max-width:none;min-width:100%!important;margin:0!important;left:0!important;height:60px;transform:none!important}.snackbar-container p{color:var(--sco-card-bg)!important;font-weight:700!important;text-align:center;font-size:.8rem!important;display:flex;justify-content:center}.snackbar-container .action{display:inline-block;font-size:inherit;margin:0 0 0 24px;min-width:min-content;cursor:pointer;color:var(--sco-card-bg);background:var(--sco-lighttext);padding:4px 6px;font-weight:700;border-radius:8px;transition:.3s;border:var(--style-border)}.snackbar-container .action:hover{background:var(--sco-card-bg);color:var(--sco-lighttext)}.snackbar-container:after{position:absolute;width:0;height:100%;left:0;top:0;background:var(--sco-white);opacity:.1;content:"";animation:snackbar-progress var(--sco-snackbar-time) linear forwards;pointer-events:none}@media (min-width:640px){.snackbar-container{min-width:288px;max-width:568px;display:inline-flex;border-radius:2px;margin:24px}}@media (max-width:640px){.snackbar-container{left:0;right:0;width:100%}}.snackbar-pos.bottom-center{top:auto!important;bottom:0;left:50%;transform:translate(-50%,0)}.snackbar-pos.bottom-left{top:auto!important;bottom:0;left:0}.snackbar-pos.bottom-right{top:auto!important;bottom:0;right:0}.snackbar-pos.top-center,.snackbar-pos.top-left{bottom:auto!important;top:0;left:0}.snackbar-pos.top-center{left:50%;transform:translate(-50%,0)}.snackbar-pos.top-right{bottom:auto!important;top:0;right:0}@media (max-width:640px){.snackbar-pos.bottom-center,.snackbar-pos.top-center{left:0;transform:none}}
@@ -0,0 +1 @@
1
+ function getDistance(a,e,s,c){const{sin:t,cos:r,asin:i,PI:o,hypot:n}=Math;let b=(a,e)=>(a*=o/180,{x:r(e*=o/180)*r(a),y:r(e)*t(a),z:t(e)}),l=b(a,e),k=b(s,c),p=2*i(n(l.x-k.x,l.y-k.y,l.z-k.z)/2)*6371;return Math.round(p)}function showWelcome(){let a,e,s,c=getDistance(longitude,Latitude,ipLoacation.result.location.lng,ipLoacation.result.location.lat),t=ipLoacation.result.ad_info.nation;switch(ipLoacation.result.ad_info.nation){case"日本":e="よろしく,一起去看樱花吗";break;case"美国":e="Let us live in peace!";break;case"英国":e="想同你一起夜乘伦敦眼";break;case"俄罗斯":e="干了这瓶伏特加!";break;case"法国":e="C'est La Vie";break;case"德国":e="Die Zeit verging im Fluge.";break;case"澳大利亚":e="一起去大堡礁吧!";break;case"加拿大":e="拾起一片枫叶赠予你";break;case"中国":switch(t=ipLoacation.result.ad_info.province+" "+ipLoacation.result.ad_info.city+" "+ipLoacation.result.ad_info.district,a=ipLoacation.result.ip,ipLoacation.result.ad_info.province){case"北京市":e="北——京——欢迎你~~~";break;case"天津市":e="讲段相声吧";break;case"河北省":e="山势巍巍成壁垒,天下雄关铁马金戈由此向,无限江山";break;case"山西省":e="展开坐具长三尺,已占山河五百余";break;case"内蒙古自治区":e="天苍苍,野茫茫,风吹草低见牛羊";break;case"辽宁省":e="我想吃烤鸡架!";break;case"吉林省":e="状元阁就是东北烧烤之王";break;case"黑龙江省":e="很喜欢哈尔滨大剧院";break;case"上海市":e="众所周知,中国只有两个城市";break;case"江苏省":switch(ipLoacation.result.ad_info.city){case"南京市":e="这是我挺想去的城市啦";break;case"苏州市":e="上有天堂,下有苏杭";break;default:e="散装是必须要散装的"}break;case"浙江省":e="东风渐绿西湖柳,雁已还人未南归";break;case"河南省":switch(ipLoacation.result.ad_info.city){case"郑州市":e="豫州之域,天地之中";break;case"南阳市":e="臣本布衣,躬耕于南阳此南阳非彼南阳!";break;case"驻马店市":e="峰峰有奇石,石石挟仙气嵖岈山的花很美哦!";break;case"开封市":e="刚正不阿包青天";break;case"洛阳市":e="洛阳牡丹甲天下";break;default:e="可否带我品尝河南烩面啦?"}break;case"安徽省":e="蚌埠住了,芜湖起飞";break;case"福建省":e="井邑白云间,岩城远带山";break;case"江西省":e="落霞与孤鹜齐飞,秋水共长天一色";break;case"山东省":e="遥望齐州九点烟,一泓海水杯中泻";break;case"湖北省":if("黄冈市"===ipLoacation.result.ad_info.city)e="红安将军县!辈出将才!";else e="来碗热干面~";break;case"湖南省":e="74751,长沙斯塔克";break;case"广东省":switch(ipLoacation.result.ad_info.city){case"广州市":e="看小蛮腰,喝早茶了嘛~";break;case"深圳市":if("坪山区"===ipLoacation.result.ad_info.district)e="好巧!博主也在坪山区生活喔~";else e="今天你996了嘛~";break;case"阳江市":e="阳春合水!博主家乡~ 欢迎来玩~";break;default:e="来两斤福建人~"}break;case"广西壮族自治区":e="桂林山水甲天下";break;case"海南省":e="朝观日出逐白浪,夕看云起收霞光";break;case"四川省":e="康康川妹子";break;case"贵州省":e="茅台,学生,再塞200";break;case"云南省":e="玉龙飞舞云缠绕,万仞冰川直耸天";break;case"西藏自治区":e="躺在茫茫草原上,仰望蓝天";break;case"陕西省":e="来份臊子面加馍";break;case"甘肃省":e="羌笛何须怨杨柳,春风不度玉门关";break;case"青海省":e="牛肉干和老酸奶都好好吃";break;case"宁夏回族自治区":e="大漠孤烟直,长河落日圆";break;case"新疆维吾尔自治区":e="驼铃古道丝绸路,胡马犹闻唐汉风";break;case"台湾省":e="我在这头,大陆在那头";break;case"香港特别行政区":e="永定贼有残留地鬼嚎,迎击光非岁玉";break;case"澳门特别行政区":e="性感荷官,在线发牌";break;default:e="带我去你的城市逛逛吧!"}break;default:e="带我去你的国家逛逛吧"}let r=new Date;s=r.getHours()>=5&&r.getHours()<11?"<span class='welcome-time'>🌤️ 早上好,一日之计在于晨</span>":r.getHours()>=11&&r.getHours()<13?"<span class='welcome-time'>☀️ 中午好,记得午休喔~</span>":r.getHours()>=13&&r.getHours()<17?"<span class='welcome-time'>🕞 下午好,饮茶先啦!</span>":r.getHours()>=17&&r.getHours()<19?"<span class='welcome-time'>🚶‍♂️ 即将下班,记得按时吃饭~</span>":r.getHours()>=19&&r.getHours()<24?"<span class='welcome-time'>🌙 晚上好,夜生活嗨起来!</span>":"<span class='welcome-time'>夜深了,早点休息,少熬夜</span>";try{document.getElementById("welcome-info").innerHTML=`<span>热烈欢迎来自~</span><br><span><span style="color: var(--sco-main);font-weight: bold;">${t}</span> 的喵友</span><br><span class="welcome-message">${e}</span><br>您当前位置距博主约 <b><span style="color: var(--icat-card-welcome);font-weight: bold;">${c}</span></b> 公里!<br><span>您的IP地址为:${a}</span><br>${s}`}catch(a){}}
@@ -0,0 +1 @@
1
+ function dark(){window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame;var t,i,e,s,n=.05,h=document.getElementById("universe"),a=!0,o="226,225,224",r=[];function d(){t=window.innerWidth,i=window.innerHeight,e=.216*t,h.setAttribute("width",t),h.setAttribute("height",i)}function c(){s.clearRect(0,0,t,i);for(var e=r.length,n=0;n<e;n++){var h=r[n];h.move(),h.fadeIn(),h.fadeOut(),h.draw()}}function f(){this.reset=function(){this.giant=u(3),this.comet=!this.giant&&!a&&u(10),this.x=m(0,t-10),this.y=m(0,i),this.r=m(1.1,2.6),this.dx=m(n,6*n)+(this.comet+1-1)*n*m(50,120)+.1,this.dy=-m(n,6*n)-(this.comet+1-1)*n*m(50,120),this.fadingOut=null,this.fadingIn=!0,this.opacity=0,this.opacityTresh=m(.2,1-.4*(this.comet+1-1)),this.do=m(5e-4,.002)+.001*(this.comet+1-1)},this.fadeIn=function(){this.fadingIn&&(this.fadingIn=!(this.opacity>this.opacityTresh),this.opacity+=this.do)},this.fadeOut=function(){this.fadingOut&&(this.fadingOut=!(this.opacity<0),this.opacity-=this.do/2,(this.x>t||this.y<0)&&(this.fadingOut=!1,this.reset()))},this.draw=function(){if(s.beginPath(),this.giant)s.fillStyle="rgba(180,184,240,"+this.opacity+")",s.arc(this.x,this.y,2,0,2*Math.PI,!1);else if(this.comet){s.fillStyle="rgba("+o+","+this.opacity+")",s.arc(this.x,this.y,1.5,0,2*Math.PI,!1);for(var t=0;t<30;t++)s.fillStyle="rgba("+o+","+(this.opacity-this.opacity/20*t)+")",s.rect(this.x-this.dx/4*t,this.y-this.dy/4*t-2,2,2),s.fill()}else s.fillStyle="rgba(226,225,142,"+this.opacity+")",s.rect(this.x,this.y,this.r,this.r);s.closePath(),s.fill()},this.move=function(){this.x+=this.dx,this.y+=this.dy,!1===this.fadingOut&&this.reset(),(this.x>t-t/4||this.y<0)&&(this.fadingOut=!0)},setTimeout((function(){a=!1}),50)}function u(t){return Math.floor(1e3*Math.random())+1<10*t}function m(t,i){return Math.random()*(i-t)+t}d(),window.addEventListener("resize",d,!1),function(){s=h.getContext("2d");for(var t=0;t<e;t++)r[t]=new f,r[t].reset();c()}(),function t(){"dark"==document.getElementsByTagName("html")[0].getAttribute("data-theme")&&c(),window.requestAnimationFrame(t)}()}
@@ -3,4 +3,4 @@
3
3
  * MIT License - http://www.opensource.org/licenses/mit-license.php
4
4
  * https://tokinx.github.io/ViewImage/
5
5
  */
6
- var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(b){return b.raw=b};$jscomp.createTemplateTagFirstArgWithRaw=function(b,a){b.raw=a;return b};$jscomp.arrayIteratorImpl=function(b){var a=0;return function(){return a<b.length?{done:!1,value:b[a++]}:{done:!0}}};$jscomp.arrayIterator=function(b){return{next:$jscomp.arrayIteratorImpl(b)}};$jscomp.makeIterator=function(b){var a="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];return a?a.call(b):$jscomp.arrayIterator(b)};$jscomp.arrayFromIterator=function(b){for(var a,d=[];!(a=b.next()).done;)d.push(a.value);return d};$jscomp.arrayFromIterable=function(b){return b instanceof Array?b:$jscomp.arrayFromIterator($jscomp.makeIterator(b))};(function(){window.ViewImage=new function(){var b=this;this.target="[view-image] img";this.listener=function(a){if(!(a.ctrlKey||a.metaKey||a.shiftKey||a.altKey)){var d=String(b.target.split(",").map(function(g){return g.trim()+":not([no-view])"})),c=a.target.closest(d);if(c){var e=c.closest("[view-image]")||document.body;d=[].concat($jscomp.arrayFromIterable(e.querySelectorAll(d))).map(function(g){return g.href||g.src});b.display(d,c.href||c.src);a.stopPropagation();a.preventDefault()}}};this.init= function(a){a&&(b.target=a);["removeEventListener","addEventListener"].forEach(function(d){document[d]("click",b.listener,!1)})};this.display=function(a,d){var c=a.indexOf(d),e=(new DOMParser).parseFromString('\n <div class="view-image">\n <style>.view-image{position:fixed;inset:0;z-index:500;padding:1rem;display:flex;flex-direction:column;animation:view-image-in 300ms;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.view-image__out{animation:view-image-out 300ms}@keyframes view-image-in{0%{opacity:0}}@keyframes view-image-out{100%{opacity:0}}.view-image-btn{width:32px;height:32px;display:flex;justify-content:center;align-items:center;cursor:pointer;border-radius:3px;background-color:rgba(255,255,255,0.2)}.view-image-btn:hover{background-color:rgba(255,255,255,0.5)}.view-image-close__full{position:absolute;inset:0;background-color:rgba(48,55,66,0.3);z-index:unset;cursor:zoom-out;margin:0}.view-image-container{height:0;flex:1;display:flex;align-items:center;justify-content:center;}.view-image-lead{display:contents}.view-image-lead img{position:relative;z-index:1;max-width:100%;max-height:100%;object-fit:contain;border-radius:3px}.view-image-lead__in img{animation:view-image-lead-in 300ms}.view-image-lead__out img{animation:view-image-lead-out 300ms forwards}@keyframes view-image-lead-in{0%{opacity:0;transform:translateY(-20px)}}@keyframes view-image-lead-out{100%{opacity:0;transform:translateY(20px)}}[class*=__out] ~ .view-image-loading{display:block}.view-image-loading{position:absolute;inset:50%;width:8rem;height:2rem;color:#aab2bd;overflow:hidden;text-align:center;margin:-1rem -4rem;z-index:1;display:none}.view-image-loading::after{content:"";position:absolute;inset:50% 0;width:100%;height:3px;background:rgba(255,255,255,0.5);transform:translateX(-100%) translateY(-50%);animation:view-image-loading 800ms -100ms ease-in-out infinite}@keyframes view-image-loading{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}.view-image-tools{position:relative;display:flex;justify-content:space-between;align-content:center;color:#fff;max-width:600px;position: absolute; bottom: 5%; left: 1rem; right: 1rem; backdrop-filter: blur(10px);margin:0 auto;padding:10px;border-radius:5px;background:rgba(0,0,0,0.1);margin-bottom:constant(safe-area-inset-bottom);margin-bottom:env(safe-area-inset-bottom);z-index:1}.view-image-tools__count{width:60px;display:flex;align-items:center;justify-content:center}.view-image-tools__flip{display:flex;gap:10px}.view-image-tools [class*=-close]{margin:0 10px}</style>\n <div class="view-image-container">\n <div class="view-image-lead"></div>\n <div class="view-image-loading"></div>\n <div class="view-image-close view-image-close__full"></div>\n </div>\n <div class="view-image-tools">\n <div class="view-image-tools__count">\n <span><b class="view-image-index">'+ (c+1)+"</b>/"+a.length+'</span>\n </div>\n <div class="view-image-tools__flip">\n <div class="view-image-btn view-image-tools__flip-prev">\n <svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M31 36L19 24L31 12" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>\n </div>\n <div class="view-image-btn view-image-tools__flip-next">\n <svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M19 12L31 24L19 36" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>\n </div>\n </div>\n <div class="view-image-btn view-image-close">\n <svg width="16" height="16" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M8 8L40 40" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M8 40L40 8" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>\n </div>\n </div>\n </div>\n ', "text/html").body.firstChild,g=function(f){var h={Escape:"close",ArrowLeft:"tools__flip-prev",ArrowRight:"tools__flip-next"};h[f.key]&&e.querySelector(".view-image-"+h[f.key]).click()},l=function(f){var h=new Image,k=e.querySelector(".view-image-lead");k.className="view-image-lead view-image-lead__out";setTimeout(function(){k.innerHTML="";h.onload=function(){setTimeout(function(){k.innerHTML='<img src="'+h.src+'" alt="ViewImage" no-view/>';k.className="view-image-lead view-image-lead__in"},100)};h.src=f},300)};document.body.appendChild(e);l(d);window.addEventListener("keydown",g);e.onclick=function(f){f.target.closest(".view-image-close")?(window.removeEventListener("keydown",g),e.onclick=null,e.classList.add("view-image__out"),setTimeout(function(){return e.remove()},290)):f.target.closest(".view-image-tools__flip")&&(c=f.target.closest(".view-image-tools__flip-prev")?0===c?a.length-1:c-1:c===a.length-1?0:c+1,l(a[c]),e.querySelector(".view-image-index").innerHTML=c+1)}}}})();
6
+ var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(b){return b.raw=b};$jscomp.createTemplateTagFirstArgWithRaw=function(b,a){b.raw=a;return b};$jscomp.arrayIteratorImpl=function(b){var a=0;return function(){return a<b.length?{done:!1,value:b[a++]}:{done:!0}}};$jscomp.arrayIterator=function(b){return{next:$jscomp.arrayIteratorImpl(b)}};$jscomp.makeIterator=function(b){var a="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];return a?a.call(b):$jscomp.arrayIterator(b)};$jscomp.arrayFromIterator=function(b){for(var a,d=[];!(a=b.next()).done;)d.push(a.value);return d};$jscomp.arrayFromIterable=function(b){return b instanceof Array?b:$jscomp.arrayFromIterator($jscomp.makeIterator(b))};(function(){window.ViewImage=new function(){var b=this;this.target="[view-image] img";this.listener=function(a){if(!(a.ctrlKey||a.metaKey||a.shiftKey||a.altKey)){var d=String(b.target.split(",").map(function(g){return g.trim()+":not([no-view])"})),c=a.target.closest(d);if(c){var e=c.closest("[view-image]")||document.body;d=[].concat($jscomp.arrayFromIterable(e.querySelectorAll(d))).map(function(g){return g.href||g.src});b.display(d,c.href||c.src);a.stopPropagation();a.preventDefault()}}};this.init= function(a){a&&(b.target=a);["removeEventListener","addEventListener"].forEach(function(d){document[d]("click",b.listener,!1)})};this.display=function(a,d){var c=a.indexOf(d),e=(new DOMParser).parseFromString('\n <div class="view-image">\n <style>.view-image{position:fixed;inset:0;z-index:500;padding:1rem;display:flex;flex-direction:column;animation:view-image-in 300ms;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.view-image__out{animation:view-image-out 300ms}@keyframes view-image-in{0%{opacity:0}}@keyframes view-image-out{100%{opacity:0}}.view-image-btn{width:32px;height:32px;display:flex;justify-content:center;align-items:center;cursor:pointer;border-radius:3px;background-color:rgba(255,255,255,0.2)}.view-image-btn:hover{background-color:rgba(255,255,255,0.5)}.view-image-close__full{position:absolute;inset:0;background-color:rgba(48,55,66,0.3);z-index:unset;cursor:zoom-out;margin:0}.view-image-container{height:0;flex:1;display:flex;align-items:center;justify-content:center;z-index:999}.view-image-lead{display:contents}.view-image-lead img{position:relative;z-index:1;max-width:100%;max-height:100%;object-fit:contain;border-radius:3px}.view-image-lead__in img{animation:view-image-lead-in 300ms}.view-image-lead__out img{animation:view-image-lead-out 300ms forwards}@keyframes view-image-lead-in{0%{opacity:0;transform:translateY(-20px)}}@keyframes view-image-lead-out{100%{opacity:0;transform:translateY(20px)}}[class*=__out] ~ .view-image-loading{display:block}.view-image-loading{position:absolute;inset:50%;width:8rem;height:2rem;color:#aab2bd;overflow:hidden;text-align:center;margin:-1rem -4rem;z-index:1;display:none}.view-image-loading::after{content:"";position:absolute;inset:50% 0;width:100%;height:3px;background:rgba(255,255,255,0.5);transform:translateX(-100%) translateY(-50%);animation:view-image-loading 800ms -100ms ease-in-out infinite}@keyframes view-image-loading{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}.view-image-tools{position:relative;display:flex;justify-content:space-between;align-content:center;color:#fff;max-width:600px;position: absolute; bottom: 5%; left: 1rem; right: 1rem; backdrop-filter: blur(10px);margin:0 auto;padding:10px;border-radius:5px;background:rgba(0,0,0,0.1);margin-bottom:constant(safe-area-inset-bottom);margin-bottom:env(safe-area-inset-bottom);z-index:999}.view-image-tools__count{width:60px;display:flex;align-items:center;justify-content:center}.view-image-tools__flip{display:flex;gap:10px}.view-image-tools [class*=-close]{margin:0 10px}</style>\n <div class="view-image-container">\n <div class="view-image-lead"></div>\n <div class="view-image-loading"></div>\n <div class="view-image-close view-image-close__full"></div>\n </div>\n <div class="view-image-tools">\n <div class="view-image-tools__count">\n <span><b class="view-image-index">'+ (c+1)+"</b>/"+a.length+'</span>\n </div>\n <div class="view-image-tools__flip">\n <div class="view-image-btn view-image-tools__flip-prev">\n <svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M31 36L19 24L31 12" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>\n </div>\n <div class="view-image-btn view-image-tools__flip-next">\n <svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M19 12L31 24L19 36" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>\n </div>\n </div>\n <div class="view-image-btn view-image-close">\n <svg width="16" height="16" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M8 8L40 40" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M8 40L40 8" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>\n </div>\n </div>\n </div>\n ', "text/html").body.firstChild,g=function(f){var h={Escape:"close",ArrowLeft:"tools__flip-prev",ArrowRight:"tools__flip-next"};h[f.key]&&e.querySelector(".view-image-"+h[f.key]).click()},l=function(f){var h=new Image,k=e.querySelector(".view-image-lead");k.className="view-image-lead view-image-lead__out";setTimeout(function(){k.innerHTML="";h.onload=function(){setTimeout(function(){k.innerHTML='<img src="'+h.src+'" alt="ViewImage" no-view/>';k.className="view-image-lead view-image-lead__in"},100)};h.src=f},300)};document.body.appendChild(e);l(d);window.addEventListener("keydown",g);e.onclick=function(f){f.target.closest(".view-image-close")?(window.removeEventListener("keydown",g),e.onclick=null,e.classList.add("view-image__out"),setTimeout(function(){return e.remove()},290)):f.target.closest(".view-image-tools__flip")&&(c=f.target.closest(".view-image-tools__flip-prev")?0===c?a.length-1:c-1:c===a.length-1?0:c+1,l(a[c]),e.querySelector(".view-image-index").innerHTML=c+1)}}}})();
@@ -1,19 +0,0 @@
1
- - const data = theme.aside.power.list
2
- - const vip = data[Math.floor(Math.random() * data.length)]
3
- .card-widget.card-power
4
- .item-headline
5
- i.scoicon.sco-afdian-line
6
- span 爱发电赞助
7
- a.power-charge(href=theme.aside.power.link, rel="external nofollow", target="_blank", title="赞助博主") 赞助
8
- a#power-star(data-pjax-state="", href=vip.link)
9
- #power-star-image(style=`background-image: url('${vip.avatar}');`)
10
- .power-star-body
11
- #power-star-title= vip.name
12
- #power-star-desc= vip.descr
13
- .power-list
14
- .power-item
15
- .power-item-body
16
- each item in data
17
- if item.name !== vip.name
18
- .power-item-link
19
- a(target="_blank", href=item.link, rel="external nofollow")= item.name
@@ -1,26 +0,0 @@
1
- - var filteredPosts = site.posts.data.filter(item => item.recommend === true).slice(0,6)
2
- each post in filteredPosts
3
- .recent-post-item
4
- .post_cover.left_radius
5
- a(href=url_for(post.path), title=post.title)
6
- span.recent-post-top-text 荐
7
- img.post_bg(alt=post.title, src=post.cover, loading="lazy")
8
- .recent-post-info
9
- a.article-title(href=url_for(post.path), title=post.title)= post.title
10
-
11
- if theme.hometop.recommendList.url.startsWith('/') && theme.hometop.recommendList.url.endsWith('/')
12
- .todayCard#todayCard(onclick=`pjax.loadUrl('${theme.hometop.recommendList.url}')`, style="z-index: 1;")
13
- else
14
- script.
15
- function GoTodayCard() {
16
- window.open("#{theme.hometop.recommendList.url}", "_blank");
17
- }
18
- .todayCard#todayCard(onclick="GoTodayCard()", style="z-index: 1;")
19
- .todayCard-info
20
- .todayCard-tips= theme.hometop.recommendList.sup
21
- .todayCard-title= theme.hometop.recommendList.title
22
- .todayCard-cover.nolazyload(style=`background: url('${theme.hometop.recommendList.img}') no-repeat center /cover`)
23
- .banner-button-group
24
- a.banner-button(onclick="window.event.cancelBubble=true;sco.hideTodayCard();")
25
- i.scoicon.sco-add-fill
26
- span.banner-button-text 更多推荐
@@ -1,83 +0,0 @@
1
- #rightMenu
2
- display none
3
- position fixed
4
- padding 0 .25rem
5
- width 9rem
6
- height fit-content
7
- top 10%
8
- left 10%
9
- background-color var(--sco-maskbgdeep)
10
- -webkit-backdrop-filter blur(20px)
11
- backdrop-filter blur(20px)
12
- transform translateZ(0)
13
- color var(--sco-fontcolor)
14
- border-radius 12px
15
- z-index 99994
16
- border var(--style-border)
17
- user-select none
18
- box-shadow var(--sco-shadow-black)
19
- transition border .3s
20
-
21
- #rightMenu:hover
22
- border var(--style-border-hover)
23
- box-shadow var(--sco-shadow-theme)
24
-
25
- #rightMenu .rightMenu-group
26
- padding .35rem .3rem
27
- transition .3s
28
-
29
- #rightMenu .rightMenu-line
30
- border-top 1px dashed var(--sco-theme-op)
31
-
32
- #rightMenu .rightMenu-group.rightMenu-small
33
- display flex
34
- justify-content space-between
35
-
36
- #rightMenu .rightMenu-group .rightMenu-item
37
- border-radius 8px
38
- transition .3s
39
- cursor pointer
40
-
41
- #rightMenu .rightMenu-line .rightMenu-item
42
- margin .25rem 0
43
- padding .25rem 0
44
-
45
- #rightMenu .rightMenu-group.rightMenu-line .rightMenu-item
46
- display flex
47
-
48
- #rightMenu .rightMenu-group .rightMenu-item:hover
49
- background-color var(--sco-main)
50
- color var(--sco-white)
51
- box-shadow var(--sco-shadow-main)
52
-
53
- #rightMenu .rightMenu-group .rightMenu-item i
54
- display inline-block
55
- text-align center
56
- line-height 1.5rem
57
- width 1.5rem
58
- padding 0 .25rem
59
-
60
- #rightMenu .rightMenu-line .rightMenu-item i
61
- margin 0 .25rem
62
-
63
- #rightMenu .rightMenu-group .rightMenu-item span
64
- line-height 1.5rem
65
-
66
- .rightMenu-small .rightMenu-item
67
- width 30px
68
- height 30px
69
- line-height 30px
70
- display flex
71
- align-items center
72
- justify-content center
73
-
74
- #rightmenu-mask
75
- position fixed
76
- width 100vw
77
- height 100vh
78
- background 0 0
79
- top 0
80
- left 0
81
- display none
82
- margin 0 !important
83
- z-index 99993
@@ -1,199 +0,0 @@
1
- .article-sort-title:before
2
- display none
3
-
4
- .article-sort-title:after
5
- display none
6
-
7
- .article-sort-title
8
- margin-left 0
9
- padding-bottom 0
10
- padding-left 0
11
- font-weight 700
12
- font-size 2em
13
-
14
- .article-sort-title sup
15
- margin-left 4px
16
- font-size 16px
17
- font-weight 700
18
- opacity .4
19
- top -1em
20
-
21
- .article-sort-item-title
22
- line-height 1.3
23
- -webkit-line-clamp 1
24
-
25
- @media screen and (max-width: 768px)
26
- .article-sort-item-title
27
- -webkit-line-clamp 2
28
-
29
- .article-sort .article-sort-item .article-sort-item-img
30
- border-radius 12px
31
- min-width 151px
32
- min-height 80px
33
- background var(--sco-secondbg)
34
- -webkit-mask-image -webkit-radial-gradient(center, #fff, #000)
35
-
36
- @media screen and (max-width: 768px)
37
- .article-sort .article-sort-item .article-sort-item-img
38
- min-width 80px
39
-
40
- .article-sort-item:before
41
- display none
42
-
43
- @media screen and (max-width: 768px)
44
- .article-sort-item-info a
45
- white-space inherit !important
46
-
47
- .article-sort-item.year
48
- font-size .8rem
49
- color var(--sco-secondtext)
50
- margin-bottom .2rem
51
-
52
- .article-sort-item-img img:hover
53
- transform scale(1)
54
-
55
- .article-sort-item-info
56
- padding 0 .8rem
57
- display flex
58
- flex-direction column
59
- -webkit-box-flex 1
60
- flex 1 1 0
61
-
62
- .article-sort-item-time
63
- order 1
64
- margin-top 4px
65
- color var(--sco-secondtext)
66
- display none
67
-
68
- .article-sort-item-title
69
- order 0
70
- font-weight 700
71
-
72
- .article-sort-item-info a
73
- margin-right auto
74
- overflow hidden
75
- text-overflow ellipsis
76
-
77
- .article-sort-item-info-more
78
- display flex
79
- font-size .7rem
80
- margin-right auto
81
-
82
- .article-sort-item-tags
83
- margin-top 8px
84
- white-space nowrap
85
- overflow hidden
86
- display inline-block
87
- text-overflow ellipsis
88
- width 100%
89
- font-size .7rem
90
- max-height 50px
91
-
92
- .article-sort-item-tags a
93
- color var(--sco-fontcolor)
94
- transition .3s
95
-
96
- .article-sort-item-tags a:hover
97
- color var(--sco-theme)
98
- transition .3s
99
-
100
- .article-sort-item-tags a .tags-punctuation
101
- font-size 12px
102
- margin-right 1px
103
-
104
- .article-sort
105
- margin-left 0
106
- padding-left 0
107
-
108
- .article-sort-title::before
109
- position absolute
110
- top calc((100% - 1.8rem) / 2)
111
- left -.45rem
112
- z-index 1
113
- width .5rem
114
- height .5rem
115
- border .25rem solid #307af6
116
- border-radius .5rem
117
- background var(--sco-card-bg)
118
- content ""
119
- line-height .5rem
120
- transition all .2s ease-in-out 0s
121
-
122
- .article-sort-title::after
123
- position absolute
124
- bottom 0
125
- left 0
126
- z-index 0
127
- width .1rem
128
- height 1.5em
129
- background #92b9fa
130
- content ""
131
-
132
- .article-sort-item
133
- position relative
134
- display flex
135
- -webkit-box-align center
136
- align-items center
137
- margin 0 0 1rem .5rem
138
- transition all .2s ease-in-out 0s
139
- overflow hidden
140
- border-radius 12px
141
-
142
-
143
- .article-sort-item:hover::before
144
- border-color #ff7242
145
-
146
- .article-sort-item::before
147
- position absolute
148
- left calc(-1rem - 17px)
149
- width .3rem
150
- height .3rem
151
- border .15rem solid #307af6
152
- border-radius .3rem
153
- background var(--sco-card-bg)
154
- content ""
155
- transition all .2s ease-in-out 0s
156
-
157
- .article-sort-item.no-article-cover
158
- height 80px
159
-
160
- .article-sort-item.no-article-cover .article-sort-item-info
161
- padding 0
162
-
163
- .article-sort-item.year:hover::before
164
- border-color #307af6
165
-
166
- .article-sort-item.year::before
167
- border-color #ff7242
168
-
169
- .article-sort-item-time
170
- color #858585
171
- font-size 95%
172
-
173
- .article-sort-item-time time
174
- padding-left .3rem
175
- cursor default
176
-
177
- .article-sort-item-title
178
- color var(--sco-fontcolor)
179
- font-size 1.1em
180
- transition all .3s ease 0s
181
- -webkit-line-clamp 2
182
-
183
- .article-sort-item-title:hover
184
- color var(sco-main)
185
- transform all .3s
186
-
187
- .article-sort-item-img
188
- overflow hidden
189
- width 80px
190
- height 80px
191
-
192
- .article-sort-item-img img
193
- width 100%
194
- height 100%
195
- transition all .6s ease 0s
196
- object-fit cover
197
-
198
- .article-sort-item-img img:hover
199
- transform scale(1.1)