返回

星空奇旅:用HTML5和CSS动画打造流星划过

前端

用 HTML5 和 CSS 动画打造星际盛宴

准备好探索宇宙的奥秘了吗?让我们踏上用 HTML5 和 CSS 动画打造星际盛宴的奇妙旅程吧!

绘制璀璨星空

借助 HTML5 的 canvas 元素,你可以成为星际艺术家,绘制一幅浩瀚的星空。JavaScript 的神奇力量将助你描绘出闪烁的星光。

<canvas id="stars"></canvas>
#stars {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.star {
  position: absolute;
  top: random(0, 100)%;
  left: random(0, 100)%;
  width: 1px;
  height: 1px;
  background-color: white;
  animation: twinkle 1s infinite alternate;
}

@keyframes twinkle {
  0% {
    opacity: 1;
  }

  50% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}
var canvas = document.getElementById("stars");
var ctx = canvas.getContext("2d");

var numStars = 100;

for (var i = 0; i < numStars; i++) {
  var x = Math.random() * canvas.width;
  var y = Math.random() * canvas.height;

  ctx.fillStyle = "white";
  ctx.fillRect(x, y, 1, 1);
}

流星划过夜空

现在,让我们为你的星空增添一些动感。用 CSS 动画创建一个流星,让它划破夜空,留下炫目的轨迹。

<div class="meteor"></div>
.meteor {
  position: absolute;
  top: -100px;
  left: random(0, 100)%;
  width: 10px;
  height: 10px;
  background-color: white;
  animation: meteor 1s linear infinite;
}

@keyframes meteor {
  0% {
    top: -100px;
    opacity: 1;
  }

  50% {
    top: 100%;
    opacity: 1;
  }

  100% {
    top: 100%;
    opacity: 0;
  }
}
var meteor = document.querySelector(".meteor");

setInterval(function() {
  meteor.style.left = random(0, 100) + "%";
  meteor.style.animationPlayState = "running";

  setTimeout(function() {
    meteor.style.animationPlayState = "paused";
  }, 1000);
}, 3000);

结语

我们已经踏上了用 HTML5 和 CSS 动画打造星际盛宴的精彩旅程。现在,你已掌握了创造浩瀚星空和流星划过的技能,让你的网页充满宇宙的奇观。

常见问题解答

1. 如何调整流星的速度?
答:在 meteor 的 CSS 动画中,修改 animation-duration 属性即可调整流星的速度。较小的值代表较快的速度。

2. 可以使用哪些颜色创建流星?
答:流星可以采用多种颜色。在 meteor CSS 类中,修改 background-color 属性即可自定义流星的颜色。

3. 如何创建多颗流星?
答:要创建多颗流星,只需重复创建流星元素并为它们添加不同的起始位置和动画延迟即可。

4. 如何让流星在不同的轨迹上移动?
答:修改 left 动画属性的取值可以控制流星的轨迹。例如,使用 random(0, 50)%random(50, 100)% 可以创建在屏幕不同区域出现的流星。

5. 是否可以向流星添加音效?
答:当然可以。使用 audio 元素,你可以为流星添加划过天空时的音效,增强身临其境的体验。