1
1
<template >
2
- <div class =" sponsor -header" @click =" toggleCollapse" >
2
+ <div class =" brand -header" @click =" toggleCollapse" >
3
3
<span >倾情赞助</span >
4
4
<span class =" toggle-icon" >
5
5
<Icon v-if =" isCollapsed" name =" iconamoon:arrow-right-2" />
6
6
<Icon v-else name =" iconamoon:arrow-down-2" />
7
7
</span >
8
8
</div >
9
- <div class =" sponsor -container" >
9
+ <div class =" brand -container" >
10
10
<div class =" gold-sponsors" >
11
11
<div
12
- v-for =" (sponsor , index) in goldSponsors"
13
- v-show =" !isCollapsed || (isCollapsed && !sponsor .alt.includes('成为赞助商'))"
12
+ v-for =" (brand , index) in goldSponsors"
13
+ v-show =" !isCollapsed || (isCollapsed && !brand .alt.includes('成为赞助商'))"
14
14
:key =" 'gold-' + index"
15
15
:class =" { 'collapsed-mode': isCollapsed }"
16
- class =" sponsor -item gold"
17
- @click =" openSponsorLink(sponsor .href)"
16
+ class =" brand -item gold"
17
+ @click =" openSponsorLink(brand .href)"
18
18
>
19
- <img v-if =" sponsor .link" :alt =" sponsor .alt" :src =" sponsor .link" class =" sponsor -image" />
20
- <span v-if =" !isCollapsed && sponsor .alt.includes('成为赞助商')" class =" sponsor -text" >
21
- {{ sponsor .alt }}
19
+ <img v-if =" brand .link" :alt =" brand .alt" :src =" brand .link" class =" brand -image" />
20
+ <span v-if =" !isCollapsed && brand .alt.includes('成为赞助商')" class =" brand -text" >
21
+ {{ brand .alt }}
22
22
</span >
23
- <span v-if =" isCollapsed" class =" sponsor -text collapsed-text" >
24
- {{ sponsor .alt }}
23
+ <span v-if =" isCollapsed" class =" brand -text collapsed-text" >
24
+ {{ brand .alt }}
25
25
</span >
26
26
</div >
27
27
</div >
28
28
<div class =" general-sponsors" >
29
29
<div
30
- v-for =" (sponsor , index) in generalSponsors"
31
- v-show =" !isCollapsed || (isCollapsed && !sponsor .alt.includes('成为赞助商'))"
30
+ v-for =" (brand , index) in generalSponsors"
31
+ v-show =" !isCollapsed || (isCollapsed && !brand .alt.includes('成为赞助商'))"
32
32
:key =" 'general-' + index"
33
33
:class =" { 'collapsed-mode': isCollapsed }"
34
- class =" sponsor -item"
35
- @click =" openSponsorLink(sponsor .href)"
34
+ class =" brand -item"
35
+ @click =" openSponsorLink(brand .href)"
36
36
>
37
- <img v-if =" sponsor .link" :alt =" sponsor .alt" :src =" sponsor .link" class =" sponsor -image" />
38
- <span v-if =" !isCollapsed && sponsor .alt.includes('成为赞助商')" class =" sponsor -text" >
39
- {{ sponsor .alt }}
37
+ <img v-if =" brand .link" :alt =" brand .alt" :src =" brand .link" class =" brand -image" />
38
+ <span v-if =" !isCollapsed && brand .alt.includes('成为赞助商')" class =" brand -text" >
39
+ {{ brand .alt }}
40
40
</span >
41
- <span v-if =" isCollapsed" class =" sponsor -text collapsed-text" >
42
- {{ sponsor .alt }}
41
+ <span v-if =" isCollapsed" class =" brand -text collapsed-text" >
42
+ {{ brand .alt }}
43
43
</span >
44
44
</div >
45
45
</div >
46
- <div v-if =" isCollapsed" class =" sponsor -item become-sponsor " @click =" openSponsorLink(sponsorUrl)" >
47
- <span class =" sponsor -text" >成为赞助商</span >
46
+ <div v-if =" isCollapsed && brandNum() < 9 " class =" brand -item become-brand " @click =" openSponsorLink(sponsorUrl)" >
47
+ <span class =" brand -text" >成为赞助商</span >
48
48
</div >
49
49
</div >
50
50
</template >
51
51
52
52
<script setup>
53
- import { onMounted , ref } from " vue" ;
53
+ import { computed , onMounted , ref } from " vue" ;
54
54
import { generalSponsors , goldSponsors , sponsorUrl } from " ../data/sponsors" ;
55
55
56
56
const isCollapsed = ref (false );
@@ -68,6 +68,11 @@ const openSponsorLink = (href) => {
68
68
}
69
69
};
70
70
71
+ const brandNum = () => {
72
+ return goldSponsors .value .filter (item => item .link ? .trim () !== ' ' ).length +
73
+ generalSponsors .value .filter (item => item .link ? .trim () !== ' ' ).length ;
74
+ }
75
+
71
76
onMounted (() => {
72
77
if (typeof window !== ' undefined' ) {
73
78
const savedState = localStorage .getItem (" sponsorCollapsed" );
@@ -78,7 +83,7 @@ onMounted(() => {
78
83
79
84
80
85
< style scoped>
81
- .sponsor -header {
86
+ .brand - header {
82
87
display: flex;
83
88
justify- content: space- between;
84
89
align- items: center;
@@ -94,7 +99,7 @@ onMounted(() => {
94
99
opacity: 0.7 ;
95
100
}
96
101
97
- .sponsor -container {
102
+ .brand - container {
98
103
display: flex;
99
104
flex- direction: column;
100
105
gap: 3px ;
@@ -112,7 +117,7 @@ onMounted(() => {
112
117
gap: 3px ;
113
118
}
114
119
115
- .sponsor -item {
120
+ .brand - item {
116
121
background- color: var (-- vp- c- bg- soft);
117
122
cursor: pointer;
118
123
display: flex;
@@ -123,23 +128,23 @@ onMounted(() => {
123
128
position: relative;
124
129
}
125
130
126
- .sponsor -item :hover {
131
+ .brand - item: hover {
127
132
border: 1px solid var (-- vp- c- brand);
128
133
}
129
134
130
- .sponsor -item.gold {
135
+ .brand - item .gold {
131
136
height: 96px ;
132
137
}
133
138
134
- .sponsor -image {
139
+ .brand - image {
135
140
position: absolute;
136
141
width: 100 % ;
137
142
height: 100 % ;
138
143
object- fit: fill;
139
144
transition: opacity 0 .3s ease;
140
145
}
141
146
142
- .sponsor -text {
147
+ .brand - text {
143
148
color: var (-- vp- c- text- 3 );
144
149
font- size: 10px ;
145
150
white- space: nowrap;
@@ -149,15 +154,15 @@ onMounted(() => {
149
154
padding: 0 8px ;
150
155
}
151
156
152
- .sponsor -item.gold .sponsor -text {
157
+ .brand - item .gold .brand - text {
153
158
font- size: 13px ;
154
159
}
155
160
156
161
.collapsed - mode {
157
162
height: 32px ! important;
158
163
}
159
164
160
- .collapsed-mode .sponsor -image {
165
+ .collapsed - mode .brand - image {
161
166
opacity: 0 ;
162
167
}
163
168
@@ -171,7 +176,7 @@ onMounted(() => {
171
176
color: var (-- vp- c- text- 1 ) ! important;
172
177
}
173
178
174
- .become-sponsor {
179
+ .become - brand {
175
180
height: 32px ;
176
181
background- color: unset;
177
182
}
0 commit comments