66 <Icon v-else name =" iconamoon:arrow-down-2" />
77 </span >
88 </div >
9- <div class =" sponsor-container" v-if = " !isCollapsed " >
9+ <div class =" sponsor-container" >
1010 <div class =" gold-sponsors" >
1111 <div
1212 v-for =" (sponsor, index) in goldSponsors"
1313 :key =" 'gold-' + index"
1414 class =" sponsor-item gold"
15+ :class =" { 'collapsed-mode': isCollapsed }"
1516 @click =" openSponsorLink(sponsor.href)"
17+ v-show =" !isCollapsed || (isCollapsed && hasValidText(sponsor))"
1618 >
1719 <img v-if =" sponsor.link" :src =" sponsor.link" :alt =" sponsor.alt" class =" sponsor-image" />
18- <span v-else class =" sponsor-text" >{{ sponsor.text }}</span >
20+ <span v-if =" hasText(sponsor)" class =" sponsor-text" :class =" { 'collapsed-text': isCollapsed }" >
21+ {{ sponsor.text || sponsor.alt }}
22+ </span >
1923 </div >
2024 </div >
2125 <div class =" general-sponsors" >
2226 <div
2327 v-for =" (sponsor, index) in generalSponsors"
2428 :key =" 'general-' + index"
2529 class =" sponsor-item"
30+ :class =" { 'collapsed-mode': isCollapsed }"
2631 @click =" openSponsorLink(sponsor.href)"
32+ v-show =" !isCollapsed || (isCollapsed && hasValidText(sponsor))"
2733 >
2834 <img v-if =" sponsor.link" :src =" sponsor.link" :alt =" sponsor.alt" class =" sponsor-image" />
29- <span v-else class =" sponsor-text" >{{ sponsor.text }}</span >
35+ <span v-if =" hasText(sponsor)" class =" sponsor-text" :class =" { 'collapsed-text': isCollapsed }" >
36+ {{ sponsor.text || sponsor.alt }}
37+ </span >
3038 </div >
3139 </div >
3240 </div >
@@ -38,6 +46,15 @@ import { goldSponsors, generalSponsors } from "../data/sponsors";
3846
3947const isCollapsed = ref (sessionStorage .getItem (" sponsorCollapsed" ) === " true" );
4048
49+ const hasText = (sponsor ) => {
50+ return !! sponsor .text || !! sponsor .alt ;
51+ };
52+
53+ const hasValidText = (sponsor ) => {
54+ const text = sponsor .text || sponsor .alt || ' ' ;
55+ return hasText (sponsor) && ! text .includes (' 成为赞助商' );
56+ };
57+
4158const toggleCollapse = () => {
4259 isCollapsed .value = ! isCollapsed .value ;
4360 sessionStorage .setItem (" sponsorCollapsed" , isCollapsed .value );
@@ -97,6 +114,8 @@ onMounted(() => {
97114 align-items : center ;
98115 justify-content : center ;
99116 height : 66px ;
117+ transition : all 0.3s ease ;
118+ position : relative ;
100119}
101120
102121.sponsor-item :hover {
@@ -108,17 +127,46 @@ onMounted(() => {
108127}
109128
110129.sponsor-image {
130+ position : absolute ;
111131 width : 100% ;
112132 height : 100% ;
113133 object-fit : fill ;
134+ transition : opacity 0.3s ease ;
114135}
115136
116137.sponsor-text {
117138 color : var (--vp-c-text-3 );
118139 font-size : 10px ;
140+ white-space : nowrap ;
141+ text-overflow : ellipsis ;
142+ overflow : hidden ;
143+ max-width : 100% ;
144+ padding : 0 8px ;
119145}
120146
121147.sponsor-item.gold .sponsor-text {
122148 font-size : 12px ;
123149}
150+
151+ .sponsor-item.collapsed-mode {
152+ height : 28px ;
153+ }
154+
155+ .sponsor-item.gold.collapsed-mode {
156+ height : 32px ;
157+ }
158+
159+ .collapsed-mode .sponsor-image {
160+ opacity : 0 ;
161+ }
162+
163+ .collapsed-text {
164+ color : var (--vp-c-brand-1 ) !important ;
165+ font-weight : 600 ;
166+ transform : scale (1.05 );
167+ }
168+
169+ .collapsed-mode :hover .collapsed-text {
170+ color : var (--vp-c-text-1 ) !important ;
171+ }
124172 </style >
0 commit comments