欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

鼠标吸附彩色气泡

程序员文章站 2022-07-05 20:39:45
...

H5Cavas制作鼠标吸附彩色气泡。当鼠标在屏幕上移动的时候,鼠标划过的区域会出现许多彩色气泡,并且会自动消失。

效果演示
鼠标吸附彩色气泡
看了如此效果是不是心动的感觉呢???

代码展示

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>鼠标吸附彩色气泡</title>

		<style>
			* {
				margin: 0;
				padding: 0;
			}

			body {
				overflow: hidden;
			}

			#part {
				background-color: black;
			}
		</style>

	</head>
	<body>

		<canvas id="part"></canvas>

	</body>

	<script>
		var canvas = document.querySelector('#part');
		var ctx = canvas.getContext("2d");
		var starlist = [];

		function init() {
			canvas.width = window.innerWidth;
			canvas.height = window.innerHeight;
		}
		init();
		window.onresize = init;

		canvas.addEventListener('mousemove', function(e) {
			starlist.push(new Star(e.offsetX, e.offsetY));
			console.log(starlist)
		})

		function random(min, max) {
			return Math.floor((max - min) * Math.random() + min);
		}

		function Star(x, y) {
			this.x = x;
			this.y = y;
			this.vx = (Math.random() - 0.5) * 2;
			this.vy = (Math.random() - 0.5) * 2;
			this.color = 'rgb(' + random(0, 256) + ',' + random(0, 256) + ',' + random(0, 256) + ')';
			this.a = 1;
			console.log(this.color);
			this.draw();
		}
		Star.prototype = {
			draw: function() {
				ctx.beginPath();
				ctx.fillStyle = this.color;
				ctx.globalCompositeOperation = 'lighter'
				ctx.globalAlpha = this.a;
				ctx.arc(this.x, this.y, 30, 0, Math.PI * 2, false);
				ctx.fill();
				this.updata();
			},
			updata() {
				this.x += this.vx;
				this.y += this.vy;
				this.a *= 0.98;
			}
		}
		console.log(new Star(100, 150));

		function render() {
			ctx.clearRect(0, 0, canvas.width, canvas.height)

			starlist.forEach((item, i) => {
				item.draw();
				if (item.a < 0.05) {
					starlist.splice(i, 1);
				}
			})

			requestAnimationFrame(render);
		}
		render();
	</script>

</html>

此效果能否激起你内心对Cavas的热爱呢???

了解更多关注我哟!!!

相关标签: JavaScript H5