【问题标题】:How to disable jQuery jParallax plugin on scroll and re-enable when scrolling stopped?如何在滚动时禁用 jQuery jParallax 插件并在滚动停止时重新启用?
【发布时间】:2011-09-12 10:18:18
【问题描述】:

我有一个固定的 jParallax – http://webdev.stephband.info/jparallax/index.html – 背景,页面元素在固定的“视差”背景上滚动。

问题:该插件仅在当前视口中有效,如果您向下滚动并应用了固定定位,该插件将停止工作。所以我想在滚动时禁用 jParallax 效果,并在停止滚动时重新启用。

为了控制滚动事件,我使用了 jQuery 的 James Padolsey 特殊滚动事件:http://james.padolsey.com/javascript/special-scroll-events-for-jquery/

我试过这样的:

    jQuery(window).bind('scrollstart', function(){
        jQuery('#parallax').jparallax({mouseResponse: false});
    });

    jQuery(window).bind('scrollstop', function(e){          
        jQuery('#parallax').jparallax({mouseResponse: true},{triggerExposesEdges: true}, {xtravel:0.2, ytravel:0.2}, {xtravel:0.6, ytravel:0.6}).append(corners);
    });

这会触发许多 jparallax 实例并且无法正常工作。

任何知道如何正确禁用 jparallax 的人或对 Stephen Band 的原始插件编写更新的人?

是否有任何具有适当“禁用”功能的等效插件替代品?

感谢您的帮助!

【问题讨论】:

    标签: javascript jquery jquery-plugins scroll


    【解决方案1】:

    对于那些仍在寻找解决这个问题的方法的人,jQuery zLayers 已经过时了,我建议结合使用

    1. plax - 支持动态启用/禁用视差的 jQuery 视差插件 https://github.com/cameronmcefee/plax

    2. jQuery Waypoints - 用于检测用户何时滚动到某个点并触发动作 http://imakewebthings.com/jquery-waypoints/

    下面是一些结合两者的示例代码:

        $('#some-div').waypoint(function(direction) {
            if (direction == "down"){
                $.plax.disable();
            }
            else {
                $.plax.enable();
            }
        });
    

    【讨论】:

      【解决方案2】:

      我通过使用 Devin R. Olsen - http://www.devinrolsen.com/jquery-zlayers-parallax-plugin/ 的 jQuery zLayers Parallax 插件找到了问题的解决方案。

      我仍在使用 James Padolsey 的 jQuery 特殊滚动事件:http://james.padolsey.com/javascript/special-scroll-events-for-jquery/

      尚未在 IE 上进行测试,但如果我在具有视差效果的固定全屏背景上滚动页面元素,这似乎在大多数浏览器上都可以正常工作。语法类似于:

          jQuery(window).bind('scrollstop', function(e){   
              $('#plax-1').zlayer({mass:5,confine:'push',canvas:'#parallax'});
              $('#plax-2').zlayer({mass:15,force:'push',canvas:'#parallax'});
              $('#plax-3').zlayer({mass:25,force:'push',canvas:'#parallax'});             
          }); 
      

      希望这可能对某人有用。

      【讨论】:

      • 下面有这个问题的最新解决方案。建议这样做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      相关资源
      最近更新 更多