最近面试遇到这样的问题,要求使用css3动画实现星球运动。
实现思路:
- 通过圆角实现轨迹和星球;
- 通过缩放将圆形轨迹缩放呈椭圆;
- 定义星球x轴和y轴的运动;
1 2 3 4 5 6 7
|
<div class="track"></div>
<span class="arc"> <i></i> </span>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| html, body { background: #000; font-size: 62.5%; }
@keyframes arc-x {
0%, 100% { transform: translateX(0rem); } 50% { transform: translateX(-30rem); } }
@keyframes arc-y {
0%, 100% { transform: translateY(0rem); } 50% { transform: translateY(30rem); } }
.track { position: absolute; width: 30rem; height: 30rem; border: .1rem solid #fafafa; border-radius: 30rem; top: 20%; left: 50%; margin-left: -15rem; }
.arc { position: absolute; width: 2rem; height: 2rem; margin-left: 14rem; margin-top: -1rem; top: 20%; left: 50%; z-index: 2; animation: arc-x 10s 0s ease-in-out infinite; }
.arc i { display: inline-block; width: inherit; height: inherit; border-radius: 2rem; background: #fe0000; animation: arc-y 10s 2.5s ease-in-out infinite; }
|