@@ -171,7 +171,7 @@ const showDynamicButton = computed(() => {
171171 <Teleport v-if =" appMode && showNav" to =" body" >
172172 <div class =" footer-nav-container" >
173173 <TransitionGroup name =" footer-nav" tag =" div" class =" footer-nav-group" >
174- <VCard key =" main-nav" : elevation =" 0 " class =" footer-nav-card" rounded =" pill" >
174+ <VCard key =" main-nav" elevation =" 3 " class =" footer-nav-card border " rounded =" pill" >
175175 <VCardText class =" footer-card-content" >
176176 <!-- 添加指示器 -->
177177 <div ref =" indicator" class =" nav-indicator" ></div >
@@ -217,8 +217,8 @@ const showDynamicButton = computed(() => {
217217 <VCard
218218 v-if =" showDynamicButton"
219219 key =" dynamic-btn"
220- : elevation =" 0 "
221- class =" footer-nav-card dynamic-btn-card"
220+ elevation =" 3 "
221+ class =" footer-nav-card dynamic-btn-card border "
222222 rounded =" pill"
223223 >
224224 <VCardText class =" footer-card-content" >
@@ -260,120 +260,23 @@ const showDynamicButton = computed(() => {
260260
261261 // 按钮卡片之间的间距
262262 > .v-card + .v-card {
263- margin-inline-start : 4 px ;
263+ margin-inline-start : 2 px ; // 减少间距
264264 }
265265}
266266
267267.footer-nav-card {
268268 position : relative ;
269269 overflow : hidden ;
270+ backdrop-filter : blur (24px );
271+ background-color : rgba (var (--v-theme-surface ), 0.6 );
270272 pointer-events : auto ;
271273 transition : all 0.5s cubic-bezier (0.25 , 1 , 0.5 , 1 );
272- will-change : transform , max-width , opacity ;
273-
274- // ===== iOS 26 Liquid Glass 效果 =====
275-
276- // 强力毛玻璃背景模糊
277- backdrop-filter : blur (40px ) saturate (1.8 ) brightness (1.05 );
278- -webkit-backdrop-filter : blur (40px ) saturate (1.8 ) brightness (1.05 );
279-
280- // 半透明玻璃底色 - 浅色模式
281- background : linear-gradient (
282- 135deg ,
283- rgba (255 , 255 , 255 , 0.45 ) 0% ,
284- rgba (255 , 255 , 255 , 0.25 ) 40% ,
285- rgba (255 , 255 , 255 , 0.3 ) 100%
286- );
287-
288- // 多层内发光边框 - 模拟玻璃边缘折射
289- border : 0.5px solid rgba (255 , 255 , 255 , 0.5 ) !important ;
290- box-shadow :
291- // 外层柔和投影
292- 0 8px 32px rgba (0 , 0 , 0 , 0.08 ),
293- 0 2px 12px rgba (0 , 0 , 0 , 0.04 ),
294- // 内发光 - 上边缘高光
295- inset 0 1px 1px rgba (255 , 255 , 255 , 0.6 ),
296- // 内发光 - 整体光泽
297- inset 0 0 20px rgba (255 , 255 , 255 , 0.1 );
298-
299- // 顶部光泽反射条
300- & ::before {
301- content : ' ' ;
302- position : absolute ;
303- inset-block-start : 0 ;
304- inset-inline-start : 10% ;
305- z-index : 1 ;
306- border-radius : 0 0 50% 50% ;
307- background : linear-gradient (
308- 180deg ,
309- rgba (255 , 255 , 255 , 0.5 ) 0% ,
310- rgba (255 , 255 , 255 , 0 ) 100%
311- );
312- block-size : 40% ;
313- inline-size : 80% ;
314- pointer-events : none ;
315- }
316-
317- // 底部微光
318- & ::after {
319- content : ' ' ;
320- position : absolute ;
321- inset-block-end : 0 ;
322- inset-inline-start : 5% ;
323- z-index : 1 ;
324- border-radius : 50% 50% 0 0 ;
325- background : linear-gradient (
326- 0deg ,
327- rgba (255 , 255 , 255 , 0.08 ) 0% ,
328- rgba (255 , 255 , 255 , 0 ) 100%
329- );
330- block-size : 30% ;
331- inline-size : 90% ;
332- pointer-events : none ;
333- }
334-
335- // ===== 暗色模式适配 =====
336- .v-theme--dark & {
337- background : linear-gradient (
338- 135deg ,
339- rgba (255 , 255 , 255 , 0.12 ) 0% ,
340- rgba (255 , 255 , 255 , 0.05 ) 40% ,
341- rgba (255 , 255 , 255 , 0.08 ) 100%
342- );
343- border : 0.5px solid rgba (255 , 255 , 255 , 0.15 ) !important ;
344- box-shadow :
345- 0 8px 32px rgba (0 , 0 , 0 , 0.3 ),
346- 0 2px 12px rgba (0 , 0 , 0 , 0.2 ),
347- inset 0 1px 1px rgba (255 , 255 , 255 , 0.15 ),
348- inset 0 0 20px rgba (255 , 255 , 255 , 0.03 );
349-
350- & ::before {
351- background : linear-gradient (
352- 180deg ,
353- rgba (255 , 255 , 255 , 0.12 ) 0% ,
354- rgba (255 , 255 , 255 , 0 ) 100%
355- );
356- }
357-
358- & ::after {
359- background : linear-gradient (
360- 0deg ,
361- rgba (255 , 255 , 255 , 0.03 ) 0% ,
362- rgba (255 , 255 , 255 , 0 ) 100%
363- );
364- }
365- }
274+ will-change : transform , max-inline-size , opacity ;
366275
367276 // 透明主题下的特殊样式
368277 .v-theme--transparent & {
369- backdrop-filter : blur (40px ) saturate (1.8 ) brightness (1.05 );
370- -webkit-backdrop-filter : blur (40px ) saturate (1.8 ) brightness (1.05 );
371- background : linear-gradient (
372- 135deg ,
373- rgba (255 , 255 , 255 , 0.2 ) 0% ,
374- rgba (255 , 255 , 255 , 0.08 ) 40% ,
375- rgba (255 , 255 , 255 , 0.12 ) 100%
376- );
278+ backdrop-filter : blur (var (--transparent-blur-heavy , 16px ));
279+ background-color : rgba (var (--v-theme-surface ), var (--transparent-opacity-heavy , 0.5 ));
377280 }
378281
379282 .v-btn-toggle {
@@ -384,7 +287,6 @@ const showDynamicButton = computed(() => {
384287
385288.footer-card-content {
386289 position : relative ;
387- z-index : 2 ;
388290 padding-block : 4px ;
389291 padding-inline : 6px ;
390292}
@@ -407,46 +309,12 @@ const showDynamicButton = computed(() => {
407309 justify-content : center ;
408310 background-color : transparent ;
409311 block-size : 48px ;
410- transition : all 0.35s cubic-bezier (0.25 , 1 , 0.5 , 1 );
411312
412313 & .v-btn--active {
413314 background-color : transparent ;
414315 box-shadow : none ;
415316 }
416317
417- // 选中态 - 液态玻璃胶囊高亮
418- & .footer-nav-btn-active {
419- & ::before {
420- content : ' ' ;
421- position : absolute ;
422- inset : 4px 2px ;
423- z-index : -1 ;
424- border : 0.5px solid rgba (255 , 255 , 255 , 0.35 );
425- border-radius : 16px ;
426- background : linear-gradient (
427- 180deg ,
428- rgba (var (--v-theme-primary ), 0.18 ) 0% ,
429- rgba (var (--v-theme-primary ), 0.08 ) 100%
430- );
431- box-shadow :
432- 0 2px 8px rgba (var (--v-theme-primary ), 0.15 ),
433- inset 0 1px 1px rgba (255 , 255 , 255 , 0.3 );
434- transition : all 0.35s cubic-bezier (0.25 , 1 , 0.5 , 1 );
435- }
436-
437- .v-theme--dark & ::before {
438- border-color : rgba (255 , 255 , 255 , 0.12 );
439- background : linear-gradient (
440- 180deg ,
441- rgba (var (--v-theme-primary ), 0.25 ) 0% ,
442- rgba (var (--v-theme-primary ), 0.1 ) 100%
443- );
444- box-shadow :
445- 0 2px 8px rgba (var (--v-theme-primary ), 0.2 ),
446- inset 0 1px 1px rgba (255 , 255 , 255 , 0.1 );
447- }
448- }
449-
450318 .btn-content {
451319 display : flex ;
452320 flex-direction : column ;
@@ -467,8 +335,8 @@ const showDynamicButton = computed(() => {
467335.dynamic-btn-card {
468336 block-size : auto ;
469337 inline-size : auto ;
338+ max-inline-size : 60px ;
470339 min-block-size : 0 ;
471- max-width : 60px ;
472340
473341 .footer-card-content {
474342 padding : 3px ;
@@ -493,17 +361,17 @@ const showDynamicButton = computed(() => {
493361// 底部导航动画
494362.footer-nav-enter-active ,
495363.footer-nav-leave-active {
496- transition : all 0.3s cubic-bezier (0.25 , 1 , 0.5 , 1 );
497364 overflow : hidden ;
365+ transition : all 0.3s cubic-bezier (0.25 , 1 , 0.5 , 1 );
498366}
499367
500368.footer-nav-enter-from ,
501369.footer-nav-leave-to {
502- opacity : 0 ;
503- max-width : 0 !important ;
504- margin-inline-start : 0 !important ;
505- border-width : 0 !important ;
506370 padding : 0 !important ;
371+ border-width : 0 !important ;
372+ margin-inline-start : 0 !important ;
373+ max-inline-size : 0 !important ;
374+ opacity : 0 ;
507375 transform : translateX (20px );
508376}
509377
0 commit comments