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 设置文本框中焦点的位置
Nov 20 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
Dec 26 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
Oct 30 Javascript
Jquery为单选框checkbox绑定单击click事件
Dec 18 Javascript
js获取某元素的class里面的css属性值代码
Jan 16 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
Feb 11 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
Bootstrap实现响应式导航栏效果
Dec 28 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
基于JS实现翻书效果的页面切换样式
Feb 16 Javascript
layui实现三级联动效果
Jul 26 Javascript
Javascript异步编程async实现过程详解
Apr 02 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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
用php和MySql来与ODBC数据连接
2006/10/09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
删除数组元素实用的PHP数组函数
2008/08/18 PHP
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
Javascript之String对象详解
2016/06/08 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
react+redux仿微信聊天界面
2019/06/21 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
基于python监控程序是否关闭
2020/01/14 Python
Keras搭建自编码器操作
2020/07/03 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
毕业生自荐书模版
2014/01/04 职场文书
六个一活动实施方案
2014/03/21 职场文书
医学求职信
2014/05/28 职场文书
高中生逃课检讨书
2014/10/10 职场文书