173 lines
5.1 KiB
CSS
173 lines
5.1 KiB
CSS
.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)); }
|
|
} |