使用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 对象比较实现代码
Apr 27 Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
jquery ajaxSubmit 异步提交的简单实现
Feb 28 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
原创jQuery弹出层插件分享
Apr 02 Javascript
JS与jQuery遍历Table所有单元格内容的方法
Dec 07 Javascript
全面了解构造函数继承关键apply call
Jul 26 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
Mar 25 Javascript
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
AngularJS实现自定义指令及指令配置项的方法
Nov 20 Javascript
JS处理一些简单计算题
Feb 24 Javascript
vue项目持久化存储数据的实现代码
Oct 01 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制作文本式留言板
2015/03/18 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python实现PS图像调整黑白效果示例
2018/01/25 Python
如何用python整理附件
2018/05/13 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
深入解析神经网络从原理到实现
2019/07/26 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
认购协议书范本
2014/04/22 职场文书
运动会演讲稿
2014/05/07 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL