提高JavaScript转换的性能

时间:2012-08-30 01:52:36

标签: javascript performance scroll transition

我有一个JavaScript驱动的视差滑块,改编自本教程(http://tympanus.net/codrops/2011/01/03/parallax-slider/),还有一个小脚本,在滚动过一定点后将滑块图像淡出。

这是脚本:

    $(document).ready(function() {

        $(window).scroll(function () {
            var $slider = $('.pxs_slider');
            var sTop = $('body').scrollTop();
            var sTop_ff = $('html').scrollTop();
            var opacity = 1;

            if(sTop < 40) {
                opacity = 1;
                if(sTop_ff < 40) {
                    opacity = 1;
                } else {
                    opacity = 0;
                }
            } else  {
                opacity = 0;
            }

            $slider.css('opacity', opacity);
        });
  });

一切正常,但在此过渡期间滚动变得非常缓慢。但是,我发现它在所有浏览器的Chrome中确实存在此问题。 Firefox中没有性能损失。

我可以尝试一种更有效的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

缓存$('.pxs_slider')所以每次滚动条移动时都不会查询它是大的:

$(document).ready(function() {
    var $slider = $('.pxs_slider');

    $(window).scroll(function() {
        var sTop = $('body').scrollTop();
        var sTop_ff = $('html').scrollTop();
        var opacity = 1;

        if(sTop < 40) {
            opacity = 1;
            if(sTop_ff < 40) {
                opacity = 1;
            } else {
                opacity = 0;
            }
        } else  {
            opacity = 0;
        }

        $slider.css('opacity', opacity);
    });
});

另外,我认为$(window).scrollTop()是正确的方法:

$(document).ready(function() {
    var $slider = $('.pxs_slider');

    $(window).scroll(function() {
        $slider.css('opacity', $(window).scrollTop() < 40 ? 1 : 0);
    });
});