css地球公转

161 阅读2分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!

详细说明

从前有一家伙,坐在苹果树下,被一颗苹果砸到,从此地球引力就被发现了。不仅地球有引力,太阳也有引力,太阳周围的星球都有受到太阳的引力,围着太阳旋转。这次就来用css实现个简单的地球围着太阳旋转的效果。
首先,准备好结构,这个的HTML结构很少,一个大一点的圆圈包裹住太阳和地球,边线可作为地球的运行轨迹,一个太阳和一个地球。
上结构代码:

<div id="universe">
  <div class="big-circle">
    <div class="sun"></div>
    <div class="earth"></div>
</div>

结构准备好之后,就可以开始整样式了。轨迹、太阳、地球都是球形状,border-radius: 50%; 一行代码变圆。太阳居中在容器的正中央,可以采用定位结合transform;地球就将它放到轨迹的边缘线上,也是采用定位结合transform的方式。

* {
  margin: 0;
  padding: 0;
}

#universe {
  height: 100%;
  width: 100%;
  position: absolute;
  background-color: black;
  overflow: hidden;
  
}
.big-circle {
  height: 500px;
  width: 500px;
  position: absolute;
  left: 10%;
  top: 10%;
  transform: translateX(-50%);
  border: 1px solid #ccc;
  border-radius: 50%;
}
.sun {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #fffbde;
  box-shadow: 0px 0px 20px #fffbde;
}

.earth {
  width: 20px;
  height: 20px;
  background-color: skyblue;
  border-radius: 50%;
  position: absolute;
  left: 50%;
  transform: translateY(-50%);
}

到了这一步,整体的样式就已经写好了,只不过都是静态的。现在就让地球动起来。这里可以使用css3的动画keyframes。这里我们需要让容器旋转起来,这样看起来就只是地球在围着太阳转

.big-circle {
    animation: earth 20s linear infinite;
}

在补充上动画,

@keyframes earth
{
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

这样地球就能围着太阳转了

码上掘金代码展示