Files
Wechat/tab-bar/index.wxss

125 lines
2.1 KiB
Plaintext

/* tab-bar — 三端固定,全宽 Tab 胶囊 */
.tab-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 9999;
display: flex;
justify-content: center;
align-items: flex-end;
padding-bottom: env(safe-area-inset-bottom);
background: transparent;
}
.bar-row {
display: flex;
align-items: center;
margin-bottom: 15rpx;
padding: 0 24rpx;
width: 100%;
box-sizing: border-box;
}
.tab-capsule {
flex: 1;
display: flex;
align-items: center;
justify-content: space-around;
height: 100rpx;
background: #000000;
border-radius: 50rpx;
border: 1px solid rgba(255, 255, 255, 0.15);
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.8);
padding: 0 20rpx;
position: relative;
overflow: hidden;
}
.tab-capsule::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 60%;
height: 100%;
background: linear-gradient(
90deg,
transparent 0%,
rgba(255, 255, 255, 0.15) 20%,
rgba(255, 255, 255, 0.22) 50%,
rgba(255, 255, 255, 0.15) 80%,
transparent 100%
);
animation: shine 8s infinite;
z-index: 1;
}
@keyframes shine {
0% { left: -60%; }
15% { left: 100%; }
100% { left: 100%; }
}
.tab-item {
position: relative;
z-index: 2;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-width: 70rpx;
}
.tab-icon {
width: 44rpx;
height: 44rpx;
margin-bottom: 4rpx;
filter: brightness(0) invert(1);
opacity: 0.9;
}
.tab-text {
font-size: 20rpx;
color: #aaa;
z-index: 2;
}
.active .tab-icon {
opacity: 1;
filter: brightness(0) invert(1) drop-shadow(0 0 8rpx #00aaff);
}
.active .tab-text {
color: #00aaff;
font-weight: 500;
}
.badge-container {
position: absolute;
top: -10rpx;
right: -15rpx;
z-index: 100;
pointer-events: none;
}
.tab-badge {
min-width: 36rpx;
height: 36rpx;
line-height: 36rpx;
padding: 0 10rpx;
background: #ff3b30;
color: #fff;
font-size: 22rpx;
font-weight: bold;
border-radius: 36rpx;
text-align: center;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.3);
border: 1rpx solid rgba(255, 255, 255, 0.4);
}
page {
padding-bottom: 100rpx;
}