Files
sundynix-pets/pets-fe/pages/onboarding/onboarding.wxss
T
Blizzard 81d96f774c feat(fe): 冷启动过渡动画 — 爪印一步步踩上屏幕 + 收尾渐隐
- 启动登录已在 app.js onLaunch + store.ready 单例里最早触发,进首页不再等登录
- 闪屏把原来的单个 logo 换成左右交替的爪印小径,逐个延迟「踩」上屏走向 logo
- 登录/拉宠物完成后:先保证闪屏至少 900ms 让爪印走几步,再整屏渐隐放大切走,
  不再硬切到首页/建档向导

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 16:20:23 +08:00

121 lines
6.3 KiB
Plaintext

.onboard-page{
padding:0 var(--pad-x) 56rpx;
min-height:100%;
background:
radial-gradient(circle at top right, rgba(245,169,71,.22), transparent 45%),
var(--bg);
}
.step{animation:fade .24s ease}
.skip-link{text-align:center;margin-top:var(--sp-4);color:var(--muted);font-size:var(--fs-md);padding:var(--sp-2)}
@keyframes fade{from{opacity:0;transform:translateY(16rpx)}to{opacity:1;transform:none}}
/* 冷启动闪屏 */
.boot{
position:fixed;inset:0;z-index:200;
display:flex;flex-direction:column;align-items:center;justify-content:center;
background:
radial-gradient(circle at 50% 32%, rgba(253,179,92,.28), transparent 55%),
var(--bg);
transition:opacity .34s ease, transform .34s ease;
}
/* 收尾渐隐:整屏淡出 + 轻微放大,像走进 App,而不是硬切 */
.boot--out{opacity:0;transform:scale(1.06);pointer-events:none}
/* 爪印小径:一串爪印从下往上、左右交替地一步步踩出来,走向 logo */
.paw-trail{position:relative;width:320rpx;height:540rpx;margin:0 auto}
.paw-trail .pw{position:absolute;animation:paw-step 2.4s ease-in-out infinite both}
.paw-trail .paw{width:100rpx;height:92rpx}
.paw-trail .foot-l{transform:rotate(-13deg) scale(.6)}
.paw-trail .foot-r{transform:rotate(13deg) scale(-.6,.6)} /* 负 X 缩放 = 镜像成另一只脚 */
/* 之字形落点(bottom 越大越靠上)+ 逐个延迟,形成「一步步走」 */
.paw-trail .pw-0{left:96rpx;bottom:0;animation-delay:0s}
.paw-trail .pw-1{left:184rpx;bottom:96rpx;animation-delay:.2s}
.paw-trail .pw-2{left:96rpx;bottom:192rpx;animation-delay:.4s}
.paw-trail .pw-3{left:184rpx;bottom:288rpx;animation-delay:.6s}
.paw-trail .pw-4{left:96rpx;bottom:384rpx;animation-delay:.8s}
.paw-trail .pw-5{left:184rpx;bottom:480rpx;animation-delay:1s}
.boot-name{margin-top:var(--sp-4);font-size:var(--fs-2xl);font-weight:var(--fw-b);letter-spacing:-1rpx}
.boot-tip{margin-top:var(--sp-2);color:var(--muted);font-size:var(--fs-md)}
/* 每个爪印:从上方一点、缩着落下 → 踩实(轻微过冲)→ 停一下 → 淡出,循环 */
@keyframes paw-step{
0%{opacity:0;transform:translateY(-14rpx) scale(.7)}
10%{opacity:1;transform:translateY(0) scale(1.12)}
20%{opacity:1;transform:translateY(0) scale(1)}
68%{opacity:1;transform:translateY(0) scale(1)}
86%,100%{opacity:0;transform:translateY(0) scale(1)}
}
.hero{text-align:center;padding:60rpx 0 var(--sp-5)}
.pet-logo{
width:176rpx;height:176rpx;margin:0 auto var(--sp-5);border-radius:var(--r-lg);
background:linear-gradient(135deg,#FFB865,#F5943E);
display:flex;align-items:center;justify-content:center;
box-shadow:var(--sd-2);
}
/* 肉垫(呼应「肉垫计划」)——奶白掌垫 + 四趾垫,闪屏和欢迎屏共用 */
.paw{position:relative;width:100rpx;height:92rpx}
.paw .pad{
position:absolute;left:50%;bottom:0;transform:translateX(-50%);
width:66rpx;height:54rpx;background:#FFF7EC;
border-radius:48% 48% 44% 44%/62% 62% 40% 40%;
}
.paw .bean{position:absolute;background:#FFF7EC;border-radius:50%}
.paw .bean-1{width:22rpx;height:30rpx;left:0;top:30rpx;transform:rotate(-20deg)}
.paw .bean-2{width:24rpx;height:33rpx;left:27rpx;top:6rpx;transform:rotate(-7deg)}
.paw .bean-3{width:24rpx;height:33rpx;right:27rpx;top:6rpx;transform:rotate(7deg)}
.paw .bean-4{width:22rpx;height:30rpx;right:0;top:30rpx;transform:rotate(20deg)}
.hero-h1{font-size:var(--fs-2xl);letter-spacing:-1.2rpx;font-weight:var(--fw-b)}
.hero-sub{margin-top:var(--sp-3);line-height:1.65;color:var(--muted);font-size:var(--fs-md)}
.proof-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3);margin:var(--sp-6) 0}
.proof{background:#fff;border-radius:var(--r-md);padding:var(--sp-4) var(--sp-3);text-align:center;box-shadow:var(--sd-1)}
.proof-b{display:block;font-size:var(--fs-lg);font-weight:var(--fw-b)}
.proof-s{color:var(--muted);font-size:var(--fs-cap)}
.step-title{font-size:var(--fs-2xl);letter-spacing:-.8rpx;line-height:1.24;margin:var(--sp-3) 0;font-weight:var(--fw-b)}
.step-sub{color:var(--muted);line-height:1.6;font-size:var(--fs-md);margin-bottom:var(--sp-5)}
.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);margin-bottom:var(--sp-5)}
.choice-card{
background:#fff;border:4rpx solid transparent;border-radius:var(--r-lg);min-height:248rpx;
padding:var(--sp-5) var(--sp-4);box-shadow:var(--sd-1);transition:.18s ease;
display:flex;flex-direction:column;align-items:flex-start;
}
.choice-card.selected{border-color:var(--primary);background:var(--primary-soft)}
.choice-card .animal{
width:96rpx;height:96rpx;border-radius:var(--r-md);margin-bottom:var(--sp-3);
display:flex;align-items:center;justify-content:center;
background:var(--primary-soft);color:var(--primary-ink);
}
.choice-card.selected .animal{background:#fff}
.choice-b{font-size:var(--fs-lg);font-weight:var(--fw-b)}
.choice-s{display:block;color:var(--muted);font-size:var(--fs-sm);margin-top:var(--sp-2)}
.form-card{background:#fff;border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sd-1);margin-bottom:var(--sp-5)}
.stage-list{display:flex;flex-direction:column;gap:var(--sp-3);margin-bottom:var(--sp-5)}
.stage-card{background:#fff;border-radius:var(--r-md);border:4rpx solid transparent;padding:var(--sp-4);box-shadow:var(--sd-1)}
.stage-card.selected{border-color:var(--green);background:var(--green-soft)}
.stage-b{font-size:var(--fs-lg);font-weight:var(--fw-b)}
.stage-p{color:var(--muted);font-size:var(--fs-sm);margin-top:var(--sp-1)}
.gen-card{margin-top:var(--sp-5);background:#fff;border-radius:var(--r-lg);padding:var(--sp-6);box-shadow:var(--sd-2)}
.gen-line{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;color:var(--text-2);font-size:var(--fs-md)}
.tick{
width:44rpx;height:44rpx;border-radius:50%;background:var(--green);color:#fff;
display:flex;align-items:center;justify-content:center;flex:none;
}
.field-tip{margin-top:var(--sp-2);color:var(--muted);font-size:var(--fs-cap);line-height:1.5}
.stage-auto{
display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);
padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);
background:var(--green-soft);color:var(--green-ink);font-size:var(--fs-sm);
}
.stage-hint{
margin-left:var(--sp-2);padding:2rpx var(--sp-2);border-radius:var(--r-full);
background:var(--primary-soft);color:var(--primary-ink);font-size:var(--fs-cap);font-weight:var(--fw);
}