hexo-theme-stellar 1.41.0 → 1.42.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.
- package/.claude/skills/stellar-theme-dev/SKILL.md +1 -2
- package/CHANGELOG.md +49 -0
- package/CONTRIBUTING.md +2 -1
- package/README.md +50 -21
- package/README_EN.md +113 -0
- package/_config.yml +8 -3
- package/_data/icons.yml +0 -2
- package/layout/_partial/cover/index.ejs +0 -3
- package/layout/_partial/main/navbar/article_banner.ejs +30 -27
- package/layout/_partial/main/pin_slider.ejs +59 -28
- package/layout/_partial/main/post_list/latest_post_card.ejs +25 -0
- package/layout/_partial/main/post_list/post_card.ejs +16 -64
- package/layout/_partial/main/post_list/topic_card.ejs +26 -5
- package/layout/_partial/scripts/bootstrap.ejs +35 -0
- package/layout/_partial/scripts/defines.ejs +2 -1
- package/layout/_partial/scripts.ejs +9 -0
- package/layout/_partial/widgets/toc.ejs +2 -2
- package/layout/_plugins/adaptive_text.ejs +11 -0
- package/layout/_plugins/copycode.ejs +2 -2
- package/layout/_plugins/mermaid.ejs +1 -1
- package/layout/_plugins/scrollreveal.ejs +22 -16
- package/layout/_plugins/swiper.ejs +1 -1
- package/layout/index.ejs +10 -2
- package/layout/index_topic.ejs +4 -4
- package/package.json +3 -3
- package/scripts/generators/stellar-icons.js +1 -1
- package/scripts/helpers/subtitle.js +8 -0
- package/scripts/lib/subtitle.js +24 -0
- package/scripts/tags/lib/banner.js +4 -3
- package/source/css/_common/cover-overlay.styl +111 -0
- package/source/css/_common/title.styl +17 -0
- package/source/css/_components/layout.styl +9 -13
- package/source/css/_components/list.styl +135 -64
- package/source/css/_components/main.styl +2 -2
- package/source/css/_components/pages/archives.styl +4 -1
- package/source/css/_components/pages/article-story.styl +1 -10
- package/source/css/_components/partial/article-banner.styl +61 -37
- package/source/css/_components/partial/article-tags.styl +4 -1
- package/source/css/_components/partial/bread-nav.styl +7 -14
- package/source/css/_components/partial/navbar.styl +1 -1
- package/source/css/_components/partial/post-panel.styl +76 -0
- package/source/css/_components/pin-slider.styl +38 -41
- package/source/css/_components/sidebar/footer.styl +1 -1
- package/source/css/_components/sidebar/logo.styl +2 -2
- package/source/css/_components/sidebar/search.styl +1 -1
- package/source/css/_components/sidebar/sidebar.styl +7 -7
- package/source/css/_components/tag-plugins/banner.styl +53 -11
- package/source/css/_components/tag-plugins/friends_posts.styl +5 -86
- package/source/css/_components/tag-plugins/gallery.styl +3 -0
- package/source/css/_components/tag-plugins/read/paper.styl +3 -3
- package/source/css/_components/tag-plugins/read/reel.styl +4 -4
- package/source/css/_components/tag-plugins/timeline.styl +4 -0
- package/source/css/_components/widgets/timeline.styl +2 -2
- package/source/css/_components/widgets/toc.styl +12 -6
- package/source/css/_components/widgets/widgets.styl +8 -7
- package/source/css/_custom.styl +8 -9
- package/source/css/_plugins/lazyload.styl +1 -0
- package/source/js/color.js +325 -0
- package/source/js/main.js +2 -2
- package/source/js/plugins/adaptive-text.js +146 -0
- package/source/js/services/friends_and_posts.js +1 -1
- package/source/js/services/timeline.js +1 -1
- package/source/js/services/weibo.js +1 -1
- package/source/js/services.js +1 -1
- package/source/js/utils.js +14 -1
- package/layout/_partial/cover/post_cover.ejs +0 -37
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
// 置顶内容轮播(navbar top 上方通用置顶位)
|
|
2
2
|
.pin-slider
|
|
3
3
|
position: relative
|
|
4
|
-
margin: 0 1rem var(--gap-
|
|
4
|
+
margin: 0 1rem var(--gap-base)
|
|
5
5
|
border-radius: $border-card-l
|
|
6
6
|
overflow: hidden
|
|
7
7
|
box-shadow: $boxshadow-card
|
|
8
|
+
// 背景图由 .pin-slider 自身背景承载(跟随 corner-shape),由插件按当前 slide 同步 --pin-cover-url;
|
|
9
|
+
// 子图保留用于滑动动画与 hover 滤镜,角落楔形区由容器背景(同图)无缝补位
|
|
10
|
+
background-image: var(--pin-cover-url)
|
|
11
|
+
background-size: cover
|
|
12
|
+
background-position: center
|
|
8
13
|
// 初始化前隐藏,避免先闪出第一张;定位到缓存序号后再显示
|
|
9
14
|
visibility: hidden
|
|
10
15
|
|
|
@@ -19,42 +24,28 @@
|
|
|
19
24
|
height: 15rem
|
|
20
25
|
overflow: hidden
|
|
21
26
|
background: var(--card)
|
|
27
|
+
// 带封面幻灯片背景改透明,让 .pin-slider 自身背景(corner-shape 圆角)透出;
|
|
28
|
+
// 无封面幻灯片保持白卡
|
|
29
|
+
&:not(.no-cover)
|
|
30
|
+
background: transparent
|
|
22
31
|
@media screen and (max-width: $device-mobile-max)
|
|
23
32
|
height: 11rem
|
|
33
|
+
// 带封面幻灯片(post 封面幻灯片 + wiki/项目幻灯片)接入通用底部覆盖层:
|
|
34
|
+
// 同图渐变模糊层 + 黑色渐变蒙版,hover 放大/变暗参数与文章列表封面统一
|
|
35
|
+
&.post-slide:not(.no-cover), &:not(.post-slide)
|
|
36
|
+
cover-overlay(var(--pin-cover-url), bottom)
|
|
24
37
|
&:hover
|
|
25
38
|
.pin-slide-bg
|
|
26
|
-
transform: scale(
|
|
27
|
-
filter: brightness(.92) saturate(1.1)
|
|
39
|
+
transform: scale(var(--cover-zoom))
|
|
28
40
|
|
|
29
41
|
// 文章幻灯片:固定「标题 + 一行小字」结构,宽高比与非置顶文章一致(article.cover_ratio);
|
|
30
|
-
// 文字区与
|
|
42
|
+
// 文字区与 hero 卡片 cover-info 一致(同款渐变模糊层 + 四周间距);无封面时为纯白卡片
|
|
31
43
|
.pin-slide.post-slide
|
|
32
44
|
display: block
|
|
33
45
|
height: auto
|
|
34
46
|
aspect-ratio: hexo-config('article.cover_ratio')
|
|
35
|
-
--img-br: 100%
|
|
36
|
-
--img-sat: 100%
|
|
37
|
-
--blur-px: 1em
|
|
38
|
-
--blur-height: 128px
|
|
39
|
-
--blur-sat: 120%
|
|
40
47
|
.pin-slide-bg
|
|
41
48
|
z-index: 0
|
|
42
|
-
// 渐变模糊层:与 poster 卡片 .cover:before 一致(同图模糊 + 底部渐变 mask)
|
|
43
|
-
&:not(.no-cover)::before
|
|
44
|
-
content: ''
|
|
45
|
-
z-index: 1
|
|
46
|
-
position: absolute
|
|
47
|
-
top: 0
|
|
48
|
-
left: 0
|
|
49
|
-
width: 100%
|
|
50
|
-
height: 100%
|
|
51
|
-
background-image: var(--pin-cover-url)
|
|
52
|
-
background-size: cover
|
|
53
|
-
background-position: center
|
|
54
|
-
filter: brightness(var(--img-br)) saturate(var(--img-sat)) blur(var(--blur-px)) saturate(var(--blur-sat))
|
|
55
|
-
mask: linear-gradient(to top, black, rgba(black, 0.75) calc(var(--blur-height) * 0.5), transparent var(--blur-height))
|
|
56
|
-
-webkit-mask: linear-gradient(to top, black, rgba(black, 0.75) calc(var(--blur-height) * 0.5), transparent var(--blur-height))
|
|
57
|
-
transition: transform .5s ease-out
|
|
58
49
|
.pin-slide-text
|
|
59
50
|
position: absolute
|
|
60
51
|
bottom: 0
|
|
@@ -64,10 +55,13 @@
|
|
|
64
55
|
width: 100%
|
|
65
56
|
box-sizing: border-box
|
|
66
57
|
text-align: left
|
|
58
|
+
// 大字 contrast(--text-banner)、小字 theme(--text-banner-theme),由自适应插件写入
|
|
59
|
+
--text-banner: white
|
|
60
|
+
color: var(--text-banner)
|
|
67
61
|
.pin-slide-headline
|
|
68
62
|
font-weight: 500
|
|
69
63
|
font-size: $fsh3
|
|
70
|
-
color:
|
|
64
|
+
color: var(--text-banner)
|
|
71
65
|
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2)
|
|
72
66
|
white-space: nowrap
|
|
73
67
|
overflow: hidden
|
|
@@ -78,17 +72,13 @@
|
|
|
78
72
|
.pin-slide-caption
|
|
79
73
|
margin-top: 4px
|
|
80
74
|
font-size: $fs-14
|
|
81
|
-
color:
|
|
75
|
+
color: var(--text-banner-theme, inherit)
|
|
82
76
|
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2)
|
|
83
77
|
white-space: nowrap
|
|
84
78
|
overflow: hidden
|
|
85
79
|
text-overflow: ellipsis
|
|
86
80
|
@media screen and (max-width: $device-mobile)
|
|
87
81
|
font-size: $fs-13
|
|
88
|
-
&:not(.no-cover) .pin-slide-text
|
|
89
|
-
background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2))
|
|
90
|
-
&:not(.no-cover):hover::before
|
|
91
|
-
transform: scale(1.04)
|
|
92
82
|
// 无封面卡片:纯白底 + 普通文章文字颜色
|
|
93
83
|
&.no-cover
|
|
94
84
|
background: var(--card)
|
|
@@ -106,21 +96,24 @@
|
|
|
106
96
|
width: 100%
|
|
107
97
|
height: 100%
|
|
108
98
|
object-fit: cover
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
99
|
+
// hover 放大用 1.5s 缓动,亮度/饱和度仍按 0.2s(与文章列表封面一致)
|
|
100
|
+
filter: brightness(var(--img-br)) saturate(var(--img-sat))
|
|
101
|
+
transition: all .2s ease-out, transform 1.5s ease-out
|
|
102
|
+
-moz-transition: all .2s ease-out, transform 1.5s ease-out
|
|
103
|
+
-webkit-transition: all .2s ease-out, transform 1.5s ease-out
|
|
104
|
+
-o-transition: all .2s ease-out, transform 1.5s ease-out
|
|
115
105
|
|
|
116
106
|
.pin-slide-info
|
|
117
107
|
position: absolute
|
|
118
108
|
left: 0
|
|
119
109
|
right: 0
|
|
120
110
|
bottom: 0
|
|
121
|
-
z-index:
|
|
111
|
+
z-index: 2
|
|
122
112
|
padding: 1.5rem 6rem 1.75rem 2rem
|
|
123
113
|
text-align: left
|
|
114
|
+
// 大字 contrast(--text-banner)、小字 theme(--text-banner-theme),由自适应插件写入
|
|
115
|
+
--text-banner: white
|
|
116
|
+
color: var(--text-banner)
|
|
124
117
|
@media screen and (max-width: $device-mobile-max)
|
|
125
118
|
padding: 1rem 3.5rem 1.25rem 1.25rem
|
|
126
119
|
|
|
@@ -137,17 +130,20 @@
|
|
|
137
130
|
backdrop-filter: blur(4px)
|
|
138
131
|
-webkit-backdrop-filter: blur(4px)
|
|
139
132
|
font-size: $fs-13
|
|
140
|
-
color: white
|
|
133
|
+
color: var(--text-banner-theme, white)
|
|
141
134
|
|
|
142
135
|
.pin-slide-title
|
|
143
136
|
font-size: $fsh3
|
|
144
137
|
font-weight: 600
|
|
145
138
|
line-height: 1.3
|
|
146
|
-
color:
|
|
139
|
+
color: var(--text-banner)
|
|
147
140
|
trans1 color
|
|
148
141
|
@media screen and (max-width: $device-mobile-max)
|
|
149
142
|
font-size: $fsh5
|
|
150
143
|
|
|
144
|
+
.pin-slide-excerpt
|
|
145
|
+
color: var(--text-banner-theme, var(--text-banner))
|
|
146
|
+
|
|
151
147
|
.pin-slider-dots
|
|
152
148
|
position: absolute
|
|
153
149
|
left: 0
|
|
@@ -210,6 +206,8 @@
|
|
|
210
206
|
top: 50%
|
|
211
207
|
transform: translateY(-50%)
|
|
212
208
|
z-index: 3
|
|
209
|
+
// 箭头颜色随当前幻灯片封面自适应(插件写入 --text-banner;未计算时回退主题文字色)
|
|
210
|
+
color: var(--text-banner, var(--text))
|
|
213
211
|
display: flex
|
|
214
212
|
align-items: center
|
|
215
213
|
justify-content: center
|
|
@@ -218,7 +216,6 @@
|
|
|
218
216
|
padding: 1rem .25rem
|
|
219
217
|
border: none
|
|
220
218
|
bar-glass(40px)
|
|
221
|
-
color: var(--text)
|
|
222
219
|
cursor: pointer
|
|
223
220
|
opacity: 0
|
|
224
221
|
&.prev
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
opacity: 1 !important
|
|
88
88
|
|
|
89
89
|
.wiki-home-wrap
|
|
90
|
-
margin: 1rem var(--gap-
|
|
90
|
+
margin: 1rem var(--gap-base) .5rem
|
|
91
91
|
|
|
92
92
|
.wiki-home
|
|
93
93
|
display: flex
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
align-items: center
|
|
96
96
|
padding: 6px 16px 6px 12px
|
|
97
97
|
border-radius: 32px
|
|
98
|
-
|
|
98
|
+
sidebar-light()
|
|
99
99
|
color: var(--text-p2)
|
|
100
100
|
font-size: $fs-13
|
|
101
101
|
trans2 color background
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
.l_left
|
|
2
|
-
margin: var(--gap-
|
|
3
|
-
max-height: calc(100vh - var(--gap-
|
|
2
|
+
margin: var(--gap-page)
|
|
3
|
+
max-height: calc(100vh - var(--gap-page) * 2)
|
|
4
4
|
border-radius: $border-card-l
|
|
5
5
|
.header
|
|
6
|
-
margin: var(--gap-
|
|
6
|
+
margin: var(--gap-base) var(--gap-base) 0
|
|
7
7
|
|
|
8
8
|
.l_right
|
|
9
|
-
margin: 0
|
|
9
|
+
margin: var(--gap-page) 0
|
|
10
10
|
border-radius: $border-card-l
|
|
11
11
|
@media screen and (min-width: $device-2k)
|
|
12
12
|
.l_left
|
|
13
13
|
margin-left: auto
|
|
14
|
-
margin-right: calc(2 * var(--gap-
|
|
14
|
+
margin-right: calc(2 * var(--gap-page))
|
|
15
15
|
.l_right
|
|
16
|
-
margin-left: var(--gap-
|
|
16
|
+
margin-left: var(--gap-page)
|
|
17
17
|
margin-right: auto
|
|
18
18
|
|
|
19
19
|
// 纯色卡片风格(style.leftbar.ui-style: card):
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
background-color: convert($leftbar-background-color-dark)
|
|
74
74
|
|
|
75
75
|
.leftbar-container
|
|
76
|
-
height: calc(100vh - var(--gap-
|
|
76
|
+
height: calc(100vh - var(--gap-page) * 2)
|
|
77
77
|
display: flex
|
|
78
78
|
flex-direction: column
|
|
79
79
|
word-break: break-all
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
border-radius: $border-image
|
|
3
3
|
&.top
|
|
4
4
|
border-radius: $border-card-l
|
|
5
|
+
// 背景图同时作为横幅自身背景承载(跟随 corner-shape),子图保留用于 hover 滤镜
|
|
6
|
+
background-image: var(--bg-url)
|
|
7
|
+
background-size: cover
|
|
8
|
+
background-position: center
|
|
5
9
|
position: relative
|
|
6
10
|
overflow: hidden
|
|
7
11
|
display: flex
|
|
@@ -15,12 +19,15 @@
|
|
|
15
19
|
z-index: 0
|
|
16
20
|
.content
|
|
17
21
|
z-index: 1
|
|
22
|
+
position: relative
|
|
18
23
|
width: 100%
|
|
19
24
|
height: 100%
|
|
20
25
|
display: flex
|
|
21
26
|
flex-direction: column
|
|
22
27
|
justify-content: space-between
|
|
23
28
|
.top
|
|
29
|
+
// 文字区保持在背景图(img.bg z-index 0)之上
|
|
30
|
+
z-index: 1
|
|
24
31
|
display: flex
|
|
25
32
|
justify-content: space-between
|
|
26
33
|
align-items: center
|
|
@@ -37,7 +44,8 @@
|
|
|
37
44
|
.link
|
|
38
45
|
margin: 0
|
|
39
46
|
border-radius: 4px
|
|
40
|
-
color:
|
|
47
|
+
color: var(--text-banner-theme, var(--text-banner))
|
|
48
|
+
opacity: .8
|
|
41
49
|
padding: 2px 6px
|
|
42
50
|
background: none
|
|
43
51
|
line-height: 1.5
|
|
@@ -48,10 +56,12 @@
|
|
|
48
56
|
&:after
|
|
49
57
|
content: none
|
|
50
58
|
&:hover
|
|
51
|
-
color:
|
|
59
|
+
color: var(--text-banner-theme, var(--text-banner))
|
|
60
|
+
opacity: 1
|
|
52
61
|
background: rgba(white, 0.25)
|
|
53
62
|
&.active
|
|
54
|
-
color:
|
|
63
|
+
color: var(--text-banner-theme, var(--text-banner))
|
|
64
|
+
opacity: 1
|
|
55
65
|
background: rgba(white, 0.25)
|
|
56
66
|
|
|
57
67
|
.back
|
|
@@ -64,7 +74,7 @@
|
|
|
64
74
|
svg
|
|
65
75
|
width: 20px
|
|
66
76
|
height: 20px
|
|
67
|
-
fill:
|
|
77
|
+
fill: var(--text-banner-theme, var(--text-banner))
|
|
68
78
|
.banner-link
|
|
69
79
|
position: absolute
|
|
70
80
|
top: 0
|
|
@@ -91,13 +101,17 @@
|
|
|
91
101
|
width: 48px
|
|
92
102
|
height: 48px
|
|
93
103
|
.bottom
|
|
104
|
+
// 同 .top:文字区保持在背景图之上
|
|
105
|
+
z-index: 1
|
|
94
106
|
display: flex
|
|
95
107
|
padding: 1rem
|
|
96
108
|
width: 100%
|
|
97
109
|
box-sizing: border-box
|
|
98
110
|
.title
|
|
99
111
|
font-size: 1.5rem
|
|
100
|
-
font-weight:
|
|
112
|
+
font-weight: 700
|
|
113
|
+
// 与封面 headline 同款描边,避免标题在复杂背景上发虚
|
|
114
|
+
text-shadow: 0 2px 4px rgba(0,0,0,0.2)
|
|
101
115
|
.avatar+.text-area
|
|
102
116
|
margin-left: 0.75rem
|
|
103
117
|
.text-area .text
|
|
@@ -108,26 +122,54 @@
|
|
|
108
122
|
font-size: 1.2rem
|
|
109
123
|
.subtitle
|
|
110
124
|
font-size: $fs-14
|
|
125
|
+
color: var(--text-banner-theme, var(--text-banner))
|
|
111
126
|
.content:only-child
|
|
112
127
|
color: var(--text-p1)
|
|
113
128
|
.bg+.content
|
|
114
|
-
|
|
129
|
+
--text-banner: white
|
|
130
|
+
color: var(--text-banner)
|
|
115
131
|
.avatar
|
|
116
|
-
border: 2px solid
|
|
132
|
+
border: 2px solid var(--text-banner)
|
|
117
133
|
margin: 0
|
|
118
134
|
.bottom
|
|
119
|
-
background-image: linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0.2))
|
|
120
135
|
text-shadow: 0 0 1px rgba(0,0,0,0.12)
|
|
121
136
|
|
|
122
137
|
.tag-plugin.banner
|
|
123
|
-
|
|
138
|
+
// 内容区用绝对定位铺满整卡:避免 flex 百分比高度(height: 100%)在不同浏览器解析不一致,
|
|
139
|
+
// 导致 .top/.bottom 无法贴顶/贴底(navbar 掉到中间)
|
|
140
|
+
.content
|
|
141
|
+
position: absolute
|
|
142
|
+
top: 0
|
|
143
|
+
left: 0
|
|
144
|
+
right: 0
|
|
145
|
+
bottom: 0
|
|
146
|
+
// banner 标签不使用渐变模糊覆盖层(cover-overlay 仅用于封面/页顶 banner):
|
|
147
|
+
// 纯背景图 + 自适应文字颜色,hover 保留背景图放大与变暗
|
|
148
|
+
--img-br: 100%
|
|
149
|
+
--img-sat: 100%
|
|
150
|
+
--cover-zoom: 1.05
|
|
124
151
|
&:hover
|
|
152
|
+
--img-br: 75%
|
|
153
|
+
--img-sat: 120%
|
|
125
154
|
img.bg
|
|
126
|
-
|
|
155
|
+
transform: scale(var(--cover-zoom))
|
|
156
|
+
img.bg
|
|
157
|
+
filter: brightness(var(--img-br)) saturate(var(--img-sat))
|
|
158
|
+
// 封面放大用 1.5s 缓动,其余属性(亮度/饱和度)保持主题默认 0.2s
|
|
159
|
+
transition: all .2s ease-out, transform 1.5s ease-out
|
|
160
|
+
-moz-transition: all .2s ease-out, transform 1.5s ease-out
|
|
161
|
+
-webkit-transition: all .2s ease-out, transform 1.5s ease-out
|
|
162
|
+
-o-transition: all .2s ease-out, transform 1.5s ease-out
|
|
127
163
|
|
|
128
164
|
.tag-plugin.banner .navbar a.active
|
|
129
|
-
blur-effect()
|
|
165
|
+
// 不使用 blur-effect()(backdrop-filter):banner 是 overflow:hidden + 圆角/连续曲率的裁剪容器,
|
|
166
|
+
// backdrop-filter 在部分浏览器(Safari / 旧版 Chromium)会破坏父级圆角裁剪,
|
|
167
|
+
// hover 放大背景图时四角变直角;改用与 hover 一致的半透明白底
|
|
168
|
+
background: rgba(white, 0.25)
|
|
169
|
+
&:hover
|
|
170
|
+
background-color: var(--card)
|
|
130
171
|
|
|
131
172
|
@media screen and (max-width: $device-mobile-max)
|
|
132
173
|
.banner.top
|
|
133
174
|
border-radius: 0
|
|
175
|
+
clip-path: none
|
|
@@ -67,96 +67,15 @@
|
|
|
67
67
|
display: block
|
|
68
68
|
width: 64px
|
|
69
69
|
height: 64px
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
.previews
|
|
73
|
-
display: flex
|
|
74
|
-
justify-content: space-between
|
|
75
|
-
flex-direction: column
|
|
76
|
-
height: 100%
|
|
77
|
-
position: relative
|
|
78
|
-
.empty
|
|
79
|
-
min-height: 1rem
|
|
80
|
-
.desc
|
|
81
|
-
font-size: 1.2rem
|
|
82
|
-
color: var(--text-p3)
|
|
83
|
-
font-weight: 400
|
|
84
|
-
margin: 1rem 0
|
|
85
|
-
margin-right: auto
|
|
86
|
-
position: relative
|
|
87
|
-
&:before
|
|
88
|
-
position: absolute
|
|
89
|
-
font-weight: 900
|
|
90
|
-
font-size: 32px
|
|
91
|
-
color: var(--block-border)
|
|
92
|
-
top: 0
|
|
93
|
-
content: '“'
|
|
94
|
-
left: -16px
|
|
95
|
-
trans1 all
|
|
96
|
-
.spacer
|
|
97
|
-
height: 100%
|
|
98
|
-
.posts
|
|
99
|
-
margin: 0.5rem 0 1rem 0
|
|
100
|
-
display: flex
|
|
101
|
-
flex-direction: column
|
|
102
|
-
align-items: flex-start
|
|
103
|
-
.post-link
|
|
104
|
-
display: flex
|
|
105
|
-
flex-direction: column
|
|
106
|
-
color: var(--text-p1)
|
|
107
|
-
position: relative
|
|
108
|
-
trans1 color
|
|
109
|
-
&+.post-link
|
|
110
|
-
margin-top: 1rem
|
|
111
|
-
&:before
|
|
112
|
-
content: ''
|
|
113
|
-
position: absolute
|
|
114
|
-
left: -12px
|
|
115
|
-
top: 2px
|
|
116
|
-
height: 'calc(%s - 2px)' % $fs-14
|
|
117
|
-
width: 4px
|
|
118
|
-
border-radius: 4px
|
|
119
|
-
background: var(--block-border)
|
|
120
|
-
trans1 all
|
|
121
|
-
&:hover:before
|
|
122
|
-
background: var(--accent)
|
|
123
|
-
// height: calc(100% - 4px)
|
|
124
|
-
height: 100%
|
|
125
|
-
top: 0
|
|
126
|
-
span
|
|
127
|
-
display: -webkit-box
|
|
128
|
-
-webkit-box-orient: vertical
|
|
129
|
-
overflow: hidden
|
|
130
|
-
-webkit-line-clamp: 1
|
|
131
|
-
position: relative
|
|
132
|
-
.title
|
|
133
|
-
font-size: $fs-14
|
|
134
|
-
font-weight: 500
|
|
135
|
-
max-width: 100%
|
|
136
|
-
display: -webkit-box
|
|
137
|
-
-webkit-box-orient: vertical
|
|
138
|
-
overflow: hidden
|
|
139
|
-
-webkit-line-clamp: 2
|
|
140
|
-
position: relative
|
|
141
|
-
.date
|
|
142
|
-
font-size: $fs-12
|
|
143
|
-
color: var(--text-p3)
|
|
144
|
-
margin-top: 0.25rem
|
|
145
|
-
.no-post
|
|
146
|
-
font-size: $fs-13
|
|
147
|
-
color: var(--text-p4)
|
|
148
|
-
|
|
149
|
-
|
|
150
70
|
// transform
|
|
151
71
|
.users-posts-wrap .user-post-card
|
|
152
72
|
&:hover
|
|
153
|
-
.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
73
|
+
.post-panel
|
|
74
|
+
.desc
|
|
75
|
+
&:before
|
|
76
|
+
color: var(--accent)
|
|
77
|
+
transform: scale(1.2) translateX(-4px)
|
|
157
78
|
.card-link:hover
|
|
158
79
|
.lazy-box
|
|
159
80
|
transform: scale(1.2) rotate(8deg)
|
|
160
81
|
box-shadow: $boxshadow-card-float
|
|
161
|
-
.post-link:hover
|
|
162
|
-
color: var(--accent)
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
display: flex
|
|
3
3
|
flex-direction: column
|
|
4
4
|
align-items: center
|
|
5
|
-
padding-top: var(--gap-
|
|
6
|
-
padding-bottom: var(--gap-
|
|
5
|
+
padding-top: var(--gap-base)
|
|
6
|
+
padding-bottom: var(--gap-base)
|
|
7
7
|
>.content
|
|
8
8
|
border-left: 1px dashed var(--text-meta)
|
|
9
9
|
border-right: 1px dashed var(--text-meta)
|
|
@@ -95,4 +95,4 @@
|
|
|
95
95
|
p
|
|
96
96
|
margin: 0
|
|
97
97
|
>.title
|
|
98
|
-
border-top: 1px solid var(--text-meta)
|
|
98
|
+
border-top: 1px solid var(--text-meta)
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
display: flex
|
|
3
3
|
flex-direction: column
|
|
4
4
|
align-items: center
|
|
5
|
-
padding-top: var(--gap-
|
|
6
|
-
padding-bottom: var(--gap-
|
|
5
|
+
padding-top: var(--gap-base)
|
|
6
|
+
padding-bottom: var(--gap-base)
|
|
7
7
|
>.content
|
|
8
8
|
display: flex
|
|
9
9
|
flex-direction: column
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
>.body
|
|
23
23
|
overflow: auto
|
|
24
24
|
scrollbar()
|
|
25
|
-
margin: 'calc(%s - 4px) %s' % var(--gap-
|
|
25
|
+
margin: 'calc(%s - 4px) %s' % var(--gap-base)
|
|
26
26
|
.main
|
|
27
27
|
p
|
|
28
28
|
margin: 0;
|
|
@@ -100,4 +100,4 @@
|
|
|
100
100
|
top: calc(100% + 1rem - 6px)
|
|
101
101
|
bottom: calc(-1rem - 6px)
|
|
102
102
|
border-radius: 4px
|
|
103
|
-
background: var(--accent)
|
|
103
|
+
background: var(--accent)
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
z-index 1
|
|
15
15
|
margin-top: 0.25rem
|
|
16
16
|
.header
|
|
17
|
-
margin: 0.25rem var(--gap-
|
|
17
|
+
margin: 0.25rem var(--gap-base)
|
|
18
18
|
.user-info
|
|
19
19
|
background: none
|
|
20
20
|
padding-right: 0
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
display: none
|
|
23
23
|
|
|
24
24
|
.header:before
|
|
25
|
-
left: calc(6px - var(--gap-
|
|
25
|
+
left: calc(6px - var(--gap-base))
|
|
26
26
|
.body
|
|
27
27
|
border-radius: $border-card
|
|
28
28
|
padding: 0.5rem 1rem
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
margin: 0
|
|
32
32
|
list-style: none
|
|
33
33
|
a
|
|
34
|
-
--padding: calc(var(--gap-
|
|
34
|
+
--padding: calc(var(--gap-base) / 2)
|
|
35
35
|
--padding-offset: calc(0 - var(--padding))
|
|
36
36
|
padding: 4px var(--padding)
|
|
37
37
|
margin: 0 var(--padding)
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
top: 0
|
|
62
62
|
padding: 1rem 0
|
|
63
63
|
&:first-child
|
|
64
|
-
top: var(--gap-
|
|
64
|
+
top: var(--gap-page)
|
|
65
65
|
padding-top: 1rem
|
|
66
66
|
.widget-body .toc
|
|
67
67
|
max-height: 70vh
|
|
@@ -148,8 +148,8 @@
|
|
|
148
148
|
background: var(--block-border)
|
|
149
149
|
top: 0
|
|
150
150
|
height: 1px
|
|
151
|
-
left: var(--gap-
|
|
152
|
-
right: var(--gap-
|
|
151
|
+
left: var(--gap-base)
|
|
152
|
+
right: var(--gap-base)
|
|
153
153
|
.widget-wrapper.toc .widget-footer
|
|
154
154
|
margin-top: 8px
|
|
155
155
|
color: var(--text-p2)
|
|
@@ -160,12 +160,18 @@
|
|
|
160
160
|
align-items: center
|
|
161
161
|
color: inherit
|
|
162
162
|
font-size: $fs-14
|
|
163
|
-
padding: 8px var(--gap-
|
|
163
|
+
padding: 8px var(--gap-base)
|
|
164
164
|
border-radius: $border-bar
|
|
165
165
|
trans1 all
|
|
166
|
-
svg
|
|
166
|
+
svg
|
|
167
|
+
width: 16px
|
|
168
|
+
height: 16px
|
|
169
|
+
flex-shrink: 0
|
|
170
|
+
margin-right: 8px
|
|
171
|
+
img
|
|
167
172
|
height: 16px
|
|
168
173
|
width: auto
|
|
174
|
+
flex-shrink: 0
|
|
169
175
|
margin-right: 8px
|
|
170
176
|
a:hover
|
|
171
177
|
background: var(--block-border)
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
scrollbar(0, 0)
|
|
11
11
|
z-index: 1
|
|
12
12
|
line-height: 1.2
|
|
13
|
-
margin: 0 var(--gap-
|
|
13
|
+
margin: 0 var(--gap-base)
|
|
14
14
|
.widget-wrapper
|
|
15
15
|
.widget-header
|
|
16
|
-
padding-left: var(--gap-
|
|
17
|
-
padding-right: var(--gap-
|
|
16
|
+
padding-left: var(--gap-base)
|
|
17
|
+
padding-right: var(--gap-base)
|
|
18
18
|
display: flex
|
|
19
19
|
justify-content: space-between
|
|
20
20
|
align-items: baseline
|
|
@@ -64,19 +64,20 @@
|
|
|
64
64
|
.l_left .widgets
|
|
65
65
|
padding-bottom: 64px
|
|
66
66
|
.l_right .widgets
|
|
67
|
-
padding:
|
|
67
|
+
padding: 0
|
|
68
68
|
&:empty
|
|
69
69
|
display: none
|
|
70
70
|
.widget-wrapper:first-child
|
|
71
71
|
margin-top: 0
|
|
72
72
|
.widget-wrapper
|
|
73
73
|
.widget-header
|
|
74
|
-
padding-left: var(--gap-
|
|
75
|
-
padding-right: var(--gap-
|
|
74
|
+
padding-left: var(--gap-base)
|
|
75
|
+
padding-right: var(--gap-base)
|
|
76
76
|
// 小屏幕
|
|
77
77
|
@media screen and (max-width: $device-laptop)
|
|
78
|
+
padding: var(--gap-base) 0
|
|
78
79
|
.widget-wrapper
|
|
79
|
-
margin-top: var(--gap-
|
|
80
|
+
margin-top: var(--gap-base)
|
|
80
81
|
border-radius: $border-card-s
|
|
81
82
|
// 大屏幕
|
|
82
83
|
@media screen and (min-width: $device-laptop)
|
package/source/css/_custom.styl
CHANGED
|
@@ -64,10 +64,14 @@ $corner-shape = convert(hexo-config('style.corner-shape'))
|
|
|
64
64
|
|
|
65
65
|
// 侧边栏文字内容宽度
|
|
66
66
|
--side-content-width: 224px
|
|
67
|
-
//
|
|
68
|
-
--gap-
|
|
69
|
-
//
|
|
70
|
-
--gap-
|
|
67
|
+
// 组件内部基础间距(margin/padding 统一)
|
|
68
|
+
--gap-base: 16px
|
|
69
|
+
// 页面级留白(侧边栏/内容区/列间距),笔记本及以上放宽
|
|
70
|
+
--gap-page: 16px
|
|
71
|
+
@media screen and (min-width: $device-laptop)
|
|
72
|
+
--gap-page: 32px
|
|
73
|
+
// 右栏宽度增量(在 --width-sidebar 基础上加宽)
|
|
74
|
+
--rightbar-width-extra: calc(var(--gap-base) * 2)
|
|
71
75
|
|
|
72
76
|
--gap-p: 'calc(%s + 4px)' % $fs-body // gap for paragraph
|
|
73
77
|
--gap-p-compact: 'calc(%s * 0.75)' % $fs-body
|
|
@@ -83,11 +87,6 @@ $corner-shape = convert(hexo-config('style.corner-shape'))
|
|
|
83
87
|
@media screen and (max-width: $device-mobile-max)
|
|
84
88
|
--side-content-width: 224px
|
|
85
89
|
|
|
86
|
-
// 动态计算值
|
|
87
|
-
:root
|
|
88
|
-
// 元素文本内容到容器边缘的间距
|
|
89
|
-
--gap-max: calc(var(--gap-margin) + var(--gap-padding))
|
|
90
|
-
|
|
91
90
|
// shadow
|
|
92
91
|
$boxshadow-card = 0 1px 2px 0px rgba(0, 0, 0, 0.1)
|
|
93
92
|
$boxshadow-float = 0 4px 8px 0px rgba(0, 0, 0, 0.05)
|