简单实现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 相关文章推荐
使用Jquery来实现可以输入值的下拉选单 雏型
Dec 06 Javascript
node.js中的http.response.removeHeader方法使用说明
Dec 14 Javascript
jQuery中:gt选择器用法实例
Dec 29 Javascript
JS中捕获console.log()输出的方法
Apr 16 Javascript
jQuery拖拽插件gridster使用指南
Apr 21 Javascript
JavaScript类型系统之基本数据类型与包装类型
Jan 06 Javascript
jQuery Mobile和HTML5开发App推广注册页
Nov 07 Javascript
JavaScript如何一次性展示几万条数据
Mar 30 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
Dec 07 Javascript
jQuery实现右侧抽屉式在线客服功能
Dec 25 jQuery
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
如何区分vue中的v-show 与 v-if
Sep 08 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
PHP实现图片压缩
2020/09/09 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
javaScript动态添加Li元素的实例
2018/02/24 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python双向链表实现实例代码
2013/11/21 Python
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
python回调函数中使用多线程的方法
2017/12/25 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
学生个人的自我评价分享
2013/11/05 职场文书
房地产销售员的自我评价分享
2013/12/04 职场文书
广告设计应届生求职信
2014/03/01 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书