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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
详解Javascript 装载和执行
Nov 17 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
Feb 02 Javascript
深入理解jQuery事件绑定
Jun 02 Javascript
老生常谈JavaScript 正则表达式语法
Aug 20 Javascript
Javascript中this绑定的3种方法与比较
Oct 13 Javascript
字太多用...代替的方法(两种)
Mar 15 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
May 17 Javascript
快速了解vue-cli 3.0 新特性
Feb 28 Javascript
Vue中的Props(不可变状态)
Sep 29 Javascript
原生JS生成指定位数的验证码
Oct 28 Javascript
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
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
PHP4之COOKIE支持详解
2006/10/09 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
利用jq让你的div居中的好方法分享
2013/11/21 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
Python实现批量转换文件编码的方法
2015/07/28 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
django实现后台显示媒体文件
2020/04/07 Python
Python turtle库的画笔控制说明
2020/06/28 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
为什么需要版本控制?
2013/08/08 面试题
通信研究生自荐信
2014/02/01 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
施工质量承诺书范文
2014/05/30 职场文书
新郎婚礼致辞
2015/07/27 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android