javascript - 滚动页面时,圆形鼠标跟随正在移动
问题描述
嘿,伙计们,我正在尝试创建鼠标跟随效果,但我正在努力的是,当我用鼠标滚动时,整个圆圈会随着页面移动,而不是出于某种原因停留在鼠标上。有什么线索吗?
jQuery(document).ready(function() {
var mouseX = 0, mouseY = 0;
var xp = 0, yp = 0;
jQuery(document).mousemove(function(e){
mouseX = e.pageX - 30;
mouseY = e.pageY - 30;
});
setInterval(function(){
xp += ((mouseX - xp)/3);
yp += ((mouseY - yp)/3);
jQuery(".circle").css({left: xp +'px', top: yp +'px'});
}, 20);
});
body, html {
position: relative;
height: 100%;
width : 100%;
margin: 0;
background-color: #000000;
}
.circle {
position: absolute;
border: solid 1px #ccc;
width: 60px;
height: 60px;
border-radius: 50%;
top:0px;
left:0px;
}
#site {
height:500vh;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span id="circle" class="circle"></span>
<div id="site"></div>
解决方案
您可以尝试使用固定位置,并使用 clientX/Y 而不是 pageX/Y
jQuery(document).ready(function() {
var mouseX = 0, mouseY = 0;
var xp = 0, yp = 0;
jQuery(document).mousemove(function(e){
mouseX = e.clientX - 30;
mouseY = e.clientY - 30;
});
setInterval(function(){
xp += ((mouseX - xp)/3);
yp += ((mouseY - yp)/3);
jQuery(".circle").css({left: xp +'px', top: yp +'px'});
}, 20);
});
body, html {
position: relative;
height: 100%;
width : 100%;
margin: 0;
background-color: #000000;
}
.circle {
position: fixed;
border: solid 1px #ccc;
width: 60px;
height: 60px;
border-radius: 50%;
top:0px;
left:0px;
}
#site {
height:500vh;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span id="circle" class="circle"></span>
<div id="site"></div>
推荐阅读
- sql-server - 使用周末前周五的日期字段生成数据提取
- node.js - 如何从分叉的子进程中捕获错误?
- java - 如何在 Java 中使用“Startswith”的变量查找文件
- c++ - 2个独立数据结构的迭代器
- azure - 使用 docker-compose 将 azure 容器注册表映像部署到 azure Web 应用程序中
- javascript - @media 打印的 CSS 页码
- drupal-7 - 在drupal 7中移动项目时挂钩
- angular - 在 angular2 的 RxJS 中找不到地图
- hyperledger-fabric - Cryptogen:找不到命令
- python - 保存在 csv 文件中的抓取数据不会转换为 excel(xlsx) 文件