前端vue自定义鼠标指针的图标并且单击鼠标时点击的地方会出现烟花特效

news2024/11/16 23:39:59

//实现在某一个div内鼠标的指针形状呈自定义的图标  。(也可以全局定义,当前时在某一个div内的实例)
//DOM
<div class="firework-container" @click="createFirework"></div>

//js部分

const createFirework = (event) => {

  const numParticles = Math.floor(Math.random() * 5) + 8; // 随机生成圆圈个数

  const colors =['red', 'green', 'blue', 'yellow', '#ff0000', '#00ff00', '#0000ff', '#FF8888', '#FDD55', '  #BBFF66', '#77FFEE', '#9999FF', '#FF77FF']; // 圆圈可选颜色数组

  const fireworkContainer = document.querySelector('.firework-container');
  for (let i = 0; i < numParticles; i++) {

    const firework = document.createElement('div');

    firework.className = 'firework';

    firework.style.left = event.clientX + 'px';

    firework.style.top = event.clientY + 'px';

    firework.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)]; 

    fireworkContainer.appendChild(firework); // 添加到容器中

    //移动的角度随机

    const angle = Math.random() * Math.PI * 2; // 任意角度

    // 移动距离随机

    const distance = Math.random() * 200 + 50; // 随机移动距离50 ~250像素

    const offsetX = Math.cos(angle) * distance;

    const offsetY = Math.sin(angle) * distance;

   //添加css动画

    firework.style.animation = `move 1s linear forwards`;

    firework.style.setProperty('--offsetX', `${offsetX}px`);// 设置x的偏移量

    firework.style.setProperty('--offsetY', `${offsetY}px`); // 设置Y的偏移量

    //动画结束移除小圆圈

    setTimeout(() => {

      firework.remove();

    }, 1000);

  }

};

//CSS样式

<style>

.firework-container {

  cursor: url(/xxx/xxx/xxx.png), auto;   //自定义图标的路径

  position: relative;

  width: 100%;

  height: 100%;

}

.firework {

  position: absolute;

  width: 5px;

  height: 5px;

  border-radius: 50%;

}

@keyframes move {

  0% {

    opacity: 1;

    transform: translate(0);

  }

  100% {

    opacity: 0;

    /* Use custom CSS properties for final position */

    transform: translate(var(--offsetX), var(--offsetY));

  }

}

</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1868270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lodash.js 工具库

lodash 是什么? Lodash是一个流行的JavaScript实用工具库,提供了许多高效、高兼容性的工具函数,能够方便地处理集合、字符串、数值、函数等多种数据类型,大大提高工作效率。 lodash官网 文档参见:Lodash Documentation lodash 在Vue中怎么使用? 1、首先安装 lodash np…

Fizz Buzz 经典问题 - 蓝桥杯

基础知识要求&#xff1a; Java&#xff1a;方法、if else语句、算术运算符、逻辑运算符、Scanner类 Python&#xff1a; 方法、if else语句、算术运算符、逻辑运算符、input() 题目&#xff1a; 思路解析&#xff1a; 读取输入&#xff1a; 从标准输入或其他方式读取一个整数…

京津冀一体化十年辉煌|雄安宣武医院携手唯迈医疗大放异彩

京津冀一体化协同发展战略自提出以来&#xff0c;已走过辉煌的十年历程。在这十年间&#xff0c;三地共同推动区域经济发展&#xff0c;优化资源配置&#xff0c;不仅经济深度融合&#xff0c;更在医疗、教育、文化等多个领域实现了资源共享、优势互补&#xff0c;取得了举世瞩…

RabbitMQ的Fanout交换机

Fanout交换机 Fanout&#xff0c;英文翻译是扇出&#xff0c;我觉得在MQ中叫广播更合适。 在广播模式下&#xff0c;消息发送流程是这样的&#xff1a; 1&#xff09; 可以有多个队列2&#xff09; 每个队列都要绑定到Exchange&#xff08;交换机&#xff09;3&#xff09; …

vrrp与mstp

简单实验步骤

Redis缓存问题二、缓存雪崩

缓存雪崩 缓存雪崩&#xff1a;是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 缓存雪崩的解决方案&#xff1a; 给不同的Key的TTL添加随机值利用Redis集群提高服务的可用性给缓存业务添加降级限流策略…

易基因:围产期母体有毒物质暴露对子代血液、大脑和肝脏DNA甲基化的影响 | 研究速递

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 母体在环境化学物质中暴露可能对后代的健康造成不利影响。越来越多的证据支持这些不良效应至少部分受表观遗传修饰调控。目前尚不清楚血液中的表观遗传变化是否反映了大脑皮层或肝脏等目…

Java——Lambda表达式

1. 背景 Lambda表达式是JavaSE 8中一个重要的新特性。Lambda表达式允许你通过表达式来代替功能接口。 Lambda表达式就和方法一样&#xff0c;它提供了一个正常的参数列表和一个使用这些参数的主体(body&#xff0c;可以是一个表达式或一个代码块)。 Lambda 表达式&#xff08;…

有哪些好用的SD卡数据恢复软件?几款恢复效果还不错的!

对于广大的数码爱好者而言&#xff0c;由于当前数码设备存储空间的局限性&#xff0c;他们常常需要借助外部设备如SD卡来扩充容量。然而&#xff0c;随着日常频繁的数据读写操作&#xff0c;有时难免会遇到一些重要数据被误删的困扰。 面对这类情况&#xff0c;特别是当涉及到重…

【6.26更新】Win11 23H2 22631.3810镜像:免费下载!

微软已发布六月最新的可选更新补丁KB5039302&#xff0c;用户安装后&#xff0c;系统版本将升级至22631.3810。此次更新将会逐步推出一些新功能&#xff0c;在“设置”主页上添加了新的Game Pass推荐卡&#xff0c;同时显示桌面按钮再次默认位于任务栏上。接下来小编给大家带来…

行人检测技术:思通数科大模型在自动驾驶安全中的应用

在自动驾驶技术飞速发展的今天&#xff0c;行人检测已成为确保道路交通安全的关键技术之一。本文将探讨如何结合思通数科大模型和计算机视觉技术&#xff0c;实现在城市交通环境中对行人的高效检测&#xff0c;为自动驾驶车辆提供必要的行人安全保障。 引言 行人检测技术是利…

流量控制组件选型之 Sentinel vs Hystrix

Sentinel: Sentinel 是阿里中间件团队研发的面向分布式服务架构的轻量级高可用流量控制组件&#xff0c;于2018年7月正式开源。Sentinel 主要以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来帮助用户提升服务的稳定性。大家可能会问&#xff1a;Sen…

用AI赚!我尝试了n种!最后终于悟了!(附上学习规划图)

前言 选择副业&#xff0c;真的不需要考虑这个红利&#xff0c;那个红利&#xff01;最重要的是&#xff0c;找到自己舒适区内最有可能赚到钱的事情&#xff0c;然后低成本的尝试&#xff0c;积累正向反馈&#xff01; &#x1f49a;AI真的是必备技能 我说这句话可能有一些…

从此以后,将硬件接入大语言模型(LLM)将变得如此简单~

一、前言 本文中将使用ESP-AI开源库来实现将硬件接入AI&#xff0c;整个过程将非常的轻松~ 什么是ESP-AI? 为你的开发板提供全套的AI对话方案&#xff0c;包括但不限于 ESP32 系列开发板的 IATLLMTTS 集成方案。 交流群 QQ 交流群: 854445223 技术栈 ESP-AI 分为了服务端和…

每个 Node.js 开发人员都应该知道的13个库(上)

1. Sequelize Sequelize是一个基于promise的Node.js对象关系映射器&#xff08;ORM&#xff09;&#xff0c;它使开发人员更容易使用关系数据库。 支持PostgreSQL&#xff0c;MySQL&#xff0c;MariaDB&#xff0c;SQLite和更多数据库。 Sequelize使用JavaScript对象对数据库…

如何在浏览器中添加控制播放速度的插件-Global Speed

有时候我们觉得看视频的过程中视频播放的太慢了&#xff0c;希望能够加快一点播放的速度&#xff0c;Edge里面有很多有意思的插件。例如、Global Speed就可以控制视频播放的速度。 我们打开浏览器&#xff0c;点击设置&#xff0c;也就是三个点。 然后找到扩展&#xff0c;点…

LeeCode 994. 腐烂的橘子

原题链接994. 腐烂的橘子 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;采用bfs遍历图&#xff0c;将烂橘子加入队列&#xff0c;然后将被烂橘子感染的橘子也加入队列&#xff0c;bfs的具体细节就不多说了&#xff0c;可以自己去搜&#xff0c;很简单&#xff0c;…

flink使用StatementSet降低资源浪费

背景 项目中有很多ods层&#xff08;mysql 通过cannal&#xff09;kafka&#xff0c;需要对这些ods kakfa做一些etl操作后写入下一层的kafka&#xff08;dwd层&#xff09;。 一开始采用的是executeSql方式来执行每个ods→dwd层操作&#xff0c;即类似&#xff1a; def main(…

Java洗鞋小程序预约系统源码

&#x1f4a5;洗鞋神器来袭&#xff01;轻松预约&#xff0c;让你的鞋子焕然一新&#x1f45f; &#x1f389; 告别洗鞋烦恼&#xff0c;洗鞋预约小程序来啦&#xff01; 你是不是常常为洗鞋而烦恼&#xff1f;手洗太累&#xff0c;送去洗衣店又贵又麻烦。现在&#xff0c;好…

什么是一维正态分布?

正态分布&#xff0c;也以高斯分布而被人熟知。换句话说&#xff0c;正态分布也称为高斯分布。我们都清楚正态分布是用于处理连续型数据的好工具&#xff0c;尤其是当我们的研究对象符合正态分布时。 对于一维正态分布这个名字我其实比较不认可。在英文中&#xff0c;它叫“Un…