简单实现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 EasyUI API 中文文档 - NumberBox数字框
Oct 13 Javascript
jquery链式操作的正确使用方法
Jan 06 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
JavaScript实战(原生range和自定义特效)简单实例
Aug 21 Javascript
Bootstrap select多选下拉框实现代码
Dec 23 Javascript
AngularJS双向绑定和依赖反转实例详解
Apr 15 Javascript
JavaScript面向对象精要(上部)
Sep 12 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
Mar 05 Javascript
Vue插值、表达式、分隔符、指令知识小结
Oct 12 Javascript
微信小程序封装的HTTP请求示例【附升级版】
May 11 Javascript
了解javascript中变量及函数的提升
May 27 Javascript
vue中destroyed方法的使用说明
Jul 21 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
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
Python Socket传输文件示例
2017/01/16 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
Python中的self用法详解
2019/08/06 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
Python读写压缩文件的方法
2020/07/30 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
python Xpath语法的使用
2020/11/26 Python
Python爬取某平台短视频的方法
2021/02/08 Python
Python的collections模块真的很好用
2021/03/01 Python
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
什么是View State?
2013/01/27 面试题
MIS软件工程师的面试题
2016/04/22 面试题
招股说明书范本
2014/05/06 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL