11<template >
2- <div class =" sponsor -header" @click =" toggleCollapse" >
2+ <div class =" brand -header" @click =" toggleCollapse" >
33 <span >倾情赞助</span >
44 <span class =" toggle-icon" >
55 <Icon v-if =" isCollapsed" name =" iconamoon:arrow-right-2" />
66 <Icon v-else name =" iconamoon:arrow-down-2" />
77 </span >
88 </div >
9- <div class =" sponsor -container" >
9+ <div class =" brand -container" >
1010 <div class =" gold-sponsors" >
1111 <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('成为赞助商'))"
1414 :key =" 'gold-' + index"
1515 :class =" { 'collapsed-mode': isCollapsed }"
16- class =" sponsor -item gold"
17- @click =" openSponsorLink(sponsor .href)"
16+ class =" brand -item gold"
17+ @click =" openSponsorLink(brand .href)"
1818 >
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 }}
2222 </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 }}
2525 </span >
2626 </div >
2727 </div >
2828 <div class =" general-sponsors" >
2929 <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('成为赞助商'))"
3232 :key =" 'general-' + index"
3333 :class =" { 'collapsed-mode': isCollapsed }"
34- class =" sponsor -item"
35- @click =" openSponsorLink(sponsor .href)"
34+ class =" brand -item"
35+ @click =" openSponsorLink(brand .href)"
3636 >
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 }}
4040 </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 }}
4343 </span >
4444 </div >
4545 </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 >
4848 </div >
4949 </div >
5050</template >
5151
5252<script setup>
53- import { onMounted , ref } from " vue" ;
53+ import { computed , onMounted , ref } from " vue" ;
5454import { generalSponsors , goldSponsors , sponsorUrl } from " ../data/sponsors" ;
5555
5656const isCollapsed = ref (false );
@@ -68,6 +68,11 @@ const openSponsorLink = (href) => {
6868 }
6969};
7070
71+ const brandNum = () => {
72+ return goldSponsors .value .filter (item => item .link ? .trim () !== ' ' ).length +
73+ generalSponsors .value .filter (item => item .link ? .trim () !== ' ' ).length ;
74+ }
75+
7176onMounted (() => {
7277 if (typeof window !== ' undefined' ) {
7378 const savedState = localStorage .getItem (" sponsorCollapsed" );
@@ -78,7 +83,7 @@ onMounted(() => {
7883
7984
8085< style scoped>
81- .sponsor -header {
86+ .brand - header {
8287 display: flex;
8388 justify- content: space- between;
8489 align- items: center;
@@ -94,7 +99,7 @@ onMounted(() => {
9499 opacity: 0.7 ;
95100}
96101
97- .sponsor -container {
102+ .brand - container {
98103 display: flex;
99104 flex- direction: column;
100105 gap: 3px ;
@@ -112,7 +117,7 @@ onMounted(() => {
112117 gap: 3px ;
113118}
114119
115- .sponsor -item {
120+ .brand - item {
116121 background- color: var (-- vp- c- bg- soft);
117122 cursor: pointer;
118123 display: flex;
@@ -123,23 +128,23 @@ onMounted(() => {
123128 position: relative;
124129}
125130
126- .sponsor -item :hover {
131+ .brand - item: hover {
127132 border: 1px solid var (-- vp- c- brand);
128133}
129134
130- .sponsor -item.gold {
135+ .brand - item .gold {
131136 height: 96px ;
132137}
133138
134- .sponsor -image {
139+ .brand - image {
135140 position: absolute;
136141 width: 100 % ;
137142 height: 100 % ;
138143 object- fit: fill;
139144 transition: opacity 0 .3s ease;
140145}
141146
142- .sponsor -text {
147+ .brand - text {
143148 color: var (-- vp- c- text- 3 );
144149 font- size: 10px ;
145150 white- space: nowrap;
@@ -149,15 +154,15 @@ onMounted(() => {
149154 padding: 0 8px ;
150155}
151156
152- .sponsor -item.gold .sponsor -text {
157+ .brand - item .gold .brand - text {
153158 font- size: 13px ;
154159}
155160
156161.collapsed - mode {
157162 height: 32px ! important;
158163}
159164
160- .collapsed-mode .sponsor -image {
165+ .collapsed - mode .brand - image {
161166 opacity: 0 ;
162167}
163168
@@ -171,7 +176,7 @@ onMounted(() => {
171176 color: var (-- vp- c- text- 1 ) ! important;
172177}
173178
174- .become-sponsor {
179+ .become - brand {
175180 height: 32px ;
176181 background- color: unset;
177182}
0 commit comments