返回

用CSS实现日地月的公转——用编程语言模拟宇宙运转!

前端

很多人都认为用CSS只能做一些简单的页面美化,其实并不是,有许多大神利用CSS强大的排版和布局功能制作出了各种各样复杂又美观的效果,比如说,这篇博文主要讲的,如何利用CSS来模拟日地月的公转。

下面先放个小demo,如果大家感兴趣的话,可以继续往下看哦~

效果图

[图片]

代码实现

<!DOCTYPE html>
<html>
<head>
  
  <style>
    body {
      background-color: #000;
    }

    .sun {
      width: 100px;
      height: 100px;
      border-radius: 50%;
      background-color: #ffc000;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      animation: sun-spin 10s linear infinite;
    }

    .earth {
      width: 50px;
      height: 50px;
      border-radius: 50%;
      background-color: #007fff;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%) rotate(45deg);
      animation: earth-spin 20s linear infinite;
    }

    .moon {
      width: 25px;
      height: 25px;
      border-radius: 50%;
      background-color: #808080;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%) rotate(90deg);
      animation: moon-spin 30s linear infinite;
    }

    @keyframes sun-spin {
      from {
        transform: translate(-50%, -50%) rotate(0deg);
      }
      to {
        transform: translate(-50%, -50%) rotate(360deg);
      }
    }

    @keyframes earth-spin {
      from {
        transform: translate(-50%, -50%) rotate(0deg);
      }
      to {
        transform: translate(-50%, -50%) rotate(360deg);
      }
    }

    @keyframes moon-spin {
      from {
        transform: translate(-50%, -50%) rotate(0deg);
      }
      to {
        transform: translate(-50%, -50%) rotate(360deg);
      }
    }
  </style>
</head>
<body>
  <div class="sun"></div>
  <div class="earth"></div>
  <div class="moon"></div>
</body>
</html>

原理解析

这个demo的原理其实很简单,就是利用CSS的动画属性来模拟日地月公转。

  • 太阳:太阳是整个模拟系统的中心,它围绕自己的轴心旋转。
  • 地球:地球围绕太阳公转,同时也在围绕自己的轴心旋转。
  • 月球:月球围绕地球公转,同时也在围绕自己的轴心旋转。

为了让模拟更加真实,我们还使用了CSS的transform属性来模拟地球和月球的倾斜角。

结语

这个demo只是用CSS模拟日地月公转的一个简单例子,我们可以根据自己的需要来对它进行修改和完善。比如,我们可以添加更多的行星和卫星,或者我们可以让模拟更加精确。总之,CSS的可能性是无限的,我们可以用它来做很多有趣的事情。