返回

手把手教你用 CSS 实现日月交替

前端

前言

在《一天的深思熟虑》之后,我们怀着满腔热情,将目光投向了浩瀚星空,决心用纯 CSS 代码再现太阳的光辉。这个看似简单的任务却蕴含着无数的挑战,但我们没有退缩。

准备工作

在踏上这段 CSS 之旅之前,我们必须准备好以下必需品:

  • 任何现代网络浏览器(推荐使用 Chrome 或 Firefox)
  • 一个文本编辑器或代码编辑器(例如 Visual Studio Code 或 Sublime Text)

创建画布

我们的第一个任务是创建一个空白画布来容纳我们的日月交替。在你的代码编辑器中,创建一个新的 HTML 文件并输入以下代码:

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

绘制月亮

为了绘制月亮,我们将使用 CSS 的 box-shadow 属性。此属性允许我们在元素周围创建逼真的阴影效果,这非常适合模拟月亮的柔和光线。

<body> 标签内添加以下代码:

#moon {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background-color: #fff;
  box-shadow: 0 0 20px #888;
}

这将创建一个 100px x 100px 的圆形白色元素,其周围环绕着灰色阴影。这是我们月亮的基本形状。

旋转月亮

现在,我们想让月亮围绕太阳旋转。我们可以使用 CSS 的 transform 属性来实现这一效果。

#moon {
  animation: rotate 10s linear infinite;
}

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

这将使月亮以 10 秒为周期围绕其中心旋转 360 度。

绘制太阳

接下来,让我们添加太阳。太阳将使用 linear-gradient 属性,该属性允许我们在元素中创建平滑的色彩过渡。

<body> 标签内添加以下代码:

#sun {
  width: 200px;
  height: 200px;
  border-radius: 50%;
  background: linear-gradient(#ffc000, #ff8000);
}

这将创建一个 200px x 200px 的圆形黄色元素,它从中心向边缘逐渐变为橙色。

移动太阳

为了营造日出和日落的效果,我们需要让太阳从地平线升起和落下。我们可以使用 CSS 的 translateY 属性来实现这一效果。

#sun {
  animation: move 10s linear infinite alternate;
}

@keyframes move {
  from {
    transform: translateY(200px);
  }
  to {
    transform: translateY(0px);
  }
}

这将使太阳以 10 秒为周期从屏幕底部移动到屏幕顶部,然后又移动回屏幕底部。

添加阴影

为了增加真实感,让我们在月亮和太阳周围添加阴影。

#moon {
  box-shadow: 0 0 20px #888, 0 0 50px #555;
}

#sun {
  box-shadow: 0 0 20px #ff8000, 0 0 50px #ff0000;
}

这将为月亮和太阳添加两层阴影,使它们看起来更具立体感和真实感。

叠加元素

现在,我们需要将月亮和太阳叠加在一起,以便月亮可以在太阳前移动。

#moon {
  position: absolute;
  top: 50px;
  left: 100px;
  z-index: 2;
}

#sun {
  position: absolute;
  top: 100px;
  left: 100px;
  z-index: 1;
}

这将使月亮定位在太阳之上,并出现在其前面。

完成

现在,所有部件已经到位,我们可以看到日月交替的壮观效果了。你的 HTML 文件现在应该如下所示:

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

      #moon {
        width: 100px;
        height: 100px;
        border-radius: 50%;
        background-color: #fff;
        box-shadow: 0 0 20px #888, 0 0 50px #555;
        animation: rotate 10s linear infinite;
      }

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

      #sun {
        width: 200px;
        height: 200px;
        border-radius: 50%;
        background: linear-gradient(#ffc000, #ff8000);
        box-shadow: 0 0 20px #ff8000, 0 0 50px #ff0000;
        animation: move 10s linear infinite alternate;
        position: absolute;
        top: 100px;
        left: 100px;
        z-index: 1;
      }

      @keyframes move {
        from {
          transform: translateY(200px);
        }
        to {
          transform: translateY(0px);
        }
      }

      #moon {
        position: absolute;
        top: 50px;
        left: 100px;
        z-index: 2;
      }
    </style>
  </head>
  <body>
  </body>
</html>

总结

恭喜你!你已经成功地使用纯 CSS 代码实现了令人惊叹的日月交替效果。这个项目不仅展示了 CSS 的强大功能,还证明了你可以用一点创造力创造出令人惊叹的视觉体验。

享受你的日月交替,继续探索 CSS 的无限可能。