最近面试遇到这样的问题,要求使用css3动画实现星球运动。
实现思路:
- 通过圆角实现轨迹和星球;
- 通过缩放将圆形轨迹缩放呈椭圆;
- 定义星球x轴和y轴的运动;
| 12
 3
 4
 5
 6
 7
 
 | 
 <div class="track"></div>
 
 <span class="arc">
 <i></i>
 </span>
 
 | 
| 12
 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;
 }
 
 |