JS实现超级好看的鼠标小尾巴特效


Posted in Javascript onDecember 01, 2020

看完这个保证你有手就行,制作各种好看的小尾巴!

JS实现超级好看的鼠标小尾巴特效

全部代码如下,看注释可以轻易看懂

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
<style>
 /*div样式*/
 #main{
 width: auto;height: 1500px;margin: 0;background-color: black;
 }
</style>
</head>
<body>
 <div id="main"></div>
 <script>
 //==========鼠标星球尾巴JS代码============

 //========函数:获取当前鼠标的坐标=========
 function getMousePosition(event) {
  var x = 0;//x坐标
  var y = 0;//y坐标
  //documentElement 返回一个文档的文档元素。
  doc = document.documentElement;
  //body 返回文档的body元素
  body = document.body;
  //解决兼容性
  if (!event) event = window.event;
  //解决鼠标滚轮滚动后与相对坐标的差值
  //pageYoffset是Netscape特有
  if (window.pageYoffset) {
  x = window.pageXOffset;
  y = window.pageYOffset;
  } else {//其他浏览器鼠标滚动
  x = (doc && doc.scrollLeft || body && body.scrollLeft || 0)
   - (doc && doc.clientLeft || body && body.clientLeft || 0);
  y = (doc && doc.scrollTop || body && body.scrollTop || 0)
   - (doc && doc.clientTop || body && body.clientTop || 0);
  }
  //得到的x加上当事件被触发时鼠标指针向对于浏览器页面(或客户区)的水平坐标
  x += event.clientX;
  //得到的x加上当事件被触发时鼠标指针向对于浏览器页面(或客户区)的垂直坐标
  y += event.clientY;
  //返回x和y
  return {'x': x, 'y': y};
 }
 //========函数:获取当前鼠标的坐标=========

 //=====生成从minNum到maxNum的随机数=====
 function randomNum(minNum,maxNum){
 switch(arguments.length){
  case 1:
  return parseInt(Math.random()*minNum+1,10);
  case 2:
  return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10);
  default:
  return 0;
 }
 }
 //=====生成从minNum到maxNum的随机数======

 //======给整个文档绑定一个鼠标移动事件======
 document.onmousemove = function(event){

 // 在页面创建一个标签,(这里是创建一个自定义标签styleImg )
 var styleImg = document.createElement("div");
 //获取随机数1-5,根据随机数来设置标签的样式
 var r = randomNum(1,5);
 switch (r) {
  case 1:
  //设置图片的路径,根据不同的路径就可以更改成不同的样式
  styleImg.innerHTML="<img src='../static/muban/images/xing01.png' style='width: 50px;height: auto;'/>"
  break;
  case 2:
  styleImg.innerHTML="<img src='../static/muban/images/xing02.png' style='width: 50px;height: auto;'/>"
  break;
  case 3:
  styleImg.innerHTML="<img src='../static/muban/images/xing03.png' style='width: 50px;height: auto;'/>"
  break;
  case 4:
  styleImg.innerHTML="<img src='../static/muban/images/xing04.png' style='width: 50px;height: auto;'/>"
  break;
  case 5:
  styleImg.innerHTML="<img src='../static/muban/images/xing05.png' style='width: 50px;height: auto;'/>"
  break;
 }
 // 由于要设置动画,设置left 和top,因此,必须要设置定位
 styleImg.style.position = 'absolute'
 // 设置标签的初始位置,即鼠标的当前位置
 var x = getMousePosition(event).x;
 var y = getMousePosition(event).y;
 // 设置styleImg的坐标
 	styleImg.style.top = y +"px";
 styleImg.style.left = x + "px";
 //绑定testDiv为当前鼠标小尾巴生效的区域
 var testDiv = document.getElementById("main");
 // 将新建的标签加到页面的 body标签中
 testDiv.appendChild(styleImg);
 // 在文档中有超出的地方就会不显示,所以尽量绑定到页面的div中
 // 设置溢出隐藏,为了防止鼠标在移动的过程中会触发上下滚动条
 testDiv.style.overflow = 'hidden';
 //
 	var count = 0;
 	//setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式
 var time = setInterval(function(){
 // 设置定时器 ,让每一次生成的标签在指定的周期内修改相应的透明度
 	count += 5;
  styleImg.style.opacity = (100-count)/100 ;
 }, 30)
 // setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。
 // 设置延时定时器, 在一定的时间后清除上面的定时器,让创建的标签不再进行变化
 setTimeout(function(){
  // 使用 clearInterval() 来停止执行setInterval函数
  clearInterval(time);
  // 删除创建的标签
  testDiv.removeChild(styleImg);
 },250)
 }
 </script>
</body>
</html>

ps:以上代码参考了多篇不同的文献后自己敲的,没有面向VC写博客哦!

最后把图片素材送给你们吧,只要在上面代码中做简单的修改,便可以实现其他样式的小尾巴

JS实现超级好看的鼠标小尾巴特效

JS实现超级好看的鼠标小尾巴特效
JS实现超级好看的鼠标小尾巴特效

JS实现超级好看的鼠标小尾巴特效JS实现超级好看的鼠标小尾巴特效

好东西记得要收藏哦!!!

到此这篇关于JS实现超级好看的鼠标小尾巴特效的文章就介绍到这了,更多相关JS实现鼠标小尾巴内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript中关于执行环境的杂谈
Aug 14 Javascript
探讨jQuery的ajax使用场景(c#)
Dec 03 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
Feb 18 Javascript
JavaScript从0开始构思表情插件
Jul 26 Javascript
JS 实现Base64编码与解码实例详解
Nov 07 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 Javascript
Mongoose中document与object的区别示例详解
Sep 18 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
Feb 28 Javascript
vue 修改 data 数据问题并实时显示的方法
Aug 27 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
Aug 30 Javascript
Swiper.js实现移动端元素左右滑动
Sep 08 Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 01 #Javascript
浅谈es6中的元编程
Dec 01 #Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 #Vue.js
微信小程序轮播图swiper代码详解
Dec 01 #Javascript
利用JavaScript模拟京东按键输入功能
Dec 01 #Javascript
layui使用及简单的三级联动实现教程
Dec 01 #Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
Dec 01 #Vue.js
You might like
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
python中global用法实例分析
2015/04/30 Python
python字典排序实例详解
2015/05/20 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
python监控键盘输入实例代码
2018/02/09 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
Python如何获取文件路径/目录
2020/09/22 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
自我评价中英文语句
2013/11/30 职场文书
运动会广播稿500字
2014/01/28 职场文书
会计学生自我鉴定
2014/02/06 职场文书
产品发布会策划方案
2014/05/12 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
TypeScript 内置高级类型编程示例
2022/09/23 Javascript