Javascript 平滑滚动;左热点太快,右热点什么都不做
我目前正在使用SmoothDivScroll实现图像的滚动流。但是,左侧热点速度过快,而右侧热点似乎没有正确响应 我摆好了一把小提琴来展示这个问题:Javascript 平滑滚动;左热点太快,右热点什么都不做,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我目前正在使用SmoothDivScroll实现图像的滚动流。但是,左侧热点速度过快,而右侧热点似乎没有正确响应 我摆好了一把小提琴来展示这个问题: 我猜这与偏移量的计算方式有关,但我找不到解决问题的好方法。我的Java技能不是很好/ 发生错误的原因如下:margin:0 auto 用以下内容修复了它: 设置向右滚动的事件: var x = e.pageX - (this.offsetLeft + el.data("scrollerOffset").left); 改为 var x = el.d
我猜这与偏移量的计算方式有关,但我找不到解决问题的好方法。我的Java技能不是很好/ 发生错误的原因如下:
margin:0 auto代码>
用以下内容修复了它:
设置向右滚动的事件:
var x = e.pageX - (this.offsetLeft + el.data("scrollerOffset").left);
改为
var x = el.data("hotSpotWidth") + (e.pageX - el.data("scrollerOffset").left - 960);
var x = el.data("hotSpotWidth") - (e.pageX - el.data("scrollerOffset").left);
设置向左滚动的事件:
var x = ((this.offsetLeft + el.data("scrollerOffset").left + el.data("hotSpotWidth")) - e.pageX);
改为
var x = el.data("hotSpotWidth") + (e.pageX - el.data("scrollerOffset").left - 960);
var x = el.data("hotSpotWidth") - (e.pageX - el.data("scrollerOffset").left);
发生错误的原因如下:margin:0 auto代码>
用以下内容修复了它:
设置向右滚动的事件:
var x = e.pageX - (this.offsetLeft + el.data("scrollerOffset").left);
改为
var x = el.data("hotSpotWidth") + (e.pageX - el.data("scrollerOffset").left - 960);
var x = el.data("hotSpotWidth") - (e.pageX - el.data("scrollerOffset").left);
设置向左滚动的事件:
var x = ((this.offsetLeft + el.data("scrollerOffset").left + el.data("hotSpotWidth")) - e.pageX);
改为
var x = el.data("hotSpotWidth") + (e.pageX - el.data("scrollerOffset").left - 960);
var x = el.data("hotSpotWidth") - (e.pageX - el.data("scrollerOffset").left);
我知道这根线有点旧了。但我有完全相同的问题!甚至我也更新到了最新版本(发布版本1.3时)
不幸的是,Pieter Mathys的解决方案对我不起作用
我发现如果所有公共图像的宽度小于scrollableArea-div,就会出现滚动问题。因此,您所要做的就是检查是否有足够的图像填充scrollableArea。如果不是,您也不需要平滑滚动条。
我有一些示例代码:
... 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");
}
});
。。。html已在DOM中。。。
imagesLoaded('#myScrollable',函数(元素)
{
var$myScrollable=$(element.elements);//只有一个35; myScrollable
var imgWidths=0;
var images=$myScrollable.find('img');
for(var loop=0;loop$myScrollable.width())
{
$myScrollable.smoothDivScroll(
{
手动继续滚动:真
});
$myScrollable.smoothDivScroll(“重新计算可滚动区域”);
}
});
但是我不得不说,我使用了一个插件(imagesLoaded)在加载所有图像时生成一个事件。否则,所有图像的大小都为“0”
我希望这对任何人都有帮助。我知道这条线有点旧了。但我有完全相同的问题!甚至我也更新到了最新版本(发布版本1.3时)
不幸的是,Pieter Mathys的解决方案对我不起作用
我发现如果所有公共图像的宽度小于scrollableArea-div,就会出现滚动问题。因此,您所要做的就是检查是否有足够的图像填充scrollableArea。如果不是,您也不需要平滑滚动条。
我有一些示例代码:
... 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");
}
});
。。。html已在DOM中。。。
imagesLoaded('#myScrollable',函数(元素)
{
var$myScrollable=$(element.elements);//只有一个35; myScrollable
var imgWidths=0;
var images=$myScrollable.find('img');
for(var loop=0;loop$myScrollable.width())
{
$myScrollable.smoothDivScroll(
{
manualContinuousScrolling:真
});
$myScrollable.smoothDivScroll(“重新计算可滚动区域”);
}
});
但是我不得不说,我使用了一个插件(imagesLoaded)在加载所有图像时生成一个事件。否则,所有图像的大小都为“0”
我希望这对任何人都有帮助。对我来说,这东西不起作用el.data(“scrollableArea”).mousewheel(函数(事件,增量){
->TypeError:Object[Object Object]没有方法“mousewheel”
Pesonally对我来说那东西不工作。el.data(“scrollableArea”).mousewheel(函数(事件,增量){
->TypeError:Object[Object Object]没有方法“mousewheel”