使用JS实现气泡跟随鼠标移动的动画效果


Posted in Javascript onSeptember 16, 2017

气泡跟随鼠标移动,并在每次点击时产生不同的变化

效果如下

使用JS实现气泡跟随鼠标移动的动画效果

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>
简单的气泡效果
</title>
 <style type="text/css">
 body{background-color:#000000;margin:0px;overflow:hidden}
 </style>
 </head>
 <body>
 </body>
</html>
<script>
 var canvas = document.createElement('canvas'),
 context = canvas.getContext('2d'),
 windowW = window.screen.width ,
 windowH = window.screen.height ,
 Mx,
 My,
 paused = true;
 suzu = [];
 booms = [];
 boomks = [];
 start();
 canvas.onmousemove = function(e) {
 var loc = canvasMove(e.clientX, e.clientY);
 Mx = loc.x;
 My = loc.y
 };
 canvas.onmousedown = function() {
 creatarry(Mx, My);
 paused = !paused
 };
 function creatarry(a, b) {
 for (var i = 0; i < 40; ++i) {
 booms[i] = {
 x: a,
 y: b,
 gravity: 0.3,
 speedX: Math.random() * 20 - 10,
 speedY: Math.random() * 15 - 7,
 radius: Math.random() * 15,
 color: Math.random() * 360,
 apc: 0.6
 };
 boomks.push(booms[i]);
 if (boomks.length > 300) {
 boomks.shift()
 };
 console.log(boomks)
 }
 };
 function loop1() {
 boomks.forEach(function(circle) {
 context.beginPath();
 context.arc(circle.x, circle.y, circle.radius, 0, Math.PI * 2, false);
 context.fillStyle = 'hsla(' + circle.color + ',100%,60%,' + circle.apc + ')';
 context.fill();
 movecircles(circle)
 })
 }
 function movecircles(circle) {
 circle.x += circle.speedX;
 circle.speedY += circle.gravity;
 circle.y += circle.speedY;
 circle.apc -= 0.008
 }
 function canvasMove(x, y) {
 var bbox = canvas.getBoundingClientRect();
 return {
 x: x - bbox.left * (canvas.width / bbox.width),
 y: y - bbox.top * (canvas.height / bbox.height)
 }
 };
 function start() {
 document.body.appendChild(canvas);
 canvas.width = windowW;
 canvas.height = windowH;
 setInterval(fang, 25)
 }
 function fang() {
 context.clearRect(0, 0, canvas.width, canvas.height);
 loop1();
 loop()
 }
 function loop() {
 var circle = new createCircle(Mx, My);
 suzu.push(circle);
 for (i = 0; i < suzu.length; i++) {
 var ss = suzu[i];
 ss.render(context);
 ss.update()
 }
 if (suzu.length > 1000) {
 suzu.shift()
 }
 }
 function createCircle(x, y) {
 this.x = x;
 this.y = y;
 this.color = Math.random() * 360;
 this.radius = Math.random() * 25;
 this.xVel = Math.random() * 5 - 2;
 this.apc = 0.6;
 this.gravity = 0.07;
 this.yVel = Math.random() * 10 - 3;
 this.render = function(c) {
 c.beginPath();
 c.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true);
 c.fillStyle = 'hsla(' + this.color + ',100%,60%,' + this.apc + ')';
 c.fill()
 };
 this.update = function() {
 if (!paused) {
 this.yVel += this.gravity;
 this.y += this.yVel
 } else {
 this.y -= 5
 }
 this.x += this.xVel;
 this.apc -= 0.01;
 if (this.radius > 1) {
 this.radius -= 0.4
 }
 } }
 </script>

总结

以上所述是小编给大家带来了使用JS实现气泡跟随鼠标移动的动画效果 ,希望对大家有所帮助!

Javascript 相关文章推荐
extJs 下拉框联动实现代码
Apr 09 Javascript
基于jQuery的为attr添加id title等效果的实现代码
Apr 20 Javascript
jQuery 设置 CSS 属性示例介绍
Jan 16 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
Jan 24 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
Mar 03 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
Feb 08 Javascript
简单的vue-resourse获取json并应用到模板示例
Feb 10 Javascript
JS实现unicode和UTF-8之间的互相转换互转
Jul 05 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
Apr 18 Javascript
layui弹出框Tab选项卡的示例代码
Sep 04 Javascript
vue.js实现简单的计算器功能
Feb 22 Javascript
详解TypeScript中的类型保护
Apr 29 Javascript
EasyUI创建人员树的实例代码
Sep 15 #Javascript
webpack构建react多页面应用详解
Sep 15 #Javascript
详解Vue中一种简易路由传参办法
Sep 15 #Javascript
JavaScript实现换肤功能
Sep 15 #Javascript
jQuery实现火车票买票城市选择切换功能
Sep 15 #jQuery
详解Vue.js Mixins 混入使用
Sep 15 #Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
Sep 15 #Javascript
You might like
php强制下载类型的实现代码
2011/04/21 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
培养自己的php编码规范
2015/09/28 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
js实现文字截断功能
2016/09/14 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
Python实现搜索算法的实例代码
2020/01/02 Python
企事业单位求职者的自我评价
2013/12/28 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
十八大演讲稿
2014/05/22 职场文书
个人授权委托书
2014/09/15 职场文书
夏洛特的网观后感
2015/06/15 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL