简单实现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 相关文章推荐
javascript来定义类的规范小结
Nov 19 Javascript
JS关键字球状旋转效果的实例代码
Nov 29 Javascript
JS生成不重复随机数组的函数代码
Jun 10 Javascript
JS表的模拟方法
Feb 05 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
requireJS使用指南
Apr 27 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
详解vue的数据binding绑定原理
Apr 12 Javascript
Bootstrap table使用方法总结
May 10 Javascript
JavaScript简单实现的仿微博留言功能示例
Jan 17 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
vue组件开发之slider组件使用详解
Aug 21 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 删除cookie和浏览器重定向
2009/03/16 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
详解Django中的form库的使用
2015/07/18 Python
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
python编码最佳实践之总结
2016/02/14 Python
python和flask中返回JSON数据的方法
2018/03/26 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
一百行python代码将图片转成字符画
2021/02/19 Python
Python整数对象实现原理详解
2019/07/01 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
如何提高JDBC的性能
2013/04/30 面试题
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
J2EE是技术还是平台还是框架
2016/08/14 面试题
学校三节实施方案
2014/06/09 职场文书
法人委托书
2014/07/31 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
群众路线表态发言材料
2014/10/17 职场文书
大学生个人学年总结
2015/02/15 职场文书
校长新学期寄语2016
2015/12/04 职场文书