hexo-theme-stellar 1.30.4 → 1.32.0

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 (78) hide show
  1. package/_config.yml +30 -16
  2. package/_data/icons.yml +3 -3
  3. package/_data/widgets.yml +0 -1
  4. package/layout/_partial/comments/artalk/script.ejs +1 -2
  5. package/layout/_partial/comments/layout.ejs +1 -1
  6. package/layout/_partial/head.ejs +20 -1
  7. package/layout/_partial/main/navbar/ghinfo.ejs +1 -1
  8. package/layout/_partial/scripts/defines.ejs +9 -0
  9. package/layout/_partial/scripts/theme.ejs +3 -3
  10. package/layout/_partial/sidebar/index_leftbar.ejs +9 -9
  11. package/layout/_partial/widgets/ghissues.ejs +1 -1
  12. package/layout/_partial/widgets/ghrepo.ejs +2 -2
  13. package/layout/_partial/widgets/ghuser.ejs +1 -1
  14. package/layout/index.ejs +3 -1
  15. package/layout/layout.ejs +3 -1
  16. package/package.json +4 -2
  17. package/scripts/events/index.js +46 -4
  18. package/scripts/events/lib/fix_image_tags.js +44 -0
  19. package/scripts/events/lib/get_image_ratios.js +88 -0
  20. package/scripts/events/lib/version-check.js +86 -0
  21. package/scripts/helpers/json_ld.js +118 -0
  22. package/scripts/tags/lib/albums.js +2 -1
  23. package/scripts/tags/lib/friends.js +2 -1
  24. package/scripts/tags/lib/ghcard.js +3 -2
  25. package/scripts/tags/lib/image.js +16 -6
  26. package/scripts/tags/lib/posters.js +2 -1
  27. package/scripts/tags/lib/sites.js +2 -1
  28. package/scripts/tags/lib/timeline.js +1 -1
  29. package/scripts/tags/lib/video.js +4 -4
  30. package/source/css/_common/base.styl +1 -2
  31. package/source/css/_common/canonical.styl +32 -0
  32. package/source/css/_common/device.styl +6 -4
  33. package/source/css/_common/highlight.styl +1 -1
  34. package/source/css/_components/layout.styl +11 -10
  35. package/source/css/_components/list.styl +3 -0
  36. package/source/css/_components/main.styl +1 -1
  37. package/source/css/_components/md.styl +4 -2
  38. package/source/css/_components/pages/archives.styl +2 -2
  39. package/source/css/_components/pages/article-story.styl +6 -0
  40. package/source/css/_components/pages/article-tech.styl +1 -1
  41. package/source/css/_components/pages/notebook.styl +1 -1
  42. package/source/css/_components/partial/article-banner.styl +4 -1
  43. package/source/css/_components/partial/footer.styl +1 -1
  44. package/source/css/_components/partial/navbar.styl +2 -1
  45. package/source/css/_components/sidebar/nav-area.styl +1 -1
  46. package/source/css/_components/sidebar/search.styl +44 -21
  47. package/source/css/_components/sidebar/sidebar.styl +22 -18
  48. package/source/css/_components/tag-plugins/banner.styl +1 -1
  49. package/source/css/_components/tag-plugins/button.styl +3 -4
  50. package/source/css/_components/tag-plugins/copy.styl +1 -1
  51. package/source/css/_components/tag-plugins/friends.styl +1 -1
  52. package/source/css/_components/tag-plugins/gallery.styl +6 -0
  53. package/source/css/_components/tag-plugins/image.styl +10 -0
  54. package/source/css/_components/tag-plugins/media.styl +1 -1
  55. package/source/css/_components/tag-plugins/note.styl +1 -1
  56. package/source/css/_components/tag-plugins/override.styl +1 -1
  57. package/source/css/_components/tag-plugins/quot.styl +2 -2
  58. package/source/css/_components/tag-plugins/tabs.styl +4 -3
  59. package/source/css/_components/tag-plugins/timeline.styl +2 -2
  60. package/source/css/_components/tag-plugins/toc.styl +1 -1
  61. package/source/css/_components/widgets/list.styl +1 -3
  62. package/source/css/_components/widgets/markdown.styl +0 -7
  63. package/source/css/_components/widgets/toc.styl +6 -4
  64. package/source/css/_components/widgets/widgets.styl +0 -5
  65. package/source/css/_custom.styl +5 -7
  66. package/source/css/_defines/const.styl +1 -1
  67. package/source/css/_defines/func.styl +9 -5
  68. package/source/css/_defines/theme.styl +4 -15
  69. package/source/css/_plugins/comments/artalk.styl +114 -2
  70. package/source/css/_plugins/comments/twikoo.styl +3 -3
  71. package/source/css/_plugins/index.styl +5 -5
  72. package/source/css/_plugins/lazyload.styl +49 -2
  73. package/source/js/main.js +50 -0
  74. package/source/js/plugins/download-file.js +1 -1
  75. package/source/js/search/local-search.js +163 -151
  76. package/source/js/services/artalk_latest_comment.js +1 -1
  77. package/source/js/services/mdrender.js +0 -1
  78. package/layout/_partial/widgets/search.ejs +0 -0
@@ -49,18 +49,21 @@
49
49
  position: absolute
50
50
  z-index 0
51
51
  left: 0
52
- width: 100%
52
+ right: 0
53
53
  backdrop-filter: saturate(var(--blur-sat)) blur(var(--blur-px))
54
+ -webkit-backdrop-filter: saturate(var(--blur-sat)) blur(var(--blur-px))
54
55
  trans1 all
55
56
  opacity var(--blur-opacity)
56
57
  &:before
57
58
  top: 0
58
59
  height: var(--blur-height-top)
59
60
  mask: linear-gradient(black, rgba(black, 0.75), transparent)
61
+ -webkit-mask: linear-gradient(black, rgba(black, 0.75), transparent)
60
62
  &:after
61
63
  bottom: 0
62
64
  height: var(--blur-height-bottom)
63
65
  mask: linear-gradient(transparent, rgba(black, 0.75), black)
66
+ -webkit-mask: linear-gradient(transparent, rgba(black, 0.75), black)
64
67
  .top,.bottom
65
68
  z-index 1
66
69
 
@@ -7,7 +7,7 @@
7
7
  transition: background 0.2s ease-out
8
8
  &:hover
9
9
  color: var(--text)
10
- background: var(--block-hover)
10
+ background: var(--block-border)
11
11
 
12
12
  .page-footer .sitemap
13
13
  margin: .5rem -4px 2rem
@@ -1,6 +1,6 @@
1
1
  .navbar
2
2
  z-index: 8
3
- top: 8px
3
+ top: calc(var(--gap-margin) * 2)
4
4
  position: sticky
5
5
  position: -webkit-sticky
6
6
 
@@ -46,6 +46,7 @@
46
46
  cursor default
47
47
  pointer-events: none
48
48
  backdrop-filter: saturate(300%)
49
+ -webkit-backdrop-filter: saturate(300%)
49
50
  &.active:after
50
51
  content: ''
51
52
  a+a
@@ -1,2 +1,2 @@
1
1
  .nav-area
2
- margin: 32px var(--gap-margin) 0
2
+ margin: 1rem var(--gap-margin) 0
@@ -1,21 +1,40 @@
1
1
 
2
2
  .search-wrapper
3
+ padding-bottom: 32px
3
4
  width: 100%
5
+ border-radius: $border-card-s
4
6
  >.search-form
5
7
  position: sticky
6
- margin-bottom: 8px
7
- top: 1rem
8
+ top: 0
8
9
  height: 40px
9
10
  display: flex
10
11
  flex-direction: row
11
12
  align-items: center
12
13
  transition: 0.38s ease-out
13
- z-index: 0
14
- border-radius: $border-bar
14
+ z-index: 1
15
+ border-radius: $border-card-s
15
16
  color: var(--text)
16
- background: var(--alpha50)
17
- &:has(input:focus)
17
+ >*
18
+ z-index: 1
19
+ &:before
20
+ position: absolute
21
+ content: ''
22
+ height: 2px
23
+ bottom: 0
24
+ left: 1rem
25
+ right: 1rem
26
+ border-radius: $border-bar
18
27
  background: var(--alpha100)
28
+ @media screen and (prefers-color-scheme: dark)
29
+ background: var(--alpha20)
30
+ z-index 0
31
+ trans1 all
32
+ &:hover,&:has(input:focus),&:has(input:not(:placeholder-shown))
33
+ &:before
34
+ background: var(--alpha100)
35
+ height: 100%
36
+ left: 0
37
+ right: 0
19
38
  .search-input
20
39
  width: 100%
21
40
  box-sizing: border-box
@@ -23,6 +42,10 @@
23
42
  font-size: $fs-14
24
43
  padding: 12px 0
25
44
  color: var(--text)
45
+ &::placeholder
46
+ color: var(--text-p3)
47
+ @media screen and (prefers-color-scheme: dark)
48
+ color: var(--text-p2)
26
49
  .search-button
27
50
  border-radius: $border-bar
28
51
  display: flex
@@ -30,8 +53,7 @@
30
53
  height: 40px
31
54
  svg
32
55
  height: 1rem
33
- width: 40px
34
- margin-left: 4px
56
+ width: calc((var(--side-content-width) + var(--gap-padding) * 2 - 3 * 8px) * 0.25)
35
57
  color: var(--text-p2)
36
58
  fill: currentColor
37
59
  path[p-id="1562"]
@@ -52,33 +74,34 @@
52
74
  text-align: center
53
75
  font-size: $fs-14
54
76
  padding: 2rem
77
+ margin: 8px 0
55
78
  background: var(--alpha20)
56
- border-radius: $border-card
79
+ border-radius: $border-card-s
57
80
 
58
81
 
59
82
  #search-result
60
83
  max-height: 60vh
61
- overflow: scroll
84
+ overflow: auto
62
85
  scrollbar-width: none
63
86
  scrollbar(0, 0)
64
- border-radius: $border-card
87
+ border-radius: $border-bar
65
88
  &:empty
66
89
  display: none
67
90
  .search-result-list
68
91
  padding: 0
69
- margin: 0
92
+ margin: 8px 0
70
93
  list-style-type: none
71
94
  li a
72
- display: block
73
- background: var(--alpha20)
74
- line-height: 1.2
75
- padding: 0.75rem 1rem
76
- border-radius: $border-card
77
- trans1 background
78
- &:hover
79
- background: var(--alpha100)
95
+ display: block
96
+ background: var(--alpha20)
97
+ line-height: 1.2
98
+ padding: 0.75rem 1rem
99
+ border-radius: $border-card-s
100
+ trans1 background
101
+ &:hover
102
+ background: var(--alpha100)
80
103
  li+li
81
- margin-top: 8px
104
+ margin-top: 8px
82
105
  .search-result-title
83
106
  color: var(--text-p1)
84
107
  font-weight: 700
@@ -1,12 +1,12 @@
1
1
  .l_left
2
- margin: 8px
3
- max-height: 'calc(%s - 16px)' % 100vh
2
+ margin: calc(var(--gap-margin) * 2) var(--gap-margin)
3
+ max-height: 'calc(%s - %s * 2 - %s)' % (100vh var(--gap-margin) $leftbar-bottom-margin)
4
4
  border-radius: $border-card-l
5
5
  .header
6
6
  margin: var(--gap-max) var(--gap-margin) 0
7
7
 
8
8
  .l_right
9
- margin: 8px
9
+ margin: calc(var(--gap-margin) * 2) 0
10
10
  border-radius: $border-card-l
11
11
  @media screen and (min-width: $device-2k)
12
12
  .l_left
@@ -20,10 +20,11 @@
20
20
  .sidebg
21
21
  pointer-events: none
22
22
  position: absolute
23
- top: 0
24
- bottom: 0
25
- left: 0
26
- right: 0
23
+ --inset: 0
24
+ top: var(--inset)
25
+ bottom: var(--inset)
26
+ left: var(--inset)
27
+ right: var(--inset)
27
28
  background-position: center
28
29
  background-size: cover
29
30
  border-radius: $border-card-l
@@ -32,8 +33,7 @@
32
33
  --brightness: 100%
33
34
  if hexo-config('style.leftbar') && hexo-config('style.leftbar.background-image')
34
35
  if hexo-config('style.leftbar.blur-px')
35
- left: 20%
36
- right: 20%
36
+ --inset: 32px
37
37
  background-image: convert(hexo-config('style.leftbar.background-image'))
38
38
  filter: saturate(var(--saturate)) brightness(var(--brightness)) blur(var(--blur-px))
39
39
  @media screen and (prefers-color-scheme: dark)
@@ -44,13 +44,19 @@
44
44
  background: convert(hexo-config('style.leftbar.background'))
45
45
 
46
46
  .leftbar-container
47
- height: 'calc(%s - 16px)' % 100vh
47
+ height: 'calc(%s - %s * 2 - %s)' % (100vh var(--gap-margin) $leftbar-bottom-margin)
48
48
  display: flex
49
49
  flex-direction: column
50
50
  word-break: break-all
51
51
  text-align: justify
52
52
  border-radius: $border-card-l
53
53
  overflow: hidden
54
+ >.widgets
55
+ border-radius: $border-bar
56
+ mask: linear-gradient(white, 90%, transparent)
57
+ -webkit-mask: linear-gradient(white, 90%, transparent)
58
+ >*
59
+ z-index 1
54
60
  &:before,&:after
55
61
  position: absolute
56
62
  pointer-events: none
@@ -65,7 +71,9 @@
65
71
  background: rgba(white, 0.5)
66
72
  box-shadow: inset 0 0 32px 1px rgba(white, 0.5)
67
73
  backdrop-filter: saturate(300%)
68
- mask: linear-gradient(black, rgba(black, 0.5), 80%, transparent, 90%, transparent)
74
+ -webkit-backdrop-filter: saturate(300%)
75
+ mask: linear-gradient(black, rgba(black, 0.5), 70%, transparent, 90%, transparent)
76
+ -webkit-mask: linear-gradient(black, rgba(black, 0.5), 70%, transparent, 90%, transparent)
69
77
 
70
78
  @media screen and (prefers-color-scheme: dark)
71
79
  background: rgba(white, 0.05)
@@ -76,11 +84,7 @@
76
84
  overflow: hidden
77
85
  background: var(--alpha100)
78
86
  .sidebg
79
- left: 0
80
- right: 0
87
+ --inset: 0
81
88
  --saturate: 300%
82
-
83
-
84
- @media screen and (max-width: $device-mobile-max) and (prefers-color-scheme: dark)
85
- .l_left .leftbar-container:after
86
- background: var(--alpha20)
89
+ .leftbar-container:after
90
+ background: var(--alpha20)
@@ -1,5 +1,5 @@
1
1
  .banner
2
- border-radius: $border-card
2
+ border-radius: $border-image
3
3
  &.top
4
4
  border-radius: $border-card-l
5
5
  position: relative
@@ -4,7 +4,7 @@ a.tag-plugin.button
4
4
  display: inline-flex
5
5
  align-items: baseline
6
6
  justify-content: center
7
- padding: 0 4px
7
+ padding: 0 .5rem
8
8
  trans1 background
9
9
  margin: .5em 0
10
10
  font-size: 1em
@@ -23,10 +23,9 @@ a.tag-plugin.button
23
23
  a.tag-plugin.button[size='xs']
24
24
  margin: 0
25
25
  border-radius: 4px
26
- svg,img
26
+ padding: 0 4px
27
+ svg,img,span
27
28
  margin: 0 2px
28
- span
29
- margin: 2px
30
29
 
31
30
  a.tag-plugin.button:hover
32
31
  --theme: $color-hover
@@ -35,4 +35,4 @@
35
35
  padding: 0 .75rem
36
36
  color: var(--text-p2)
37
37
  &:hover
38
- background: var(--block-hover)
38
+ background: var(--block-border)
@@ -46,7 +46,7 @@
46
46
  >img
47
47
  floatable-trans()
48
48
  &:hover
49
- background: var(--block-hover)
49
+ background: var(--block-border)
50
50
  img
51
51
  transform: scale(1.2) rotate(8deg)
52
52
  box-shadow: $boxshadow-card-float
@@ -96,6 +96,8 @@
96
96
  img
97
97
  width: 100%
98
98
  height: 100%
99
+ &.loading
100
+ background-size: convert(hexo-config('plugins.lazyload.loading_image.size'))
99
101
 
100
102
  // 瀑布流布局
101
103
  .tag-plugin.gallery.flow-box
@@ -107,6 +109,10 @@
107
109
  img
108
110
  width: 100%
109
111
  height: 100%
112
+ border-radius: 8px
113
+ &:has(img.loading),&:has(img.error)
114
+ img
115
+ background-color: var(--block)
110
116
  .image-meta
111
117
  border-radius: 8px
112
118
  margin-bottom: 8px
@@ -1,11 +1,21 @@
1
1
  .tag-plugin.image
2
2
  margin-top: 1rem
3
3
  margin-bottom: 1rem
4
+ box-sizing: border-box
4
5
  .image-bg
5
6
  text-align: center
6
7
  border-radius: $border-image
7
8
  position: relative
8
9
  overflow: hidden
10
+ display: flex
11
+ box-sizing: border-box
12
+ flex-direction: column
13
+ justify-content: center
14
+ align-items: center
15
+ margin: auto
16
+ max-width: 100%
17
+ &:has(img.lazy.loading),&:has(img.lazy.error)
18
+ background-color: var(--block)
9
19
  &:hover
10
20
  .image-download
11
21
  opacity: 1 !important
@@ -1,4 +1,4 @@
1
- .tag-plugin.video
1
+ .tag-plugin.video-player
2
2
  line-height: 0
3
3
  margin: auto
4
4
  video, iframe
@@ -30,7 +30,7 @@
30
30
  background: none
31
31
  .md-text .tag-plugin.note:not([color])
32
32
  .highlight, pre
33
- background: var(--block-hover)
33
+ background: var(--block-border)
34
34
  .md-text .tag-plugin.note[child=codeblock]
35
35
  padding: 0
36
36
  background: var(--theme-codeblock)
@@ -7,7 +7,7 @@
7
7
  padding-bottom: 0
8
8
  table:not([class])
9
9
  th
10
- background: var(--block-hover)
10
+ background: var(--block-border)
11
11
  td,th
12
12
  border-color: var(--block-border)
13
13
 
@@ -84,14 +84,14 @@
84
84
  bottom: -8px
85
85
  border-radius: 100%
86
86
  background: var(--text)
87
- opacity: 0.2
87
+ opacity: 0.1
88
88
  filter: blur(2px)
89
89
  trans1 all
90
90
  &:hover
91
91
  .content
92
92
  transform: translateY(-4px) scale(1.05)
93
93
  .text:after
94
- opacity: 0.3
94
+ opacity: 0.2
95
95
  filter: blur(8px)
96
96
  transform: translateY(4px) scale(1.2, 1.5)
97
97
 
@@ -32,7 +32,7 @@
32
32
  &:after
33
33
  content: ''
34
34
  position: absolute
35
- background: var(--block-hover)
35
+ background: var(--block-border)
36
36
  width: 100%
37
37
  height: 2px
38
38
  bottom: 0
@@ -54,7 +54,7 @@
54
54
  margin: 0 2px
55
55
  &:hover
56
56
  color: var(--text-p1)
57
- background: var(--block-hover)
57
+ background: var(--block-border)
58
58
  i
59
59
  pointer-events: none
60
60
  &.active a
@@ -81,9 +81,10 @@
81
81
  flex-direction: column
82
82
  .tab-pane
83
83
  display: block
84
- overflow: hidden
84
+ max-width: 100%
85
85
  &:not(.active)
86
86
  height: 0
87
+ overflow: hidden
87
88
  &.active
88
89
  height: auto
89
90
  .tab-content:has(.grid-box),.tab-pane:has(.grid-box)
@@ -5,7 +5,7 @@
5
5
  content: ''
6
6
  position: absolute
7
7
  z-index: 0
8
- background: var(--block-hover)
8
+ background: var(--block)
9
9
  width: 4px
10
10
  left: 0px
11
11
  border-radius: 8px
@@ -183,7 +183,7 @@
183
183
  border-color: var(--block-border)
184
184
  color: inherit
185
185
  &:hover
186
- background: var(--block-hover)
186
+ background: var(--block-border)
187
187
 
188
188
  .reaction
189
189
  border-color: var(--block)
@@ -12,7 +12,7 @@ details.toc
12
12
  font-size: $fs-13
13
13
  font-weight: 500
14
14
  &:hover
15
- background: var(--block-hover)
15
+ background: var(--block-border)
16
16
 
17
17
  >div.body
18
18
  margin: var(--gap-p) 1rem 1rem
@@ -6,9 +6,7 @@
6
6
  border-radius: $border-bar
7
7
  color: var(--text-p1)
8
8
  trans1 background
9
- &.active
10
- background: var(--alpha50)
11
- &:hover
9
+ &.active,&:hover
12
10
  background: var(--alpha100)
13
11
  a+a
14
12
  margin-top: 2px
@@ -5,13 +5,6 @@
5
5
  background: var(--alpha50)
6
6
  >*:first-child
7
7
  margin-top: .75rem
8
- a:not([class])
9
- trans1 all
10
- border-bottom: 1px solid var(--text)
11
- color: var(--text)
12
- &:hover
13
- color: $color-hover
14
- border-bottom: 1px solid $color-hover
15
8
 
16
9
  .widget-wrapper.markdown .linklist
17
10
  margin: 1em 0
@@ -43,7 +43,7 @@
43
43
  background: $color-theme
44
44
  border-radius: 4px
45
45
  &:hover
46
- background: var(--block-hover)
46
+ background: var(--block-border)
47
47
  color: var(--text)
48
48
 
49
49
  // 固定位置
@@ -51,13 +51,15 @@
51
51
  margin-top: 0
52
52
  position: sticky
53
53
  position: -webkit-sticky
54
- top: 0
54
+ top: calc(var(--gap-margin) * 1)
55
55
  padding: 16px 0
56
56
  &:first-child
57
- top: 8px
57
+ top: calc(var(--gap-margin) * 2)
58
58
  padding-top: 1rem
59
59
  .widget-body .toc
60
60
  max-height: 70vh
61
+ @media screen and (max-width: $device-desktop)
62
+ max-height: 60vh
61
63
  @media screen and (max-width: $device-laptop)
62
64
  max-height: unset
63
65
  overflow: auto
@@ -159,7 +161,7 @@
159
161
  width: auto
160
162
  margin-right: 8px
161
163
  a:hover
162
- background: var(--block-hover)
164
+ background: var(--block-border)
163
165
  color: var(--text)
164
166
 
165
167
  .widget-wrapper.toc+.widget-wrapper
@@ -61,11 +61,6 @@
61
61
  display: block
62
62
  padding-bottom: 32px
63
63
 
64
- .l_left .widgets
65
- .widget-wrapper
66
- &:first-child
67
- margin-top: 32px
68
-
69
64
  .l_right .widgets
70
65
  &:empty
71
66
  display: none
@@ -24,6 +24,9 @@ $iQuoteRight = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' wid
24
24
  $h3Left = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3C!-- Icon from Solar by 480 Design - https://creativecommons.org/licenses/by/4.0/ --%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M13.488 4.43a.75.75 0 0 1 .081 1.058L7.988 12l5.581 6.512a.75.75 0 1 1-1.138.976l-6-7a.75.75 0 0 1 0-.976l6-7a.75.75 0 0 1 1.057-.081' clip-rule='evenodd'/%3E%3Cpath fill='currentColor' d='M17.75 5a.75.75 0 0 0-1.32-.488l-6 7a.75.75 0 0 0 0 .976l6 7A.75.75 0 0 0 17.75 19z'/%3E%3C/svg%3E"
25
25
  $h3Right = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3C!-- Icon from Solar by 480 Design - https://creativecommons.org/licenses/by/4.0/ --%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M10.512 4.43a.75.75 0 0 0-.081 1.058L16.012 12l-5.581 6.512a.75.75 0 1 0 1.138.976l6-7a.75.75 0 0 0 0-.976l-6-7a.75.75 0 0 0-1.057-.081' clip-rule='evenodd'/%3E%3Cpath fill='currentColor' d='M6.25 5a.75.75 0 0 1 1.32-.488l6 7a.75.75 0 0 1 0 .976l-6 7A.75.75 0 0 1 6.25 19z'/%3E%3C/svg%3E"
26
26
 
27
+ $loadingIcon = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%231cd0fd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath stroke-dasharray='16' stroke-dashoffset='16' d='M12 3c4.97 0 9 4.03 9 9'%3E%3Canimate fill='freeze' attributeName='stroke-dashoffset' dur='0.6s' values='16;0'/%3E%3CanimateTransform attributeName='transform' dur='3s' repeatCount='indefinite' type='rotate' values='0 12 12;360 12 12'/%3E%3C/path%3E%3Cpath stroke-dasharray='64' stroke-dashoffset='64' stroke-opacity='0.3' d='M12 3c4.97 0 9 4.03 9 9c0 4.97 -4.03 9 -9 9c-4.97 0 -9 -4.03 -9 -9c0 -4.97 4.03 -9 9 -9Z'%3E%3Canimate fill='freeze' attributeName='stroke-dashoffset' dur='2.4s' values='64;0'/%3E%3C/path%3E%3C/g%3E%3C/svg%3E"
28
+
29
+
27
30
  if hexo-config('style.font-family.body')
28
31
  $ff-body = convert(hexo-config('style.font-family.body'))
29
32
 
@@ -63,7 +66,9 @@ $border-card-l = convert(hexo-config('style.border-radius.card-l'))
63
66
  $border-card = convert(hexo-config('style.border-radius.card'))
64
67
  $border-card-s = convert(hexo-config('style.border-radius.card-s'))
65
68
  $border-bar = convert(hexo-config('style.border-radius.bar'))
69
+ $border-image-l = convert(hexo-config('style.border-radius.image-l'))
66
70
  $border-image = convert(hexo-config('style.border-radius.image'))
71
+ $border-image-s = convert(hexo-config('style.border-radius.image-s'))
67
72
  $border-button = 8px
68
73
 
69
74
  // 可以动态变化的属性
@@ -100,13 +105,6 @@ $border-button = 8px
100
105
  // 元素文本内容到容器边缘的间距
101
106
  --gap-max: calc(var(--gap-margin) + var(--gap-padding))
102
107
 
103
- // 文章布局风格
104
- .l_body[type=story]
105
- --gap-p: 2rem
106
- div.tag-plugin,p>img
107
- margin-top: 2.4rem
108
- margin-bottom: 2.4rem
109
-
110
108
  // shadow
111
109
  $boxshadow-card = 0 1px 2px 0px rgba(0, 0, 0, 0.1)
112
110
  $boxshadow-float = 0 4px 8px 0px rgba(0, 0, 0, 0.1)
@@ -54,5 +54,5 @@ $hue-yellow = 50
54
54
  $cDeepOrange = hsl(14 100% 57%)
55
55
 
56
56
 
57
- $leftbar-bottom-margin = 128px
57
+ $leftbar-bottom-margin = 96px
58
58
  $rightbar-bottom-margin = 96px
@@ -107,7 +107,7 @@ hover-block($v, $h, $br = 4px)
107
107
  padding: $v $h
108
108
  trans2 color background
109
109
  &:hover
110
- background: var(--block-hover)
110
+ background: var(--block-border)
111
111
 
112
112
  floatable-trans()
113
113
  trans2 transform box-shadow
@@ -134,7 +134,7 @@ hoverable-card()
134
134
  ondark()
135
135
 
136
136
  newblur()
137
- box-shadow: 0 0 2px rgba(black, .05), 0 0 8px rgba(black, .05)
137
+ box-shadow: 0 0 2px rgba(black, .04), 0 2px 8px rgba(black, .04), 0 4px 16px rgba(black, .04)
138
138
  trans1: all
139
139
  &:before,&:after
140
140
  z-index -1
@@ -148,13 +148,17 @@ newblur()
148
148
  border-radius: 64px
149
149
  &:before
150
150
  backdrop-filter: blur(8px)
151
+ -webkit-backdrop-filter: blur(8px)
152
+ background: var(--alpha20)
151
153
  &:after
152
- --blur-px: 16px
154
+ --blur-px: 24px
153
155
  --blur-sat: 500%
154
156
  background: var(--alpha50)
155
157
  backdrop-filter: saturate(var(--blur-sat)) blur(var(--blur-px))
156
- mask: linear-gradient(rgba(white, 1), 10%, rgba(white, 0.2), 90%, rgba(white, 1)), linear-gradient(90deg, rgba(white, 1), 10%, rgba(white, 0.2), 90%, rgba(white, 1))
157
- box-shadow: inset 0 0 8px 1px white
158
+ -webkit-backdrop-filter: saturate(var(--blur-sat)) blur(var(--blur-px))
159
+ mask: linear-gradient(rgba(white, 1), 10%, rgba(white, 0.05), 90%, rgba(white, 1)), linear-gradient(90deg, rgba(white, 1), 10%, rgba(white, 0.05), 90%, rgba(white, 1))
160
+ -webkit-mask: linear-gradient(rgba(white, 1), 10%, rgba(white, 0.05), 90%, rgba(white, 1)), linear-gradient(90deg, rgba(white, 1), 10%, rgba(white, 0.05), 90%, rgba(white, 1))
161
+ box-shadow: inset 0 0 4px 1px rgba(white, 0.5)
158
162
  trans1 all
159
163
  @media (prefers-color-scheme: dark)
160
164
  opacity 0.4
@@ -56,9 +56,8 @@ _common_root()
56
56
  _light_root()
57
57
  --site-bg: hsl($color-background-h, $color-background-s, $color-background-l)
58
58
  --card: hsl($color-block-h, $color-block-s, 100)
59
- --block: hsl($color-block-h, $color-block-s, 95)
60
- --block-border: hsl($color-block-h, $color-block-s, 90)
61
- --block-hover: hsl($color-block-h, $color-block-s, 92)
59
+ --block: hsla(black, 0.04)
60
+ --block-border: hsla(black, 0.08)
62
61
  --theme-link-opa: rgba($color-link, 0.2)
63
62
  --leftbar-bg: hsl($color-block-h, $color-block-s, 90)
64
63
  --alpha20: rgba(white, 0.2)
@@ -82,10 +81,9 @@ _light_root()
82
81
 
83
82
  _dark_root()
84
83
  --site-bg: hsl($color-background-h, $color-background-s * 0.5, (100 - $color-background-l) * 2 + 8)
85
- --card: hsl($color-block-h, $color-block-s * 1.2, 24)
86
- --block: hsl($color-block-h, $color-block-s, 16)
84
+ --card: hsl($color-block-h, $color-block-s * 1.2, 16)
85
+ --block: hsl($color-block-h, $color-block-s, 20)
87
86
  --block-border: hsl($color-block-h, $color-block-s, 24)
88
- --block-hover: hsl($color-block-h, $color-block-s, 20)
89
87
  --theme-link-opa: rgba($color-link, 0.4)
90
88
  --leftbar-bg: hsl($color-block-h, $color-block-s, 24)
91
89
  --alpha20: rgba(black, 0.2)
@@ -120,12 +118,3 @@ _common_root()
120
118
  @media (prefers-color-scheme: dark)
121
119
  _dark_root()
122
120
 
123
- @media (prefers-color-scheme: dark)
124
- :root:not([color-scheme])
125
- img,
126
- .md-text .tag-plugin.chat>.content .chatcell .user-main .talk.file>.content>.top>.right>svg.icon>path
127
- filter: brightness(75%)!important
128
- [color-scheme='dark']
129
- img,
130
- .md-text .tag-plugin.chat>.content .chatcell .user-main .talk.file>.content>.top>.right>svg.icon>path
131
- filter: brightness(75%)!important