2012-07-28 120 views
1

在使用CSS“-webkit-overflow-scrolling:touch”时,我无法在iOS上获得实时scrollLeft位置。使用“-webkit溢出滚动:触摸”的实时滚动事件

这里有一个小提琴证明: http://jsfiddle.net/WaMUq/

虽然在桌面上滚动,我得到实时scrollLeft数据,同时滚动,而iOS上我需要等到势头滚动停止发送我的面前scrollLeft数据。

我该如何解决这个问题?我试图通过实时获取这些数据来创造一种微妙的视差效果。我试过Stellar.jsScrollability.js,两者都遇到同样的问题,直到滚动停止。

+0

对不起,这是不是已经找到了解决方法? – m90 2012-11-23 12:11:10

+0

同样在这里...我甚至尝试了投票scrollTop,但它甚至不改变,直到本机动画停止。 – lakenen 2012-12-08 01:16:14

回答

-1

这是可与鼠标:http://jsfiddle.net/Kirrr/WaMUq/3/

对于触摸:

在JS:

$('div.wrap').scroll(function(e){ 
    $('h4').html($(this).scrollLeft()); 
}); 

var start_x, wrap_x; 
$('div.wrap').bind("touchstart", function(e) { 
    e.preventDefault(); // optional. May be it works fine without this 
    start_x = e.originalEvent.changedTouches[0].pageX; 
    wrap_x = $(this).scrollLeft(); 
}) 
$('div.wrap').bind("touchmove", function(e) { 
    e.preventDefault(); // optional. May be it works fine without this 
    var x = e.originalEvent.changedTouches[0].pageX; 
    var result = wrap_x + start_x - x; 
    $(this).scrollLeft(result); 
}) 

对于触摸可能要去掉 “-webkit-溢出滚动:触摸;”

+0

该解决方案确实有效,但删除了我提到的关键元素 - “-webkit-overflow-scrolling:touch”。我真的需要在iOS上进行流畅的硬件加速弹性滚动。 – matthoiland 2012-07-29 03:55:24