首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >某些缩放级别上的jQuery SimplyScroll插件中断

某些缩放级别上的jQuery SimplyScroll插件中断
EN

Stack Overflow用户
提问于 2011-10-01 06:09:03
回答 1查看 770关注 0票数 1

你可以在SimplyScroll demo page上实际看到这种效果:使用Safari、Chrome或Firefox,缩小到页面元素非常小的程度,滚动条停止移动。

我已经测试和实验过了,在setInterval循环中,scrollLeft的值似乎是递增的,但它并没有“停留”,只是停留在前一个滚动值上。更奇怪的是,从控制台手动更改滚动值的效果很好。

下面是相关的代码片段:

代码语言:javascript
复制
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,也大大降低了速度,但没有结果;我被难住了。为什么缩放级别会影响在计时器回调中滚动的能力?

EN

回答 1

Stack Overflow用户

发布于 2017-12-08 15:09:33

步骤1:在下面添加函数

代码语言:javascript
复制
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函数上调用它

代码语言:javascript
复制
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();   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7616579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档