Skip to content

Commit 4a66aaa

Browse files
committed
rollback footer
1 parent e2e239f commit 4a66aaa

1 file changed

Lines changed: 15 additions & 147 deletions

File tree

src/layouts/components/Footer.vue

Lines changed: 15 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -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: 4px;
263+
margin-inline-start: 2px; // 减少间距
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

Comments
 (0)