canvas简约全屏悬浮星空背景动画特效
时间: 2023-08-03 19:12:20 浏览: 194
以下是使用 Canvas 制作简约全屏悬浮星空背景动画特效的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>Canvas 简约全屏悬浮星空背景动画特效</title>
<style type="text/css">
body {
margin: 0;
padding: 0;
overflow: hidden;
}
canvas {
display: block;
position: fixed;
top: 0;
left: 0;
z-index: -1;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script type="text/javascript">
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var width = window.innerWidth;
var height = window.innerHeight;
canvas.width = width;
canvas.height = height;
var starCount = 150;
var stars = [];
function Star() {
this.x = Math.random() * width;
this.y = Math.random() * height;
this.size = Math.random() * 2 + 1;
this.speed = Math.random() * 0.5;
this.opacity = Math.random();
this.draw = function() {
ctx.globalAlpha = this.opacity;
ctx.fillStyle = '#FFFFFF';
ctx.beginPath();
ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
ctx.closePath();
ctx.fill();
}
this.update = function() {
this.y -= this.speed;
if (this.y < -this.size) {
this.y = height + this.size;
this.x = Math.random() * width;
this.opacity = Math.random();
}
}
}
function init() {
for (var i = 0; i < starCount; i++) {
stars.push(new Star());
}
}
function animate() {
ctx.clearRect(0, 0, width, height);
for (var i = 0; i < stars.length; i++) {
stars[i].draw();
stars[i].update();
}
requestAnimationFrame(animate);
}
init();
animate();
</script>
</body>
</html>
```
解释:
- `canvas` 元素的样式设置为全屏悬浮,并且设置了 `z-index: -1`,使其在页面上处于最底层,不遮挡其他元素。
- `Star` 类表示一个星星,包含 `x`、`y`、`size`、`speed` 和 `opacity` 属性,分别表示横坐标、纵坐标、大小、移动速度和透明度,以及 `draw` 和 `update` 方法,分别用于绘制和更新星星的状态。
- `init` 函数初始化了 `stars` 数组,将 `Star` 对象添加到数组中。
- `animate` 函数每一帧清空画布、绘制所有星星、更新所有星星的状态,并且使用 `requestAnimationFrame` 函数递归调用自身,实现动画效果。
你可以根据需要自行修改代码,例如调整星星数量、颜色等。
阅读全文