javascript - 图像作为光标,滚动时应该移动

标签 javascript html jquery css cursor

我用更大的图像替换了光标,以便在网站上有一个大光标。 实际上,它工作得很好并且跟随鼠标,但是只要我滚动页面,光标就会保持在与之前相同的位置,并且一旦我再次移动鼠标就会更新。

我的想法是让鼠标在滚动时立即移动,而不是稍后传送。

这是代码,以便您理解。 感谢您的帮助!

  $(document).on('mousemove', function(e){
    $('#custom-cursor').css({
      left:  e.pageX -30,
      top:   e.pageY-25,
            pointerEvents: 'none'
    });
  });
#custom-cursor{
    width: 230px;
    height: 300px;
    position: absolute;
    background-size: 230px 300px;
    background-image: url("https://i.imgur.com/6uh0F5h.png");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="custom-cursor"></div>

<p>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br></p>

最佳答案

好吧,您还需要通过滚动距离来计算相对鼠标位置,如下所示:

编辑:我只针对垂直滚动执行此操作,您可能还需要对水平滚动执行相同的操作。

let lastX, lastY, lastScrolled = 0;;
$(document).on('mousemove', function(e) {
  lastX = e.pageX - 30;
  lastY = e.pageY - 25;
  $('#custom-cursor').css({
    left: e.pageX - 30,
    top: e.pageY - 25,
    pointerEvents: 'none'
  });
});

$(window).scroll(function(event) {
  if (lastScrolled != $(window)
    .scrollTop()) {
    lastY -= lastScrolled;
    lastScrolled = $(window)
      .scrollTop();
    lastY += lastScrolled;
  }
  $('#custom-cursor').css({
    left: lastX,
    top: lastY,
    pointerEvents: 'none'
  });
});
#custom-cursor {
  width: 30px;
  height: 30px;
  position: absolute;
  background-size: 230px 300px;
  background-color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="custom-cursor"></div>

<p>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the
  page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make
  the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page
  scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make
  the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page
  scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make
  the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page
  scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br>make the page scollable<br></p>

关于javascript - 图像作为光标,滚动时应该移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64550733/

相关文章:

javascript - 在 IE6 运行时添加 CSS 规则 - 对象不支持此属性或方法

javascript - 在 xmlHttpRequest 提交中暂停 10 秒

javascript - 如何在 JSX 中使用 map 进行嵌套循环?

javascript - 反转字符串

html - 如何在页面中间垂直和水平居中 slider - CSS,HTML

javascript - Windows Onload 导致脚本在 IE 中停止工作

javascript - 单击元素后无法显示 Angular 对话框

javascript - 重定向用户的奇怪问题

javascript - 最有可能的是如果功能不起作用

php - jQuery、javascript 数组/对象 SQL 注入(inject)问题