简单实现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来刷新当前页面保留参数的具体实现
Dec 23 Javascript
基于Vuejs框架实现翻页组件
Jun 29 Javascript
Node.js中process模块常用的属性和方法
Dec 13 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
May 05 Javascript
微信小程序日期时间选择器使用方法
Feb 01 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
Aug 08 Javascript
详解如何使用微信小程序云函数发送短信验证码
Mar 13 Javascript
jQuery实现动态生成年月日级联下拉列表示例
May 11 jQuery
el-select数据过多懒加载的解决(loadmore)
May 29 Javascript
jQuery实现开关灯效果
Aug 02 jQuery
详解JavaScript的计时器和按钮效果设置
Feb 18 Javascript
webpack介绍使用配置教程详解webpack介绍和使用
Jun 25 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&amp;&amp;mysql)五
2006/10/09 PHP
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
PHP 图片水印类代码
2012/08/27 PHP
给ECShop添加最新评论
2015/01/07 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
比较完整的微信开发php代码
2016/08/02 PHP
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
Python getopt模块处理命令行选项实例
2014/05/13 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
Python中的zipfile模块使用详解
2015/06/25 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
我的求职择业计划书
2014/04/04 职场文书
企业总经理任命书
2014/06/05 职场文书
安阳殷墟导游词
2015/02/10 职场文书
干部考核工作总结2015
2015/07/24 职场文书
餐厅开业活动方案
2019/07/08 职场文书