2012-07-16 43 views
1

我目前使用SmoothDivScroll来实现图像的滚动流。然而,左边的热点速度太快,而右边的热点似乎没有正确响应。SmoothDivScroll; Left HotSpot太快,Right HotSpot什么都不做

我已经成立了一个小提琴展示问题:http://jsfiddle.net/gUewB/4/

我猜这事做与偏移的计算方法,但我不能找到一个很好的修复来解决问题。我的Java技能并不是那么棒。 :/

+0

Pesonally对我来说那件事不起作用。 ''>'el.data(“scrollableArea”)。mousewheel(function(event,delta){' - >'TypeError:Object [object Object] – ted 2012-07-16 15:44:43

回答

1

该错误是由于的事情发生,如:margin: 0 auto;

固定它具有以下:

设置事件,滚动RIGHT:

var x = e.pageX - (this.offsetLeft + el.data("scrollerOffset").left); 

改为

var x = el.data("hotSpotWidth") + (e.pageX - el.data("scrollerOffset").left - 960); 

设置左侧滚动事件:

var x = ((this.offsetLeft + el.data("scrollerOffset").left + el.data("hotSpotWidth")) - e.pageX); 

改为

var x = el.data("hotSpotWidth") - (e.pageX - el.data("scrollerOffset").left); 
3

我知道这个线程是慈祥的老人。但我有完全相同的问题!即使我更新到最新版本(在发布版本1.3时)

Pieter Mathys的解决方案不幸地不适合我。

我发现滚动问题发生,如果共同的所有图像的宽度小于scrollableArea-div。所以你所要做的就是检查是否有足够的图像来填充可滚动区域。如果不是,那么无论如何您都不需要SmoothDivScroll。 我有一些示例代码:

... html is already in in DOM ... 

imagesLoaded('#myScrollable', function(element) 
{ 
    var $myScrollable = $(element.elements); // just one #myScrollable 
    var imgWidths = 0; 
    var images = $myScrollable.find('img'); 
    for(var loop=0; loop < images.length; loop++) 
     imgWidths += $(images[loop]).width(); 
    if(imgWidths > $myScrollable.width()) 
    { 
     $myScrollable.smoothDivScroll(
     { 
      manualContinuousScrolling: true 
     }); 
     $myScrollable.smoothDivScroll("recalculateScrollableArea"); 
    } 
}); 

但我不得不说,我用从https://github.com/desandro/imagesloaded插件(imagesLoaded)当所有的图像加载有一个事件。否则所有图像的大小都为“0”;

我希望这可以帮助任何人。