JavaScript canvas实现跟随鼠标事件


Posted in Javascript onFebruary 10, 2020

本文实例为大家分享了用canvas实现跟随鼠标事件的具体代码,供大家参考,具体内容如下

//鼠标移动 展现光片

JavaScript canvas实现跟随鼠标事件

<!DOCTYPE html>
<html>

<head>
 <meta charset="UTF-8">
 <title></title>
 <style>
 body {
 margin: 0;
 overflow: hidden;
 }

 #canvas {
 background: #000;
 }
 </style>
</head>

<body>
 <canvas id="canvas"></canvas>
 <script>
 var canvas = document.getElementById('canvas');
 var context = canvas.getContext('2d');
 var circleList = [];

 canvas.width = window.innerWidth;
 canvas.height = window.innerHeight;

 canvas.addEventListener('mousemove', function (e) {
 // 将对象push到数组中,画出来的彩色小点可以看作每一个对象中记录着信息 然后存在数组中
 circleList.push(new Circle(e.clientX, e.clientY));
 })

 //取x到y之间随机数:Math.round(Math.random()*(y-x)+x) 包括y
 function random(min, max) {
 return Math.round(Math.random() * (max - min) + min);
 }

 function Circle(x, y) {
 this.x = x;
 this.y = y;

 this.vx = (Math.random() - 0.5) * 3; //随机出来一个正数,或者负数。乘3是为了让速度变得大一点
 this.vy = (Math.random() - 0.5) * 3;

 this.color = 'rgb(' + random(0, 255) + ',' + random(0, 255) + ',' + random(0, 255) + ')';

 this.a = 1; // 初始透明度

 this.draw();
 }
 Circle.prototype = {
 draw() {
 context.beginPath();
 context.fillStyle = this.color;
 context.globalCompositeOperation = 'lighter';
 context.globalAlpha = this.a; //全局透明度
 context.arc(this.x, this.y, 30, 0, Math.PI * 2, false);
 context.fill();
 this.update();
 },
 update() {
 // 根据速度更新每一个小圆的位置
 this.x += this.vx;
 this.y += this.vy;
 this.a *= 0.98;
 }
 }

 function render() {
 //把原来的内容区域清除掉
 context.clearRect(0, 0, canvas.width, canvas.height);
 circleList.forEach(function (ele, i) {
 ele.draw();

 if (ele.a < 0.05) {
  circleList.splice(i, 1);
 }
 });

 requestAnimationFrame(render); //动画,会根据浏览器的刷新频率更新动画
 }
 render();
 </script>
</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript使用cookie
Feb 02 Javascript
非常不错的功能强大代码简单的管理菜单美化版
Jul 09 Javascript
jQuery AJAX回调函数this指向问题
Feb 08 Javascript
js中将具有数字属性名的对象转换为数组
Mar 06 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
Jun 09 Javascript
AngularJS数据源的多种获取方式汇总
Feb 02 Javascript
layer弹出层中H5播放器全屏出错的解决方法
Feb 21 Javascript
Js实现中国公民身份证号码有效性验证实例代码
May 03 Javascript
Angular模板表单校验方法详解
Aug 11 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
Aug 27 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 Javascript
在Vue里如何把网页的数据导出到Excel的方法
Sep 30 Javascript
JavaScript实现简易聊天对话框(加滚动条)
Feb 10 #Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 #Javascript
node.js中 redis 的安装和基本操作示例
Feb 10 #Javascript
js实现登录拖拽窗口
Feb 10 #Javascript
javascript 原型与原型链的理解及应用实例分析
Feb 10 #Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
Feb 10 #Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 #Javascript
You might like
搜索引擎技术核心揭密
2006/10/09 PHP
PHP 函数学习简单小结
2010/07/08 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
Node.js的特点详解
2017/02/03 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
施工安全协议书
2013/12/11 职场文书
优秀士兵个人事迹材料
2014/01/19 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript
python lambda 表达式形式分析
2022/04/03 Python