我用鼠标滚动了一张图片。
图像滚动到基于鼠标位置占窗口高度百分比的位置。
$(imageContainer).mouseenter(function(e){
var scrollingTo = ((e.pageY/$(this).height())-.083) * ( $(imageContainer).prop('scrollHeight') - $(imageContainer).height() );
hijacked = true;
$(imageContainer).animate({scrollTop:scrollingTo},300,function(){hijacked=false;});
}).mousemove(function(e){
if(hijacked) return;
var scrollingTo = ((e.pageY/$(this).height())-.083) * ( $(imageContainer).prop('scrollHeight') - $(imageContainer).height() );
$(imageContainer).scrollTop(scrollingTo);
}); 所以。在那一行
$(imageContainer).animate({scrollTop:scrollingTo},300,function(){hijacked=false;});我想要scrollingTo的改变。因为在动画过程中,用户可以移动鼠标,更改scrollingTo变量。
发布于 2012-09-14 03:22:31
好的,我设法用一种老套的方式来动态改变动画。我对jQuery的内部动画队列的理解不是很好,但据我所知,除了让它停止之外,没有办法改变队列中的动画。无论如何,下面是一个改变位置的示例的关键代码,它应该能够适应滚动(在fiddle form中):
$(document).ready(function () {
var last_update = 0;
$(document).on("mousemove", function (e) {
if (Date.now() - last_update > 50) {
$mover = $("#mover");
$mover.stop();
$mover.animate({ left: e.pageX, top: e.pageY}, 200, "linear");
last_update = Date.now();
}
});
});有几个技巧可以让它工作,我将通过它们并尝试解释我认为它们是如何适应滚动的:
完成的
我相信如果你只是把动画属性换成你自己的(scrollTop),这应该能达到你想要的效果。
https://stackoverflow.com/questions/12412557
复制相似问题