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

发布时间 - 2026-01-11 03:16:35    点击率:

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

效果如下

<!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实现气泡跟随鼠标移动的动画效果 ,希望对大家有所帮助!


# js  # 实现气泡效果  # javascript实现图片跟随鼠标移动效果的方法  # js实现文字跟随鼠标移动而移动的方法  # js图片跟随鼠标移动代码  # javascript DIV实现跟随鼠标移动  # 基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层  # js实现图片跟随鼠标移动效果  # javascript跟随鼠标x  # y坐标移动的字效果  # js实现跟随鼠标移动的小球  # js实现图片放大并跟随鼠标移动特效  # javascript实现跟随鼠标移动的图片  # 鼠标  # 并在  # 带来了  # 给大家  # 所述  # 小编  # context  # createElement  # document  # getContext  # screen  # window  # windowW  # overflow  # px  # margin  # hidden  # canvas  # var  # script 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: C++时间戳转换成日期时间的步骤和示例代码  如何在阿里云高效完成企业建站全流程?  Python进程池调度策略_任务分发说明【指导】  南京网站制作费用,南京远驱官方网站?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Laravel如何记录自定义日志?(Log频道配置)  如何在Windows环境下新建FTP站点并设置权限?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel如何使用Vite进行前端资源打包?(配置示例)  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  Laravel如何使用.env文件管理环境变量?(最佳实践)  装修招标网站设计制作流程,装修招标流程?  高防服务器租用首荐平台,企业级优惠套餐快速部署  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  如何在阿里云通过域名搭建网站?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  如何在万网开始建站?分步指南解析  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  打造顶配客厅影院,这份100寸电视推荐名单请查收  如何用AI帮你把自己的生活经历写成一个有趣的故事?  Laravel怎么实现模型属性的自动加密  网站制作软件免费下载安装,有哪些免费下载的软件网站?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Swift开发中switch语句值绑定模式  Laravel如何集成Inertia.js与Vue/React?(安装配置)  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  java ZXing生成二维码及条码实例分享  如何在云主机快速搭建网站站点?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  MySQL查询结果复制到新表的方法(更新、插入)  Laravel API资源类怎么用_Laravel API Resource数据转换  使用Dockerfile构建java web环境  javascript基于原型链的继承及call和apply函数用法分析  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  如何续费美橙建站之星域名及服务?  Laravel怎么为数据库表字段添加索引以优化查询  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  晋江文学城电脑版官网 晋江文学城网页版直接进入  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  网站优化排名时,需要考虑哪些问题呢?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  香港服务器租用费用高吗?如何避免常见误区?  Laravel如何实现多对多模型关联?(Eloquent教程)  利用JavaScript实现拖拽改变元素大小  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  北京企业网站设计制作公司,北京铁路集团官方网站?  如何在建站宝盒中设置产品搜索功能?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】 

上一篇:oracle监听安装

下一篇:oracle表如何分区

上一篇:oracle监听安装

下一篇:oracle表如何分区