.clock-fall-container { position: absolute; width: 100%; height: 100%; overflow: hidden; z-index: -1; } .falling-clock { position: absolute; width: 100px; height: 100px; top: -150px; left: 50%; transform-origin: center; animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); animation-fill-mode: forwards; filter: drop-shadow(0 5px 10px rgba(0,0,0,0.1)); } /* 10个时钟的不同动画设置 */ .falling-clock-1 { animation: clockFall1 2s ease-in-out 0.1s forwards, clockSpin 3s linear 0.1s forwards; } .falling-clock-2 { animation: clockFall2 2.2s ease-in-out 0.2s forwards, clockSpin 3.5s linear 0.2s forwards; } .falling-clock-3 { animation: clockFall3 2.4s ease-in-out 0.3s forwards, clockSpin 4s linear 0.3s forwards; } .falling-clock-4 { animation: clockFall4 2.6s ease-in-out 0.4s forwards, clockSpin 3.2s linear 0.4s forwards; } .falling-clock-5 { animation: clockFall5 2.8s ease-in-out 0.5s forwards, clockSpin 3.8s linear 0.5s forwards; } .falling-clock-6 { animation: clockFall6 3s ease-in-out 0.6s forwards, clockSpin 4.2s linear 0.6s forwards; } .falling-clock-7 { animation: clockFall7 3.2s ease-in-out 0.7s forwards, clockSpin 3.5s linear 0.7s forwards; } .falling-clock-8 { animation: clockFall8 3.4s ease-in-out 0.8s forwards, clockSpin 4s linear 0.8s forwards; } .falling-clock-9 { animation: clockFall9 3.6s ease-in-out 0.9s forwards, clockSpin 3.7s linear 0.9s forwards; } .falling-clock-10 { animation: clockFall10 3.8s ease-in-out 1s forwards, clockSpin 4.5s linear 1s forwards; } /* 下落动画关键帧 */ @keyframes clockFall1 { to { top: 10%; left: 10%; transform: rotate(0deg) scale(1.2); } } @keyframes clockFall2 { to { top: 15%; left: 30%; transform: rotate(0deg) scale(1.3); } } @keyframes clockFall3 { to { top: 20%; left: 50%; transform: rotate(0deg) scale(1.1); } } @keyframes clockFall4 { to { top: 25%; left: 70%; transform: rotate(0deg) scale(1.4); } } @keyframes clockFall5 { to { top: 40%; left: 15%; transform: rotate(0deg) scale(1.2); } } @keyframes clockFall6 { to { top: 50%; left: 35%; transform: rotate(0deg) scale(1.5); } } @keyframes clockFall7 { to { top: 60%; left: 65%; transform: rotate(0deg) scale(1.3); } } @keyframes clockFall8 { to { top: 70%; left: 85%; transform: rotate(0deg) scale(1.1); } } @keyframes clockFall9 { to { top: 80%; left: 25%; transform: rotate(0deg) scale(1.4); } } @keyframes clockFall10 { to { top: 85%; left: 75%; transform: rotate(0deg) scale(1.2); } } /* 旋转动画关键帧 - 会慢慢停下来 */ @keyframes clockSpin { 0% { transform: rotate(0deg) scale(1); } 70% { transform: rotate(720deg) scale(var(--target-scale)); } 100% { transform: rotate(720deg) scale(var(--target-scale)); } } /* 时钟指针样式 */ .clock-face { width: 100%; height: 100%; position: relative; } .clock-center { position: absolute; width: 6px; height: 6px; background: #FFF; border-radius: 50%; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 10; } .clock-hand { position: absolute; top: 50%; left: 50%; transform-origin: left center; } .clock-hand-hour { width: 30px; height: 4px; margin-top: -2px; background: #FFF; animation: hourHandMove 12s infinite linear; } .clock-hand-minute { width: 40px; height: 2px; margin-top: -1px; background: #FFF; animation: minuteHandMove 6s infinite linear; } /* 每个时钟不同的初始角度 */ .clock-1 .clock-hand-hour { transform: rotate(-30deg); } .clock-1 .clock-hand-minute { transform: rotate(-180deg); } .clock-2 .clock-hand-hour { transform: rotate(-60deg); } .clock-2 .clock-hand-minute { transform: rotate(-90deg); } .clock-3 .clock-hand-hour { transform: rotate(-120deg); } .clock-3 .clock-hand-minute { transform: rotate(-270deg); } .clock-4 .clock-hand-hour { transform: rotate(-150deg); } .clock-4 .clock-hand-minute { transform: rotate(-45deg); } .clock-5 .clock-hand-hour { transform: rotate(-210deg); } .clock-5 .clock-hand-minute { transform: rotate(-135deg); } .clock-6 .clock-hand-hour { transform: rotate(-240deg); } .clock-6 .clock-hand-minute { transform: rotate(-315deg); } .clock-7 .clock-hand-hour { transform: rotate(-270deg); } .clock-7 .clock-hand-minute { transform: rotate(-225deg); } .clock-8 .clock-hand-hour { transform: rotate(-300deg); } .clock-8 .clock-hand-minute { transform: rotate(-360deg); } .clock-9 .clock-hand-hour { transform: rotate(-330deg); } .clock-9 .clock-hand-minute { transform: rotate(-160deg); } .clock-10 .clock-hand-hour { transform: rotate(-360deg); } .clock-10 .clock-hand-minute { transform: rotate(-200deg); } @keyframes hourHandMove { from { transform: rotate(var(--hour-start, -90deg)); } to { transform: rotate(calc(var(--hour-start, -90deg) + 360deg)); } } @keyframes minuteHandMove { from { transform: rotate(var(--minute-start, -90deg)); } to { transform: rotate(calc(var(--minute-start, -90deg) + 360deg)); } }