简单实现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 相关文章推荐
使用 JScript 创建 .exe 或 .dll 文件的方法
Jul 13 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
Dec 11 Javascript
jQuery 属性选择器element[herf*='value']使用示例
Oct 20 Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
js在ie下打开对话窗口的方法小结
Oct 24 Javascript
javascript构造函数以及原型对象的理解
Jan 13 Javascript
详解JS中的立即执行函数
Feb 24 Javascript
Vue Element使用icon图标教程详解(第三方)
Feb 07 Javascript
Vue完整项目构建(进阶篇)
Feb 10 Javascript
vue+springboot实现登录验证码
May 27 Vue.js
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与SQL注入攻击[三]
2007/04/17 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
Python之list对应元素求和的方法
2018/06/28 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
python批量处理txt文件的实例代码
2020/01/13 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
python多线程和多进程关系详解
2020/12/14 Python
Python 随机按键模拟2小时
2020/12/30 Python
十一个高级MySql面试题
2014/10/06 面试题
建筑经济管理专业求职信分享
2014/01/06 职场文书
中班中秋节活动反思
2014/02/18 职场文书
班主任班级寄语大全
2014/04/04 职场文书
合同协议书格式
2014/04/18 职场文书
走近毛泽东观后感
2015/06/04 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python