angular - 滚动中丢失元素的鼠标位置
问题描述
我有一个根据命令出现和消失的元素。我将它设置为在调用时使用鼠标的当前位置以显示在鼠标旁边。我通过为 mousemove 设置 HostListeners 来使用它,并在调用时将其附加到元素左侧和顶部样式:
public mousePosition = {x:0, y:0};
@HostListener('mousemove', ['$event'])
mouseMove($event: MouseEvent) {
this.mousePosition.x = $event.clientX;
this.mousePosition.y = $event.clientY;
}
@HostListener('window:keydown.alt.a') toolbarEvent() {
let cursor = document.getElementById('cursor');
cursor.style.left = this.mousePosition.x + "px";
cursor.style.top = this.mousePosition.y + "px";
}
然而,我的问题是在滚动时,它似乎停留在原始页面设置坐标上,并且在滚动时不会重新设置。我阅读了有关偏移量的信息,但我无法让它正常工作,因为我能够调用的唯一偏移量是鼠标移动。
这是我遇到的问题的 Stackblitz: https ://stackblitz.com/edit/angular-ivy-rjdt1w?file=src/app/app.component.ts 我做到了,所以它是一个简单的跟随鼠标,你可以看,一旦你向下滚动,元素就会停止在垂直位置并且不会继续。
Edit1* 在底部添加了 StackBlitz 示例。
Edit2* 我尝试创建一个跟随 Window.PageYoffset 的偏移量,然后根据我滚动的位置简单地减去或添加,但是,它仍然非常笨拙,我不确定我缺少什么。更新了 Stackblitz
Edit3* 想通了,是在缓存中添加和减去,而不是使用实际的新值。使用了更好的函数,如 Requestanimationframe 和 Transform。使用正确的代码更新了 Stackblitz。
解决方案
推荐阅读
- python - 如何计算平均价格并在未来添加其他功能
- python-3.x - 如何在 Keras 中创建一个自定义损失函数来评估每个时期后的预测?
- spring - 携带日期作为 Unix 纪元时间戳
- swift - 如何使用`coalescing unwrapping`安全地解开具有默认值的可选 - 不工作 - Swift
- linux - 如何在 gnuplot splot 的每个点上画一个圆圈?
- c++ - SIFT detectAndCompute抛出ipp异常
- python - 将 Python 变量内容发送到 Slack Webhook
- javascript - 从获取的图像创建数据 url
- serenity-js - 如何使用两个参数制作任务?
- react-native - 在 react native 中更改包名和应用程序名