【问题标题】:Improving performance of JavaScript transitions提高 JavaScript 转换的性能
【发布时间】:2012-08-30 01:52:35
【问题描述】:

我有一个 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 中没有性能损失。

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

【问题讨论】:

    标签: javascript performance scroll transition


    【解决方案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);
        });
    });
    

    【讨论】:

    • 这似乎稍微提高了性能,但仍然不是很流畅。我很难辨别变化之间的差异,也许这只是一种安慰剂效应。但我总是欣赏更高效的代码,并且我能够压缩第二个类似的函数,所以我总共只有四行代码。
    猜你喜欢
    • 2013-01-22
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多