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

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

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

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

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

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

来源:https://blog.csdn.net/weixin_44864260/article/details/110401301

标签:JavaScript,鼠标,拖尾
0
投稿

猜你喜欢

  • vue学习笔记之动态组件和v-once指令简单示例

    2024-01-01 07:50:52
  • 如何在C++中调用Python

    2021-05-16 23:58:41
  • 一文教你如何快速学会Go的struct数据类型

    2024-02-14 22:58:44
  • Oracle SQL性能优化系列学习一

    2010-07-26 13:14:00
  • 学习javascript,实现插入排序实现代码

    2023-08-07 10:41:08
  • vue中element-ui组件默认css样式修改的四种方式

    2024-05-09 10:50:45
  • 每个ASP程序员必备的知识

    2008-09-21 21:34:00
  • Python-jenkins模块获取jobs的执行状态操作

    2022-07-29 14:15:09
  • python实现处理mysql结果输出方式

    2024-01-28 03:30:42
  • Python3列表内置方法大全及示例代码小结

    2022-09-23 01:39:21
  • 该用多大的字

    2009-05-17 14:39:00
  • Oracle RMAN快速入门指南

    2010-07-18 12:50:00
  • 微软雅黑的设计

    2010-02-23 20:36:00
  • 纯python实现机器学习之kNN算法示例

    2021-05-02 22:57:17
  • Microsoft SQL Server 2012 数据库安装图解教程

    2024-01-13 18:20:25
  • 解决Keras 与 Tensorflow 版本之间的兼容性问题

    2022-08-04 08:18:53
  • GoLand编译带有构建标签的程序思路详解

    2024-02-18 02:13:52
  • 如何才能保护好我们的SQL Server数据库

    2009-01-08 13:37:00
  • npm qs模块使用详解

    2024-04-25 13:11:14
  • H2 数据库导入CSV文件实现原理简析

    2024-01-15 12:06:27
  • asp之家 网络编程 m.aspxhome.com