你可以在SimplyScroll demo page上实际看到这种效果:使用Safari、Chrome或Firefox,缩小到页面元素非常小的程度,滚动条停止移动。
我已经测试和实验过了,在setInterval循环中,scrollLeft的值似乎是递增的,但它并没有“停留”,只是停留在前一个滚动值上。更奇怪的是,从控制台手动更改滚动值的效果很好。
下面是相关的代码片段:
self.interval = setInterval(function() {
// snip
// increment by 1 pixel
self.$clip[0].scrollLeft += self.o.speed;
// scrollLeft value is unchanged
// snip
},self.intervalDelay); // usually set to 41我试过用requestAnimationFrame替换setInterval,也大大降低了速度,但没有结果;我被难住了。为什么缩放级别会影响在计时器回调中滚动的能力?
发布于 2017-12-08 15:09:33
步骤1:在下面添加函数
fixScrollNotRunWhenBrowserZoomout: function(){
var self = this;
var speed = self.o.speed;
var sp = self.$clip[0].scrollLeft;
var intervalHandle = setInterval(function(){
self.$clip[0].scrollLeft += speed;
if (Math.floor(self.$clip[0].scrollLeft) !== sp || speed == 100){
clearInterval(intervalHandle);
self.o.speed = speed;
}
speed++;
}, 100);
}步骤2:在init函数上调用它
init: function() {
this.$items = this.$list.children();
this.$clip = this.$list.parent(); //this is the element that scrolls
this.$container = this.$clip.parent();
this.$btnBack = $('.simply-scroll-back',this.$container);
this.$btnForward = $('.simply-scroll-forward',this.$container);
this.fixScrollNotRunWhenBrowserZoomout(); https://stackoverflow.com/questions/7616579
复制相似问题