简单实现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 onpropertychange输入框 事件获取属性
Mar 26 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
Nov 08 Javascript
javascript定义变量时有var和没有var的区别探讨
Jul 21 Javascript
jquery中ajax跨域方法实例分析
Dec 18 Javascript
悬浮广告方法日常收集整理
Mar 18 Javascript
对jQuary选择器的全面总结
Jun 20 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
Aug 15 Javascript
js变量提升深入理解
Sep 16 Javascript
React BootStrap用户体验框架快速上手
Mar 06 Javascript
Vue前后端不同端口的实现方法
Sep 19 Javascript
angularjs1.5 组件内用函数向外传值的实例
Sep 30 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
Sep 16 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 操作文件的一些FAQ总结
2009/02/12 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
详解KMP算法以及python如何实现
2020/09/18 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
大学生个人自我鉴定
2013/12/03 职场文书
公积金单位接收函
2014/01/11 职场文书
七年级政治教学反思
2014/02/03 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
小学教学工作总结2015
2015/05/13 职场文书
工作年限证明范本
2015/06/15 职场文书