JavaScript实现酷炫的鼠标拖尾特效
作者:我不是秃头sheep 发布时间:2024-06-16 16:02:25
标签:JavaScript,鼠标,拖尾
看完这个保证你有手就行,制作各种好看的小尾巴!
全部代码如下,看注释可以轻易看懂
<!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写博客哦!
最后把图片素材送给你们吧,只要在上面代码中做简单的修改,便可以实现其他样式的小尾巴
来源:https://blog.csdn.net/weixin_44864260/article/details/110401301


猜你喜欢
- 本文实例讲述了Python显示进度条的方法,是Python程序设计中非常实用的技巧。分享给大家供大家参考。具体方法如下:首先,进度条和一般的
- 本文实例讲述了Django框架静态文件处理、中间件、上传文件操作。分享给大家供大家参考,具体如下:Django静态文件处理、中间件、上传文件
- 前言SciPy 是一个开源的 Python 算法库和数学工具包, Scipy 是基于 Numpy 的科学计算库,用于数学、科学、工程学等领域
- SocketServer简化了网络服务器的编写。它有4个类:TCPServer,UDPServer,UnixStreamServer,Uni
- 本位实例为大家分享了Python生成随机密码的实现过程,供大家参考,具体内容如下写了个程序,主要是用来检测MySQL数据库的空密码和弱密码的
- 本文实例讲述了python通过定义一个类实例作为ftp回调方法。分享给大家供大家参考。具体实现方法如下:class Writer: &nbs
- 我就废话不多说了,直接上代码吧!import mathimport numpy as npimport matplotlib.pyplot
- go get 和 go install 的区别先看结论:go get: 对 go mod 项目,添加,更新,删除&nbs
- 在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但
- 如图:其中Num是自增长列,Operation是分类标签,count是汇总数据 脚本如下: select Num=row_number()
- ./runInstaller 启动图形化报错 PRVF-0002 : Could not retrieve local nodename.
- 引言这两天在做微服务上云的事,之前一直是本地运行,后来在服务器搭建了生产环境集群。上云时出现了一些幺蛾子云上的服务都需要身份验证的,没有专用
- 哎,以前写博文的时候没注意,有些图片用QQ来截取,获得的图片文件名都是类似于QQ截图20120926174732-300×15.png的形式
- 阅读上一篇:网马解密大讲堂——网马解密初级篇今天主要讲解的内容是Freshow工具的使用方法,工欲善其事,必先利其器,首先要学会如何使用解密
- 前言在golang语言中,select语句 就是用来监听和channel有关的IO操作,当IO操作发生时,触发相应的case动作。有了 se
- 如何加点盐(salt)?为了加强MD5的安全性,从而加入了新的算法部分即加盐值,加盐值是随机生成的一组字符串,可以包括随机的大小写字母、数字
- ROC曲线绘制要点(仅记录)1、ROC用于度量模型性能2、用于二分类问题,如若遇到多分类也以二分类的思想进行操作。3、二分类问题代码实现(至
- 最近在学着用easyui,发现框架用起来果然是方便简洁,能弄出这框架的都是大神级别了吧,牛啊....今天碰到这个应用可以说是让我非常之无语,
- 前言接口在面向对象编程中是经常使用的招式,也是体现多态很重要的手段。是的。Golang中也有接口这玩意儿。1.为什么需要接口?多数情况下,数
- 图像可能在生成、传输或者采集过程中夹带了噪声,去噪声是图像处理中常用的手法。通常去噪声用滤波的方法,比如中值滤波、均值滤波。但是那样的算法不