使用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代码
Aug 13 Javascript
JavaScript 节点操作 以及DOMDocument属性和方法
Dec 06 Javascript
jquery 图片上传按比例预览插件集合
May 28 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
May 25 Javascript
浅谈setTimeout 与 setInterval
Jun 23 Javascript
使用jquery动态加载Js文件和Css文件
Oct 24 Javascript
jQuery简单倒计时效果完整示例
Sep 20 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 Javascript
echarts饼图扇区添加点击事件的实例
Oct 16 Javascript
利用vue.js实现被选中状态的改变方法
Feb 08 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
Jun 24 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
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
JQuery下拉框应用示例介绍
2014/04/23 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
详解Django通用视图中的函数包装
2015/07/21 Python
Python3 replace()函数使用方法
2018/03/19 Python
python斐波那契数列的计算方法
2018/09/27 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
HTML5未来发展趋势
2016/02/01 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
软件测试英文面试题
2012/10/14 面试题
口头翻译求职人自荐信
2013/12/07 职场文书
自我评价范文
2013/12/22 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
培训讲师开场白
2015/06/01 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书