我有一个使用window.addEventListener('mousemove', this.mousemoveFn);
在文档上获取鼠标位置的codepen设置,但是,如果您开始滚动,则在您再次移动之前,交互将无法与鼠标位置一起使用。所以我的问题是:
有没有办法使用滚动事件监听器获取页面上的当前鼠标位置?
window.addEventListener('scroll', callback);
由于使用mousemove事件检索位置,我不确定这是否可行,但是在滚动和移动时让元素与鼠标光标交互会很棒老鼠。
以下是codepen:https://codepen.io/IamBramer/pen/zavoBp
答案 0 :(得分:0)
首先回答:
有没有办法使用事件监听器滚动来获取页面上的当前鼠标位置?
查看MDN wheel中的事件定义:
var event = {
// keep a ref to the original event object
originalEvent: originalEvent,
target: originalEvent.target || originalEvent.srcElement,
type: "wheel",
deltaMode: originalEvent.type == "MozMousePixelScroll" ? 0 : 1,
deltaX: 0,
deltaY: 0,
deltaZ: 0,
preventDefault: function() {
originalEvent.preventDefault ?
originalEvent.preventDefault() :
originalEvent.returnValue = false;
}
};
此对象中没有鼠标位置的属性(考虑滑动,无位置,方向向量)。
现在回答:
让元素在滚动时以及移动鼠标时与鼠标光标交互
您应该直接在元素上使用mouseenter事件和mouseleave事件,甚至是mouseover事件。
浏览器可以让您在滚动或移动时知道鼠标是否进入,离开,或超过元素。
作为评论,鼠标事件是常识事件,如果没有任何反应(鼠标不移动),没有任何反应,没有移动事件。 实际上,任何hook都可以在不通知浏览器的情况下更改鼠标的位置(接收较低级别的事件),因此不会做出反应。