2

我有一个 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 没有性能影响。

我可以尝试一种更有效的方法来实现这种效果吗?

4

1 回答 1

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);
    });
});
于 2012-08-30T01:59:35.357 回答