简单实现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 相关文章推荐
简明json介绍
Sep 28 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
Apr 25 Javascript
js数组操作常用方法
May 08 Javascript
js简单抽奖代码
Jan 16 Javascript
Jquery 垂直多级手风琴菜单附源码下载
Nov 17 Javascript
轻松实现js选项卡切换效果
Sep 24 Javascript
微信小程序使用第三方库Immutable.js实例详解
Sep 27 Javascript
JS实现AES加密并与PHP互通的方法分析
Apr 19 Javascript
Vue头像处理方案小结
Jul 26 Javascript
vue使用ajax获取后台数据进行显示的示例
Aug 09 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
Jun 06 Javascript
layui异步加载table表中某一列数据的例子
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错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
Python3内置模块random随机方法小结
2019/07/13 Python
python同步两个文件夹下的内容
2019/08/29 Python
三个python爬虫项目实例代码
2019/12/28 Python
比利时家具购买网站:Home24
2019/01/03 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
给排水专业应届生求职信
2013/10/12 职场文书
会计毕业生求职简历的自我评价
2013/10/20 职场文书
工程业务员工作职责
2013/12/07 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python