【问题标题】:jQuery fade out element, replace content and fade back injQuery淡出元素,替换内容并淡入
【发布时间】:2015-02-10 03:46:32
【问题描述】:

我有一个网站,我正在尝试使用滚动事件 1) 淡出公司名称的文本版本, 2) 将该元素的内容替换为公司徽标的图像文件,并且 3) 淡入徽标。我面临的问题:

  • 我可以让淡出工作,但无法让替换 (.html) 功能和淡入方法工作
  • 我注意到当用户从顶部滚动超过 250 像素时,淡出不会立即发生;它滞后了很多,尤其是在页面滚动速度更快的情况下。

我已经尝试了 .animate 和 .fadeIn/.fadeOut 版本的淡入淡出,但仍然没有运气正确地替换元素内容并将其淡入视图的回调函数。

我的代码如下:

jQuery(window).scroll(function() {
var scrollTop = $(this).scrollTop();
var data = '<img src="assets/template/images/afl_logo_sm.png" width="135" height="55" alt="AFL">'
console.log('Scroll ', scrollTop);
if (scrollTop >= 250) {
  jQuery('a.navbar-brand').stop().animate({
    opacity: 0.0
  }, 500, function() {
    jQuery('a navbar-brand').html(data).fadeIn('fast');
  });
}
});

感谢您提供的任何帮助,

沙人

【问题讨论】:

    标签: javascript jquery jquery-animate fadein


    【解决方案1】:

    您在淡入/html 代码中缺少类选择器,您正在像使用后代选择器一样使用该类

    jQuery(window).scroll(function () {
        var scrollTop = $(this).scrollTop();
        var data = '<img src="//placehold.it/135X55" width="135" height="55" alt="AFL">'
        if (scrollTop >= 250) {
            jQuery('a.navbar-brand').stop().animate({
                opacity: 0.0
            }, 500, function () {
                jQuery(this).html(data).animate({
                    opacity: 1
                });
            });
        }
    });
    

    演示:Fiddle

    另外,一旦动画完成,我认为进一步的滚动不应该如此重复

    var flag = false;
    jQuery(window).scroll(function () {
        var scrollTop = $(this).scrollTop();
        var data = '<img src="//placehold.it/135X55" width="135" height="55" alt="AFL">'
        if (scrollTop >= 250) {
            if (!flag) {
                flag = true;
                jQuery('a.navbar-brand').stop().animate({
                    opacity: 0.0
                }, 500, function () {
                    jQuery(this).html(data).animate({
                        opacity: 1
                    });
                });
            }
        }
    });
    

    演示:Fiddle

    至于滞后,浏览器是单线程应用程序,因此当滚动速度更快时,浏览器可能会花费更多时间根据滚动更新视图而不是执行处理淡入淡出的脚本

    【讨论】:

    • 另外,对于给定的示例,fadeIn 可能不适用于opacity: 0,必须隐藏该元素
    • @ArunPJohny - 哇!你是对的。感谢您指出我的严重疏忽。我对其进行了测试,徽标图像文件现在按预期淡入。不幸的是,看起来将这些动画功能与滚动事件联系起来可能不是最佳选择,因为淡出/淡入的行为太不稳定且不可预测。我会寻找另一个更简洁的事件来与之联系。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    相关资源
    最近更新 更多