简单实现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代码小结
Oct 14 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
angular.js 路由及页面传参示例
Feb 24 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
Jul 09 Javascript
thinkjs 文件上传功能实例代码
Nov 08 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
Nov 17 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
Dec 28 Javascript
js实现轮播图的完整代码
Oct 26 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
Apr 15 Javascript
vue-cli配置flexible过程详解
Jul 04 Javascript
基于Vue中使用节流Lodash throttle详解
Oct 30 Javascript
JavaScript canvas绘制折线图
Feb 18 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
adodb与adodb_lite之比较
2006/12/31 PHP
php下将XML转换为数组
2010/01/01 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
python制作简单五子棋游戏
2019/06/18 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
python cookie反爬处理的实现
2020/11/01 Python
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
增员口号大全
2014/06/18 职场文书
党在我心中演讲稿
2014/09/02 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
酒会开场白大全
2015/06/01 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
为什么不建议在go项目中使用init()
2021/04/12 Golang
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB