简单实现js鼠标跟随效果


Posted in Javascript onAugust 02, 2020

本文实例为大家分享了js鼠标跟随效果展示的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style>
  body,div{
   margin:0;
   padding:0;

  }
  #box{
   position:relative;
   margin:20px auto;
   width:300px;
   height:300px;
   background:#008000;
  }
  #mark{
   position:absolute;
   top:0;
   left:0;
   width:100px;
   height:100px;
   background:red;
  }
 </style>
</head>
<body>
 <div id='box'>
  
 </div>
 <script>
  var box = document.getElementById('box');

  box.onmouseover = function(e){
   e = e || window.event;
   var mark = document.createElement('div');
   mark.id = "mark";
   this.appendChild(mark);
   mark.style.left = e.clientX - this.offsetLeft + 5 + "px";
   mark.style.top = e.clientY - this.offsetTop + 5 + "px";
   //阻止mark盒子的onmouseover事件的冒泡传播
   mark.onmouseover = function(e){
    e = e || window.event;
    e.stopPropagation ? e.stopPropagation():e.cancelBubble = true;
   }
   mark.onmouseout = function(e){
    e = e || window.event;
    e.stopPropagation ? e.stopPropagation():e.cancelBubble = true;
   }
  }
  //以下代码会出现一个问题,当鼠标移动过快的时候,鼠标会进入到mark这个盒子,会触发它的mouseover行为,由于事件的冒泡传播机制,导致box的mouseover会重新被触发,导致红色盒子一直在不断的创建
  box.onmousemove = function(e){
   e = e || window.event;
   var mark = document.getElementById('mark');
   if(mark){
    mark.style.left = e.clientX - this.offsetLeft + 5 + "px";
    mark.style.top = e.clientY - this.offsetTop + 5 + "px";
   }

  }
  //依然有问题:鼠标快速移动,首先会到mark上,此时浏览器在计算mark的位置,计算完成,mark到达指定的位置,此时鼠标又重新回到box上,触发了box的mouseover,也触发了mark的mouseout,也会传播到box的mouseout上,会把mark先删除,然后在创建
  box.onmouseout = function(e){
   e = e || window.event;
   var mark = document.getElementById('mark');
   if(mark){
    this.removeChild(mark);
   }

  }

  //上面代码也可以通过将over和out事件分别改为enter和leave 
  //onmouseenter和onmouseover都是鼠标滑上去的行为,但是onmouseenter浏览器默认阻止了它的冒泡传播(mark的onmouseenter行为触发,不会传播到box);而onmouseover是存在冒泡传播的,想要阻止的话需要手动阻止
 </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
javascript中定义类的方法详解
Feb 10 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
Mar 04 Javascript
JavaScript中指定函数名称的相关方法
Jun 04 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
微信小程序 toast 详解及实例代码
Nov 09 Javascript
AngularJS中一般函数参数传递用法分析
Nov 22 Javascript
JS闭包可被利用的常见场景小结
Apr 09 Javascript
js调用刷新界面的几种方式
May 03 Javascript
vue resource post请求时遇到的坑
Oct 19 Javascript
Node.js 中使用 async 函数的方法
Nov 20 Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 Javascript
BootStrap的双日历时间控件使用
Jul 25 #Javascript
vue事件修饰符和按键修饰符用法总结
Jul 25 #Javascript
Vue.js学习笔记之修饰符详解
Jul 25 #Javascript
ES6正则表达式扩展笔记
Jul 25 #Javascript
简单实现js拖拽效果
Jul 25 #Javascript
Vue实现一个返回顶部backToTop组件
Jul 25 #Javascript
基于jquery实现多级菜单效果
Jul 25 #jQuery
You might like
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
js的一些常用方法小结
2011/06/29 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
最基础的Python的socket编程入门教程
2015/04/23 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
学生实习推荐信范文
2013/11/26 职场文书
售后服务承诺书
2014/03/26 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
保姆聘用合同
2015/09/21 职场文书
队列队形口号
2015/12/25 职场文书
python 远程执行命令的详细代码
2022/02/15 Python