使用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表如何分区

