简单js彩色动态星空特效
时间: 2023-10-05 09:08:30 浏览: 151
炫美星空射线【HTML+JS+CSS】(追光者♂).zip
以下是一个简单的 JavaScript 彩色动态星空特效:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>彩色动态星空特效</title>
<style>
body {
margin: 0;
padding: 0;
}
canvas {
display: block;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
// 设置画布尺寸
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// 随机生成星星的位置、颜色和大小
var stars = [];
for (var i = 0; i < 100; i++) {
var x = Math.random() * canvas.width;
var y = Math.random() * canvas.height;
var radius = Math.random() * 3 + 1;
var color = 'rgb(' + Math.floor(Math.random() * 255) + ',' +
Math.floor(Math.random() * 255) + ',' +
Math.floor(Math.random() * 255) + ')';
stars.push({
x: x,
y: y,
radius: radius,
color: color
});
}
function draw() {
// 清空画布
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 绘制星星
for (var i = 0; i < stars.length; i++) {
var star = stars[i];
ctx.beginPath();
ctx.arc(star.x, star.y, star.radius, 0, Math.PI * 2, false);
ctx.fillStyle = star.color;
ctx.fill();
}
// 让星星动起来
for (var i = 0; i < stars.length; i++) {
var star = stars[i];
star.x += Math.random() * 2 - 1;
star.y += Math.random() * 2 - 1;
if (star.x < 0) {
star.x = canvas.width;
}
if (star.x > canvas.width) {
star.x = 0;
}
if (star.y < 0) {
star.y = canvas.height;
}
if (star.y > canvas.height) {
star.y = 0;
}
}
// 每秒钟重绘一次画布
setTimeout(draw, 1000 / 60);
}
draw();
</script>
</body>
</html>
```
代码解释:
1. 首先创建一个 canvas 元素,并设置它的尺寸为窗口大小。
2. 随机生成一些星星的位置、颜色和大小,并存储在一个数组中。
3. 编写一个绘制函数,用于清空画布、绘制星星和让星星动起来。
4. 在绘制函数中将画布清空,然后循环遍历星星数组,绘制每个星星。
5. 在绘制函数中也循环遍历星星数组,让每个星星的位置随机变化,并且如果越界了就移动回屏幕内。
6. 最后在绘制函数中使用 setTimeout() 方法每秒钟重绘一次画布,从而达到动态效果。
你可以将以上代码复制到一个 HTML 文件中并在浏览器中打开,就可以看到彩色动态星空特效了。
阅读全文