Browse Source

fix(R10): 顶部/高度适配 + 拒单禁聊 + 号码牌惰性释放

dev
cursor 1 day ago
parent
commit
093a2d9d24
11 changed files with 66 additions and 41 deletions
  1. +12
    -11
      pages.json
  2. +6
    -3
      pages/chat/chat.vue
  3. +5
    -3
      pages/confirm/confirm.vue
  4. +5
    -3
      pages/index/index.vue
  5. +6
    -4
      pages/menu/menu.vue
  6. +6
    -3
      pages/orders/orders.vue
  7. +6
    -3
      pages/staff/board.vue
  8. +6
    -3
      pages/staff/chat.vue
  9. +7
    -4
      pages/staff/detail.vue
  10. +4
    -2
      pages/staff/login.vue
  11. +3
    -2
      uni.scss

+ 12
- 11
pages.json View File

@ -1,20 +1,21 @@
{
{
"pages": [ "pages": [
{ "path": "pages/index/index", "style": { "navigationStyle": "custom" } },
{ "path": "pages/menu/menu", "style": { "navigationStyle": "custom" } },
{ "path": "pages/confirm/confirm", "style": { "navigationStyle": "custom" } },
{ "path": "pages/orders/orders", "style": { "navigationStyle": "custom" } },
{ "path": "pages/chat/chat", "style": { "navigationStyle": "custom" } },
{ "path": "pages/staff/login", "style": { "navigationStyle": "custom" } },
{ "path": "pages/staff/board", "style": { "navigationStyle": "custom" } },
{ "path": "pages/staff/detail", "style": { "navigationStyle": "custom" } },
{ "path": "pages/staff/chat", "style": { "navigationStyle": "custom" } }
{ "path": "pages/index/index", "style": { "navigationStyle": "custom","disableScroll": true } },
{ "path": "pages/menu/menu", "style": { "navigationStyle": "custom","disableScroll": true } },
{ "path": "pages/confirm/confirm", "style": { "navigationStyle": "custom","disableScroll": true } },
{ "path": "pages/orders/orders", "style": { "navigationStyle": "custom","disableScroll": true } },
{ "path": "pages/chat/chat", "style": { "navigationStyle": "custom","disableScroll": true } },
{ "path": "pages/staff/login", "style": { "navigationStyle": "custom","disableScroll": true } },
{ "path": "pages/staff/board", "style": { "navigationStyle": "custom","disableScroll": true } },
{ "path": "pages/staff/detail", "style": { "navigationStyle": "custom","disableScroll": true } },
{ "path": "pages/staff/chat", "style": { "navigationStyle": "custom","disableScroll": true } }
], ],
"globalStyle": { "globalStyle": {
"navigationStyle": "custom",
"navigationStyle": "custom","disableScroll": true,
"navigationBarTextStyle": "white", "navigationBarTextStyle": "white",
"navigationBarTitleText": "纯瘾大", "navigationBarTitleText": "纯瘾大",
"navigationBarBackgroundColor": "#0D0D0D", "navigationBarBackgroundColor": "#0D0D0D",
"backgroundColor": "#0D0D0D" "backgroundColor": "#0D0D0D"
} }
} }

+ 6
- 3
pages/chat/chat.vue View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page-chat"> <view class="page-chat">
<view class="nav-bar"> <view class="nav-bar">
<text class="nav-back" @tap="goBack"></text> <text class="nav-back" @tap="goBack"></text>
@ -69,8 +69,8 @@ export default {
</script> </script>
<style scoped> <style scoped>
.page-chat{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);width:100%}
.nav-bar{height:100rpx;display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-bar{height:100rpx;position:sticky;top:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-back{font-size:36rpx;color:var(--text-dim)} .nav-back{font-size:36rpx;color:var(--text-dim)}
.nav-title{font-size:32rpx;font-weight:800;color:var(--gold)} .nav-title{font-size:32rpx;font-weight:800;color:var(--gold)}
.chat-list{flex:1;padding:16rpx 0} .chat-list{flex:1;padding:16rpx 0}
@ -78,3 +78,6 @@ export default {
.chat-input{flex:1;height:76rpx;background:var(--bg);border-radius:16rpx;padding:0 28rpx;font-size:28rpx;color:var(--text)} .chat-input{flex:1;height:76rpx;background:var(--bg);border-radius:16rpx;padding:0 28rpx;font-size:28rpx;color:var(--text)}
.chat-send{width:104rpx;height:72rpx;border-radius:16rpx;background:var(--blue);color:#fff;border:none;font-size:26rpx;font-weight:700} .chat-send{width:104rpx;height:72rpx;border-radius:16rpx;background:var(--blue);color:#fff;border:none;font-size:26rpx;font-weight:700}
</style> </style>

+ 5
- 3
pages/confirm/confirm.vue View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page-confirm"> <view class="page-confirm">
<view class="nav-bar"> <view class="nav-bar">
<text class="nav-back" @tap="goBack"></text> <text class="nav-back" @tap="goBack"></text>
@ -82,8 +82,8 @@ export default {
</script> </script>
<style scoped> <style scoped>
.page-confirm{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);width:100%}
.nav-bar{height:100rpx;display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-bar{height:100rpx;position:sticky;top:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-back{font-size:36rpx;color:var(--text-dim)} .nav-back{font-size:36rpx;color:var(--text-dim)}
.nav-title{font-size:32rpx;font-weight:800;color:var(--gold)} .nav-title{font-size:32rpx;font-weight:800;color:var(--gold)}
.confirm-body{flex:1;padding:0 28rpx} .confirm-body{flex:1;padding:0 28rpx}
@ -101,3 +101,5 @@ export default {
.bell-btn{width:100%;height:96rpx;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--gold-dark),var(--gold));color:#1A1A1A;border:none;font-size:32rpx;font-weight:800;display:flex;align-items:center;justify-content:center;animation:pulse-glow 2s ease-in-out infinite} .bell-btn{width:100%;height:96rpx;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--gold-dark),var(--gold));color:#1A1A1A;border:none;font-size:32rpx;font-weight:800;display:flex;align-items:center;justify-content:center;animation:pulse-glow 2s ease-in-out infinite}
@keyframes pulse-glow{0%,100%{box-shadow:0 0 20rpx rgba(245,166,35,.3)}50%{box-shadow:0 0 40rpx rgba(245,166,35,.6)}} @keyframes pulse-glow{0%,100%{box-shadow:0 0 20rpx rgba(245,166,35,.3)}50%{box-shadow:0 0 40rpx rgba(245,166,35,.6)}}
</style> </style>

+ 5
- 3
pages/index/index.vue View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page-index"> <view class="page-index">
<view class="nav-bar"> <view class="nav-bar">
<view class="nav-left"> <view class="nav-left">
@ -127,8 +127,8 @@ export default {
</script> </script>
<style scoped> <style scoped>
.page-index{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);width:100%}
.nav-bar{height:100rpx;display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-bar{height:100rpx;position:sticky;top:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-left{display:flex;align-items:center;gap:16rpx} .nav-left{display:flex;align-items:center;gap:16rpx}
.nav-logo{font-size:44rpx} .nav-logo{font-size:44rpx}
.nav-brand{font-size:40rpx;font-weight:900;color:var(--gold);letter-spacing:4rpx} .nav-brand{font-size:40rpx;font-weight:900;color:var(--gold);letter-spacing:4rpx}
@ -164,3 +164,5 @@ export default {
.card-divider{text-align:center;color:var(--text-muted);font-size:24rpx;margin:20rpx 0;position:relative} .card-divider{text-align:center;color:var(--text-muted);font-size:24rpx;margin:20rpx 0;position:relative}
.modal-footer{padding:0 36rpx 40rpx} .modal-footer{padding:0 36rpx 40rpx}
</style> </style>

+ 6
- 4
pages/menu/menu.vue View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page-menu"> <view class="page-menu">
<view class="nav-bar"> <view class="nav-bar">
<view class="nav-left"> <view class="nav-left">
@ -138,14 +138,14 @@ export default {
</script> </script>
<style scoped> <style scoped>
.page-menu{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);width:100%}
.nav-bar{height:100rpx;display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0;position:sticky;top:0;z-index:100;background:var(--bg)}
.nav-bar{height:100rpx;position:sticky;top:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0;position:sticky;top:0;z-index:100;background:var(--bg)}
.nav-left{display:flex;align-items:center;gap:16rpx} .nav-left{display:flex;align-items:center;gap:16rpx}
.nav-logo{font-size:44rpx} .nav-logo{font-size:44rpx}
.nav-brand{font-size:40rpx;font-weight:900;color:var(--gold);letter-spacing:4rpx} .nav-brand{font-size:40rpx;font-weight:900;color:var(--gold);letter-spacing:4rpx}
.card-badge{background:linear-gradient(135deg,var(--gold-dark),var(--gold));color:#1A1A1A;padding:10rpx 24rpx;border-radius:28rpx;font-weight:800;font-size:26rpx;letter-spacing:6rpx;animation:card-appear-top .5s ease} .card-badge{background:linear-gradient(135deg,var(--gold-dark),var(--gold));color:#1A1A1A;padding:10rpx 24rpx;border-radius:28rpx;font-weight:800;font-size:26rpx;letter-spacing:6rpx;animation:card-appear-top .5s ease}
.my-btn{font-size:26rpx;color:var(--gold);font-weight:600} .my-btn{font-size:26rpx;color:var(--gold);font-weight:600}
.menu-scroll{flex:1}
.product-grid{padding:16rpx 20rpx} .product-grid{padding:16rpx 20rpx}
.empty-state{display:flex;flex-direction:column;align-items:center;padding:120rpx 0} .empty-state{display:flex;flex-direction:column;align-items:center;padding:120rpx 0}
.empty-icon{font-size:112rpx;opacity:.3} .empty-icon{font-size:112rpx;opacity:.3}
@ -185,3 +185,5 @@ export default {
.cart-footer{padding:24rpx 40rpx 40rpx;flex-shrink:0} .cart-footer{padding:24rpx 40rpx 40rpx;flex-shrink:0}
.next-btn{width:100%;height:96rpx;border-radius:28rpx;background:linear-gradient(135deg,var(--orange),var(--red));color:#fff;border:none;font-size:32rpx;font-weight:800;box-shadow:0 8rpx 40rpx rgba(255,107,53,.35)} .next-btn{width:100%;height:96rpx;border-radius:28rpx;background:linear-gradient(135deg,var(--orange),var(--red));color:#fff;border:none;font-size:32rpx;font-weight:800;box-shadow:0 8rpx 40rpx rgba(255,107,53,.35)}
</style> </style>

+ 6
- 3
pages/orders/orders.vue View File

@ -11,7 +11,7 @@
<template #actions> <template #actions>
<view class="card-actions"> <view class="card-actions">
<button v-if="o.status===0" class="action-btn action-remind" @tap="onRemind(o.id)">🔔 催单</button> <button v-if="o.status===0" class="action-btn action-remind" @tap="onRemind(o.id)">🔔 催单</button>
<button class="action-btn action-chat" @tap="onChat">
<button v-if="o.status!==3" class="action-btn action-chat" @tap="onChat">
💬 联系调酒师 💬 联系调酒师
<text v-if="card.unread > 0" class="unread-dot">{{ card.unread }}</text> <text v-if="card.unread > 0" class="unread-dot">{{ card.unread }}</text>
</button> </button>
@ -77,8 +77,8 @@ export default {
</script> </script>
<style scoped> <style scoped>
.page-orders{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);width:100%}
.nav-bar{height:100rpx;display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-bar{height:100rpx;position:sticky;top:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-back{font-size:36rpx;color:var(--text-dim)} .nav-back{font-size:36rpx;color:var(--text-dim)}
.nav-title{font-size:32rpx;font-weight:800;color:var(--gold)} .nav-title{font-size:32rpx;font-weight:800;color:var(--gold)}
.orders-body{flex:1;padding:20rpx} .orders-body{flex:1;padding:20rpx}
@ -92,3 +92,6 @@ export default {
.empty-text{font-size:28rpx;color:var(--text-muted);margin:16rpx 0} .empty-text{font-size:28rpx;color:var(--text-muted);margin:16rpx 0}
.btn-back-menu{margin-top:40rpx;padding:16rpx 48rpx;border-radius:40rpx;background:var(--gold);color:#1A1A1A;font-size:28rpx;font-weight:700;border:none} .btn-back-menu{margin-top:40rpx;padding:16rpx 48rpx;border-radius:40rpx;background:var(--gold);color:#1A1A1A;font-size:28rpx;font-weight:700;border:none}
</style> </style>

+ 6
- 3
pages/staff/board.vue View File

@ -24,7 +24,7 @@
<template #actions> <template #actions>
<view class="board-actions"> <view class="board-actions">
<button class="ba-btn ba-gold" @tap="onDetail(o)">📖 详情</button> <button class="ba-btn ba-gold" @tap="onDetail(o)">📖 详情</button>
<button class="ba-btn ba-blue" @tap="onChat(o)">💬 聊天</button>
<button v-if="o.status!==3" class="ba-btn ba-blue" @tap="onChat(o)">💬 聊天</button>
<button v-if="o.status===0" class="ba-btn ba-gold" @tap="onConfirm(o.id)"> 接单</button> <button v-if="o.status===0" class="ba-btn ba-gold" @tap="onConfirm(o.id)"> 接单</button>
<button v-if="o.status===0" class="ba-btn ba-red" @tap="onCancel(o.id)"> 拒单</button> <button v-if="o.status===0" class="ba-btn ba-red" @tap="onCancel(o.id)"> 拒单</button>
<button v-if="o.status===1" class="ba-btn ba-gold" @tap="onDone(o.id)"> 结单</button> <button v-if="o.status===1" class="ba-btn ba-gold" @tap="onDone(o.id)"> 结单</button>
@ -103,8 +103,8 @@ export default {
</script> </script>
<style scoped> <style scoped>
.page-staff-board{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);width:100%}
.nav-bar{height:100rpx;display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-bar{height:100rpx;position:sticky;top:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-left{display:flex;align-items:center;gap:16rpx} .nav-left{display:flex;align-items:center;gap:16rpx}
.nav-logo{font-size:44rpx} .nav-logo{font-size:44rpx}
.nav-brand{font-size:32rpx;font-weight:900;color:var(--gold)} .nav-brand{font-size:32rpx;font-weight:900;color:var(--gold)}
@ -124,3 +124,6 @@ export default {
.empty-icon{font-size:112rpx;opacity:.3} .empty-icon{font-size:112rpx;opacity:.3}
.empty-text{font-size:28rpx;color:var(--text-muted);margin-top:16rpx} .empty-text{font-size:28rpx;color:var(--text-muted);margin-top:16rpx}
</style> </style>

+ 6
- 3
pages/staff/chat.vue View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page-staff-chat"> <view class="page-staff-chat">
<view class="nav-bar"> <view class="nav-bar">
<text class="nav-back" @tap="goBack"></text> <text class="nav-back" @tap="goBack"></text>
@ -70,8 +70,8 @@ export default {
</script> </script>
<style scoped> <style scoped>
.page-staff-chat{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);width:100%}
.nav-bar{height:100rpx;display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-bar{height:100rpx;position:sticky;top:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-back{font-size:36rpx;color:var(--text-dim)} .nav-back{font-size:36rpx;color:var(--text-dim)}
.nav-title{font-size:32rpx;font-weight:800;color:var(--gold)} .nav-title{font-size:32rpx;font-weight:800;color:var(--gold)}
.chat-list{flex:1;padding:16rpx 0} .chat-list{flex:1;padding:16rpx 0}
@ -79,3 +79,6 @@ export default {
.chat-input{flex:1;height:76rpx;background:var(--bg);border-radius:16rpx;padding:0 28rpx;font-size:28rpx;color:var(--text)} .chat-input{flex:1;height:76rpx;background:var(--bg);border-radius:16rpx;padding:0 28rpx;font-size:28rpx;color:var(--text)}
.chat-send{width:104rpx;height:72rpx;border-radius:16rpx;background:var(--blue);color:#fff;border:none;font-size:26rpx;font-weight:700} .chat-send{width:104rpx;height:72rpx;border-radius:16rpx;background:var(--blue);color:#fff;border:none;font-size:26rpx;font-weight:700}
</style> </style>

+ 7
- 4
pages/staff/detail.vue View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page-staff-detail"> <view class="page-staff-detail">
<view class="nav-bar"> <view class="nav-bar">
<text class="nav-back" @tap="goBack"></text> <text class="nav-back" @tap="goBack"></text>
@ -41,7 +41,7 @@
<view v-if="order" class="detail-actions"> <view v-if="order" class="detail-actions">
<button v-if="order.status===0" class="da-btn da-confirm" @tap="onConfirm"> 接单</button> <button v-if="order.status===0" class="da-btn da-confirm" @tap="onConfirm"> 接单</button>
<button v-if="order.status===1" class="da-btn da-done" @tap="onDone"> 结单</button> <button v-if="order.status===1" class="da-btn da-done" @tap="onDone"> 结单</button>
<button class="da-btn da-chat" @tap="onChat">💬 聊天</button>
<button v-if="order.status!==3" class="da-btn da-chat" @tap="onChat">💬 聊天</button>
</view> </view>
</view> </view>
</template> </template>
@ -77,8 +77,8 @@ export default {
</script> </script>
<style scoped> <style scoped>
.page-staff-detail{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);width:100%}
.nav-bar{height:100rpx;display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-bar{height:100rpx;position:sticky;top:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:0 28rpx;border-bottom:1px solid var(--border);flex-shrink:0}
.nav-back{font-size:36rpx;color:var(--text-dim)} .nav-back{font-size:36rpx;color:var(--text-dim)}
.nav-title{font-size:32rpx;font-weight:800;color:var(--gold)} .nav-title{font-size:32rpx;font-weight:800;color:var(--gold)}
.detail-body{flex:1;padding:28rpx} .detail-body{flex:1;padding:28rpx}
@ -101,3 +101,6 @@ export default {
.empty-icon{font-size:112rpx;opacity:.3} .empty-icon{font-size:112rpx;opacity:.3}
.empty-text{font-size:28rpx;color:var(--text-muted);margin-top:16rpx} .empty-text{font-size:28rpx;color:var(--text-muted);margin-top:16rpx}
</style> </style>

+ 4
- 2
pages/staff/login.vue View File

@ -1,4 +1,4 @@
<template>
<template>
<view class="page-staff-login"> <view class="page-staff-login">
<view class="login-container"> <view class="login-container">
<text class="login-logo">🧑🍳</text> <text class="login-logo">🧑🍳</text>
@ -60,7 +60,7 @@ export default {
</script> </script>
<style scoped> <style scoped>
.page-staff-login{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);width:100%}
.login-container{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80rpx 64rpx} .login-container{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80rpx 64rpx}
.login-logo{font-size:120rpx;animation:float 3s ease-in-out infinite} .login-logo{font-size:120rpx;animation:float 3s ease-in-out infinite}
.login-title{font-size:44rpx;font-weight:800;color:var(--gold);margin:24rpx 0 8rpx} .login-title{font-size:44rpx;font-weight:800;color:var(--gold);margin:24rpx 0 8rpx}
@ -71,3 +71,5 @@ export default {
.back-link{margin-top:24rpx;color:var(--text-muted);font-size:24rpx} .back-link{margin-top:24rpx;color:var(--text-muted);font-size:24rpx}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-16rpx)}} @keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-16rpx)}}
</style> </style>

+ 3
- 2
uni.scss View File

@ -1,4 +1,4 @@
// 纯瘾大 全局样式
// 纯瘾大 全局样式
page,view,text,button,input,scroll-view,image,navigator,swiper,swiper-item{box-sizing:border-box} page,view,text,button,input,scroll-view,image,navigator,swiper,swiper-item{box-sizing:border-box}
page { page {
@ -21,7 +21,7 @@ page {
--radius-sm: 20rpx; --radius-sm: 20rpx;
--radius-xs: 12rpx; --radius-xs: 12rpx;
--nav-h: 100rpx; --nav-h: 100rpx;
--safe-b: 68rpx;
--safe-b: env(safe-area-inset-bottom, 0px);
background-color: var(--bg); background-color: var(--bg);
color: var(--text); color: var(--text);
font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif; font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;
@ -40,3 +40,4 @@ page {
@keyframes fade-in-up{from{opacity:0;transform:translateY(32rpx)}to{opacity:1;transform:translateY(0)}} @keyframes fade-in-up{from{opacity:0;transform:translateY(32rpx)}to{opacity:1;transform:translateY(0)}}
@keyframes card-appear-top{0%{transform:translateY(-40rpx) scale(.5);opacity:0}100%{transform:translateY(0) scale(1);opacity:1}} @keyframes card-appear-top{0%{transform:translateY(-40rpx) scale(.5);opacity:0}100%{transform:translateY(0) scale(1);opacity:1}}
@keyframes float-bubble{0%{transform:translateY(0) scale(1);opacity:1}100%{transform:translateY(-180rpx) scale(1.3);opacity:0}} @keyframes float-bubble{0%{transform:translateY(0) scale(1);opacity:1}100%{transform:translateY(-180rpx) scale(1.3);opacity:0}}

Loading…
Cancel
Save