首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetInterval减速

SetInterval减速
EN

Stack Overflow用户
提问于 2013-05-26 09:39:22
回答 1查看 1.5K关注 0票数 0

在发现我不能在Javascript中使用自动售货机的前缀后,我试着让自己变得模糊。在运行了大约5-10秒的脚本之后,console.log调用慢到每秒一个左右。这是我这边的东西吗?

这是我做的代码

代码语言:javascript
复制
var i = 0;
var iv = setInterval(function(){
    if(Number(i) > 2)
    {
        clearInterval(iv);
    }

    console.log(i);

    r = i.toFixed(2);

    $('#r').css('filter', 'blur(' + r + 'px)');
    $('#r').css('-webkit-filter', 'blur(' + r + 'px)');
    $('#r').css('-moz-filter', 'blur(' + r + 'px)');
    $('#r').css('-o-filter', 'blur(' + r + 'px)');
    $('#r').css('-ms-filter', 'blur(' + r + 'px)');

    i += 0.01;
}, 1);

和一个JSFiddle

我猜这就是JS处理浮点数的方式,还有什么方法可以让淡出变得更加平滑吗?一旦i绕过0.8,就会非常紧张。如何解决setInterval上的第二个延迟?还有其他人能复制这个吗?

要注意的事情

在对for-循环做同样的操作时,也发生了同样的事情,但它也使页面在循环停止时到达2之前毫无用处。

EN

回答 1

Stack Overflow用户

发布于 2013-05-26 12:28:27

通过将字符串'blur(‘+r+’px)的计算缓存到javascript变量并保存不必要的计算,可以使脚本更快。

您还可以将$('#r')对象缓存到javascript变量中,甚至可以使用jquery多字属性:$('#r').css({propertyName : value,propertyName : value})

类似于:

代码语言:javascript
复制
    var calc = 'blur(' + r + 'px)';     
    $('#r').css({
        'filter' :  calc ,
        '-webkit-filter' : calc,
        '-moz-filter' : calc,
        '-o-filter' : calc,
        '-ms-filter' : calc
    });     

在这里查看:http://jsfiddle.net/gMq3P/3/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16757977

复制
相关文章

相似问题

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