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 add event remove event
Apr 07 Javascript
IE JS无提示关闭窗口不提示的方法
Apr 29 Javascript
快速解决FusionCharts联动的中文乱码问题
Dec 04 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
Mar 02 Javascript
Require.js的基本用法详解
Jul 03 Javascript
React中使用collections时key的重要性详解
Aug 07 Javascript
Vue keep-alive实践总结(推荐)
Aug 31 Javascript
React Native基础入门之调试React Native应用的一小步
Jul 02 Javascript
详解vue-cli3多环境打包配置
Mar 28 Javascript
JavaScript实现五子棋游戏的方法详解
Jul 08 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
Oct 26 Javascript
JavaScript实现放大镜效果代码示例
Apr 29 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正则表达式获取内容所有链接
2015/07/24 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
Python基于贪心算法解决背包问题示例
2017/11/27 Python
python高阶爬虫实战分析
2018/07/29 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
pycharm在调试python时执行其他语句的方法
2018/11/29 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
Python 移动光标位置的方法
2019/01/20 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
将python安装信息加入注册表的示例
2019/11/20 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
小学教师个人先进事迹材料
2014/05/17 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
借名购房协议书范本
2014/10/06 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
先进学校事迹材料
2014/12/30 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
员工旷工检讨书
2015/08/15 职场文书
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android
如何优化vue打包文件过大
2022/04/13 Vue.js