js实现时空穿梭效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
html,
body {
width: 100%;
height: 100%;
overflow: hidden;
}
#myCanvas {
background-color: #000;
}
</style>
</head>
<body>
<canvas id="myCanvas"></canvas>
<script>
var myCanvas = document.getElementById('myCanvas');
var ctx = myCanvas.getContext("2d");
var starlist = [];
function init() {
myCanvas.width = window.innerWidth;
myCanvas.height = window.innerHeight;
};
init();
window.onresize = init;
var list = [];
function Star(x, y, radius, disX, disY) {
this.x = x;
this.y = y;
this.radius = radius;
this.disX = disX;
this.disY = disY;
}
for (var i = 0; i < 800; i++) {
var x = Math.random() * myCanvas.width;
var y = Math.random() * myCanvas.height;
var radius = Math.random() * 2;
var disX = x - myCanvas.width / 2;
var disY = y - myCanvas.height / 2;
list.push(new Star(x, y, radius, disX, disY));
}
function animate() {
ctx.clearRect(0, 0, myCanvas.width, myCanvas.height);
for (var i = 0; i < 800; i++) {
var a = list[i];
a.x += a.disX / 50;
a.y += a.disY / 50;
if (a.x < 0 || a.y < 0 || a.x > myCanvas.width || a.y > myCanvas.height) {
a.x = Math.random() * myCanvas.width;
a.y = Math.random() * myCanvas.height;
a.disX = a.x - myCanvas.width / 2;
a.disY = a.y - myCanvas.height / 2;
}
ctx.beginPath();
ctx.fillStyle = "#B200FF";
ctx.arc(a.x, a.y, a.radius, 0, Math.PI * 2, false);
ctx.fill();
}
setTimeout(animate, 40);
}
animate();
</script>
</body>
</html>