/** v2 悬浮玻璃胶囊标签栏:左右留边、距底 + 安全区,选中态实心黑 + 顶部短横线 **/ .tabbar { position: fixed; left: 32rpx; right: 32rpx; bottom: calc(24rpx + env(safe-area-inset-bottom)); height: 120rpx; z-index: 50; border-radius: 60rpx; background: rgba(255, 255, 255, .72); -webkit-backdrop-filter: saturate(180%) blur(22px); backdrop-filter: saturate(180%) blur(22px); border: 1rpx solid rgba(255, 255, 255, .7); box-shadow: 0 0 0 1rpx rgba(0, 0, 0, .05), 0 20rpx 60rpx -20rpx rgba(0, 0, 0, .16); display: flex; align-items: center; } .tab-item { position: relative; flex: 1; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6rpx; color: var(--ink-3, #AEAEB2); transition: color .2s cubic-bezier(.32, .72, 0, 1); } .tab-ic { width: 42rpx; height: 42rpx; } .tab-tx { font-size: 20rpx; letter-spacing: .02em; line-height: 1; } /* 选中态短横线 */ .tab-item::after { content: ''; position: absolute; bottom: 12rpx; left: 50%; width: 28rpx; height: 4rpx; border-radius: 4rpx; background: var(--ink, #0A0A0A); transform: translateX(-50%) scaleX(.3); opacity: 0; transition: opacity .24s cubic-bezier(.32, .72, 0, 1), transform .24s cubic-bezier(.32, .72, 0, 1); } .tab-item.is-on { color: var(--ink, #0A0A0A); } .tab-item.is-on::after { opacity: 1; transform: translateX(-50%) scaleX(1); } .tab-ic-wrap { position: relative; } /* 未读徽标:零彩色黑底白字数字胶囊 */ .tab-badge { position: absolute; top: -6rpx; left: calc(50% + 6rpx); min-width: 30rpx; height: 30rpx; padding: 0 8rpx; border-radius: 16rpx; background: var(--ink, #0A0A0A); color: #fff; font-size: 18rpx; font-weight: 600; line-height: 30rpx; text-align: center; font-variant-numeric: tabular-nums; }