JavaScript实现酷炫的鼠标拖尾特效


Posted in Javascript onFebruary 18, 2022

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

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写博客哦!

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

JavaScript实现酷炫的鼠标拖尾特效

JavaScript实现酷炫的鼠标拖尾特效

JavaScript实现酷炫的鼠标拖尾特效

JavaScript实现酷炫的鼠标拖尾特效

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

Javascript 相关文章推荐
开发跨浏览器javascript常见注意事项
Jan 01 Javascript
JavaScript 对象模型 执行模型
Dec 06 Javascript
IE 当eval遇上function的处理
Aug 09 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
Nov 10 Javascript
js实现跨域的多种方法
Dec 25 Javascript
DropDownList实现可输入可选择(两种版本可选)
Dec 07 Javascript
移动端基础事件总结与应用
Jan 12 Javascript
AngularJs定时器$interval 和 $timeout详解
May 25 Javascript
详解Vue组件之间的数据通信实例
Jun 17 Javascript
详解如何使用微信小程序云函数发送短信验证码
Mar 13 Javascript
详解微信小程序缓存--缓存时效性
May 02 Javascript
vue样式穿透 ::v-deep的具体使用
Jun 04 Javascript
Vue h函数的使用详解
Feb 18 #Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 #Vue.js
详解JSON.parse和JSON.stringify用法
Feb 18 #Javascript
前端vue+express实现文件的上传下载示例
详解JavaScript的计时器和按钮效果设置
一篇文章告诉你如何实现Vue前端分页和后端分页
javascript的var与let,const之间的区别详解
Feb 18 #Javascript
You might like
php修改NetBeans默认字体的大小
2013/07/02 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
python实现连接mongodb的方法
2015/05/08 Python
python自动翻译实现方法
2016/05/28 Python
Python算术运算符实例详解
2017/05/31 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
python下载库的步骤方法
2019/10/12 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
自我评价的正确写法
2013/09/19 职场文书
酒店服务与管理毕业生求职信
2013/11/02 职场文书
委托书的写法
2014/08/30 职场文书
个人委托书范本
2014/09/13 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
永远是春天观后感
2015/06/12 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers