简单实现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 Timing
Apr 21 Javascript
使用jsonp完美解决跨域问题
Nov 27 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 Javascript
javascript检测两个数组是否相似
May 19 Javascript
JavaScript中的toUTCString()方法使用详解
Jun 12 Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 Javascript
JavaScript注册时密码强度校验代码
Jun 30 Javascript
JavaScript实现动态添加Form表单元素的方法示例
Aug 14 Javascript
一种angular的方法级的缓存注解(装饰器)
Mar 13 Javascript
微信小程序日历弹窗选择器代码实例
May 09 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
Aug 26 Javascript
微信小程序wxml列表渲染原理解析
Nov 27 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中file_exists函数使用详解
2015/05/08 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
pandas中Timestamp类用法详解
2017/12/11 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
python里dict变成list实例方法
2019/06/26 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
python 串行执行和并行执行实例
2020/04/30 Python
Python基于内置函数type创建新类型
2020/10/22 Python
英国自行车商店:AW Cycles
2021/02/24 全球购物
2014年国培研修感言
2014/03/09 职场文书
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
民主评议党员工作总结
2014/10/20 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
Python中文纠错的简单实现
2021/07/07 Python
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android