96 lines
2.2 KiB
Plaintext
96 lines
2.2 KiB
Plaintext
/** 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;
|
|
transition: opacity .3s cubic-bezier(.32, .72, 0, 1), transform .3s cubic-bezier(.32, .72, 0, 1);
|
|
}
|
|
|
|
/* 弹层遮罩期间淡出:tabBar 由框架渲染在页面容器之上,页面内 z-index 盖不住它 */
|
|
.tabbar.is-hidden {
|
|
opacity: 0;
|
|
transform: translateY(calc(100% + 48rpx));
|
|
pointer-events: none;
|
|
}
|
|
|
|
.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;
|
|
}
|