|
|
@@ -73,6 +73,12 @@ ion-content {
|
|
|
font-weight: 800;
|
|
|
color: $ocean-deep;
|
|
|
line-height: 1;
|
|
|
+ animation: countdown-pop 0.45s ease-out;
|
|
|
+
|
|
|
+ &.countdown-go {
|
|
|
+ font-size: 2.2rem;
|
|
|
+ letter-spacing: 0.08em;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.countdown-hint {
|
|
|
@@ -83,6 +89,38 @@ ion-content {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+@keyframes countdown-pop {
|
|
|
+ 0% { transform: scale(1); }
|
|
|
+ 45% { transform: scale(1.35); }
|
|
|
+ 100% { transform: scale(1); }
|
|
|
+}
|
|
|
+
|
|
|
+// 星星进入动画:由小变大带轻微弹跳,左→中→右错开
|
|
|
+@keyframes star-enter-left {
|
|
|
+ 0% { opacity: 0; transform: translateY(14px) rotate(var(--star-tilt, -10deg)) scale(0); }
|
|
|
+ 55% { opacity: 1; transform: translateY(14px) rotate(var(--star-tilt, -10deg)) scale(1.05); }
|
|
|
+ 100% { opacity: 1; transform: translateY(14px) rotate(var(--star-tilt, -10deg)) scale(0.92); }
|
|
|
+}
|
|
|
+@keyframes star-enter-mid {
|
|
|
+ 0% { opacity: 0; transform: translateY(-6px) rotate(var(--star-tilt, 0deg)) scale(0); }
|
|
|
+ 55% { opacity: 1; transform: translateY(-6px) rotate(var(--star-tilt, 0deg)) scale(1.18); }
|
|
|
+ 100% { opacity: 1; transform: translateY(-6px) rotate(var(--star-tilt, 0deg)) scale(1.08); }
|
|
|
+}
|
|
|
+@keyframes star-enter-right {
|
|
|
+ 0% { opacity: 0; transform: translateY(14px) rotate(var(--star-tilt, 10deg)) scale(0); }
|
|
|
+ 55% { opacity: 1; transform: translateY(14px) rotate(var(--star-tilt, 10deg)) scale(1.05); }
|
|
|
+ 100% { opacity: 1; transform: translateY(14px) rotate(var(--star-tilt, 10deg)) scale(0.92); }
|
|
|
+}
|
|
|
+
|
|
|
+// 点亮星庆祝:放大 → 绕中心竖轴旋转 → 还原(做得更明显)
|
|
|
+@keyframes star-spin-inner {
|
|
|
+ 0% { transform: scale(1) rotateY(0deg); }
|
|
|
+ 15% { transform: scale(1.35) rotateY(0deg); }
|
|
|
+ 50% { transform: scale(1.35) rotateY(360deg); }
|
|
|
+ 88% { transform: scale(1.08) rotateY(360deg); }
|
|
|
+ 100% { transform: scale(1) rotateY(360deg); }
|
|
|
+}
|
|
|
+
|
|
|
.wizard-modal-overlay .wizard-header {
|
|
|
padding: 0 0 10px 0;
|
|
|
text-align: center;
|
|
|
@@ -978,10 +1016,23 @@ ion-content {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 通关卡通胖星星(替代宝箱)
|
|
|
+ // 通关卡通胖星星(替代宝箱)+ 进入动画
|
|
|
.victory-stars {
|
|
|
margin: 8px 0 14px;
|
|
|
text-align: center;
|
|
|
+
|
|
|
+ &.stars-three {
|
|
|
+ perspective: 240px;
|
|
|
+ .cartoon-star--arch-left.star-earned .star-spin-inner {
|
|
|
+ animation: star-spin-inner 1.5s ease-in-out 0.8s both;
|
|
|
+ }
|
|
|
+ .cartoon-star--arch-mid.star-earned .star-spin-inner {
|
|
|
+ animation: star-spin-inner 1.5s ease-in-out 0.98s both;
|
|
|
+ }
|
|
|
+ .cartoon-star--arch-right.star-earned .star-spin-inner {
|
|
|
+ animation: star-spin-inner 1.5s ease-in-out 1.16s both;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.victory-stars-row {
|
|
|
@@ -1000,17 +1051,27 @@ ion-content {
|
|
|
transform: rotate(var(--star-tilt, 0deg));
|
|
|
position: relative;
|
|
|
transition: transform 0.2s ease;
|
|
|
-
|
|
|
filter: drop-shadow(0 3px 6px rgba(30, 80, 120, 0.15));
|
|
|
|
|
|
&--arch-left {
|
|
|
transform: translateY(14px) rotate(var(--star-tilt, 0deg)) scale(0.92);
|
|
|
+ animation: star-enter-left 0.5s ease-out both;
|
|
|
}
|
|
|
&--arch-mid {
|
|
|
transform: translateY(-6px) rotate(var(--star-tilt, 0deg)) scale(1.08);
|
|
|
+ animation: star-enter-mid 0.5s ease-out 0.12s both;
|
|
|
}
|
|
|
&--arch-right {
|
|
|
transform: translateY(14px) rotate(var(--star-tilt, 0deg)) scale(0.92);
|
|
|
+ animation: star-enter-right 0.5s ease-out 0.24s both;
|
|
|
+ }
|
|
|
+
|
|
|
+ .star-spin-inner {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ display: block;
|
|
|
+ transform-style: preserve-3d;
|
|
|
+ transform-origin: center center;
|
|
|
}
|
|
|
|
|
|
.cartoon-star-svg {
|