使用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 相关文章推荐
javascript中动态加载js文件多种解决办法总结
Nov 15 Javascript
浅析Node.js中的内存泄漏问题
Jun 23 Javascript
js基于cookie方式记住返回页面用法示例
May 27 Javascript
常用Javascript函数与原型功能收藏(必看篇)
Oct 09 Javascript
Vue.js中数组变动的检测详解
Oct 12 Javascript
Bootstrap导航条学习使用(一)
Feb 08 Javascript
JS模拟实现ECMAScript5新增的数组方法
Mar 20 Javascript
全面解析Node.js 8 重要功能和修复
Jun 02 Javascript
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
angular第三方包开发整理(小结)
Apr 19 Javascript
javascript实现多边形碰撞检测
Oct 24 Javascript
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
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
使用eAccelerator加密PHP程序
2008/10/03 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
jquery.ui.draggable中文文档
2009/11/24 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
js获取form的方法
2015/05/06 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
python 快速排序代码
2009/11/23 Python
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
使用python绘制二维图形示例
2019/11/22 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
Django celery异步任务实现代码示例
2020/11/26 Python
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
求职简历的自我评价
2014/01/31 职场文书
司机职责范本
2014/03/08 职场文书
《春雨》教学反思
2014/04/24 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
员工教育培训协议书
2014/09/27 职场文书
介绍信的写法
2015/01/31 职场文书
网络妈妈观后感
2015/06/08 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
php将xml转化对象的实例详解
2021/11/17 PHP