我正在制作一款基于鼠标位置滑动容器的动画。基本上看起来就像这样:
我正在监听窗口的mousemove事件,然后转换图像-viewport.pageX。一切正常,图像移动正确,但是我似乎在图像上有一个“死区”,鼠标移动事件无效。看起来死区正好是不显示的图像量。我假设需要进行一些数学计算,将该空间分成两半并从我移动图像的数量中减去它,但我无法完全弄清楚。
|--------------| <-- viewport
||-------------|--------| <- Image(
|| | |
||-------------|--------|
|--------------|
我正在监听窗口的mousemove事件,然后转换图像-viewport.pageX。一切正常,图像移动正确,但是我似乎在图像上有一个“死区”,鼠标移动事件无效。看起来死区正好是不显示的图像量。我假设需要进行一些数学计算,将该空间分成两半并从我移动图像的数量中减去它,但我无法完全弄清楚。
以下是捕获鼠标位置的代码:
$(window).on('mousemove', function(e) {
globals.curPosX = (e.pageX).clamp(0, $('.home-wrapper .bg').width() - window.innerWidth);
globals.curPosY = (e.pageY).clamp(0, $('.home-wrapper .bg').height() - window.innerHeight);
});
实际移动图像的代码:
draw: {
start: function() {
window.anim = requestAnimationFrame(draw.start);
var content = document.getElementById('content');
globals.tempPosX += (globals.curPosX - Mitek.home.globals.tempPosX) * 0.075;
Mitek.home.globals.tempPosY += (globals.curPosY - globals.tempPosY) * 0.015;
if ( has3d ) {
content.style.WebkitTransform = 'translate3d(' + -globals.tempPosX + 'px, 0px, 0)';
content.style.MozTransform = 'translate3d(' + -.globals.tempPosX + 'px, 0px, 0)';
content.style.transform = 'translate3d(' + -.globals.tempPosX + 'px, 0px, 0)';
} else {
content.style.left = -globals.curPosX + 'px';
}
},
stop: function() {
cancelAnimationFrame(anim)
}
}
就像我之前说的,这一切都运行良好并且看起来很好,但我无法弄清楚如何考虑侧面的额外空间。有什么建议吗?