本文实例为大家分享了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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 鼠标跟随
# js实现简单鼠标跟随效果的方法
# js鼠标跟随运动效果
# javascript鼠标跟随运动3种效果(眼球效果
# 苹果菜单
# 方向跟随)
# Js鼠标跟随代码小手点击实例方法
# JS实现的简单鼠标跟随DiV层效果完整实例
# JS实现的鼠标跟随代码(卡通手型点击效果)
# js实现鼠标跟随运动效果
# 原生js实现鼠标跟随效果
# JavaScript实现的鼠标跟随特效示例【2则实例】
# js实现鼠标跟随小游戏
# 鼠标
# 都是
# 也会
# 可以通过
# 一个问题
# 会把
# 大家分享
# 过快
# 具体内容
# 大家多多
# 当鼠标
# body
# div
# padding
# margin
# title
# UTF
# style
# Document
# auto
相关文章:
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
官网网站制作腾讯审核要多久,联想路由器newifi官网
深入理解Android中的xmlns:tools属性
c++ stringstream用法详解_c++字符串与数字转换利器
独立制作一个网站多少钱,建立网站需要花多少钱?
为什么Go需要go mod文件_Go go mod文件作用说明
,如何利用word制作宣传手册?
建站VPS配置与SEO优化指南:关键词排名提升策略
定制建站流程步骤详解:一站式方案设计与开发指南
网站制作公司,橙子建站是合法的吗?
nginx修改上传文件大小限制的方法
网站制作需要会哪些技术,建立一个网站要花费多少?
网站app免费制作软件,能免费看各大网站视频的手机app?
如何选择高效可靠的多用户建站源码资源?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何选择香港主机高效搭建外贸独立站?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
如何高效完成自助建站业务培训?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
孙琪峥织梦建站教程如何优化数据库安全?
模具网站制作流程,如何找模具客户?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
手机网站制作与建设方案,手机网站如何建设?
如何获取开源自助建站系统免费下载链接?
如何有效防御Web建站篡改攻击?
Android自定义listview布局实现上拉加载下拉刷新功能
如何制作算命网站,怎么注册算命网站?
建站之星在线版空间:自助建站+智能模板一键生成方案
广州营销型建站服务商推荐:技术优势与SEO优化解析
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
c# 在ASP.NET Core中管理和取消后台任务
如何选择PHP开源工具快速搭建网站?
学校建站服务器如何选型才能满足性能需求?
常州企业建站如何选择最佳模板?
如何通过FTP空间快速搭建安全高效网站?
如何在Golang中使用replace替换模块_指定本地或远程路径
三星网站视频制作教程下载,三星w23网页如何全屏?
如何规划企业建站流程的关键步骤?
如何通过可视化优化提升建站效果?
,购物网站怎么盈利呢?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何在云主机快速搭建网站站点?
如何在阿里云高效完成企业建站全流程?
如何在阿里云虚拟主机上快速搭建个人网站?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
*请认真填写需求信息,我们会在24小时内与您取得联系。