Javascript 滚动更改元素不透明度

Javascript 滚动更改元素不透明度,javascript,scroll,opacity,Javascript,Scroll,Opacity,我已经使它几乎工作,但有一个问题,如何快速不透明度的变化,也有问题,当我卷回 JSFIDLE 我确实将它设置为5000>$(“.bgimage”).animate({opacity:0.4},“5000”) 但它的速度似乎和我在500的时候一样。我做错了什么? (试过写“5000ms”和“500s”,但都是一样的) 当我向下滚动时,元素(背景图像)淡出为0.4不透明度。但当我向上滚动时,不透明度只会变为1不透明度,不会淡入或类似 在播放动画之前,您需要运行.stop(),否则您只是停止正在尝试

我已经使它几乎工作,但有一个问题,如何快速不透明度的变化,也有问题,当我卷回

JSFIDLE

  • 我确实将它设置为5000>
    $(“.bgimage”).animate({opacity:0.4},“5000”)
    但它的速度似乎和我在500的时候一样。我做错了什么?
    (试过写“5000ms”和“500s”,但都是一样的)
  • 当我向下滚动时,元素(背景图像)淡出为0.4不透明度。但当我向上滚动时,不透明度只会变为1不透明度,不会淡入或类似

  • 在播放动画之前,您需要运行
    .stop()
    ,否则您只是停止正在尝试执行的向上滚动动画:

    $(document).scroll(function () {
        if ($(this).scrollTop() > 500) {
          $(".bgimage").stop().animate({opacity: 0.4}, 500);
        } else {
          $(".bgimage").stop().animate({opacity: 1}, 500);
        }
    
    });
    


    编辑:
    要澄清我在代码中做了什么:

    我删除了
    $(this).scrollTop()>1
    ,因为如果
    $(this).scrollTop()>500
    是真的,那么另一个也已经是真的,所以最终不需要它

    我用
    else
    语句包装了您的滚动动画,因为您最初所做的是启动用户滚动的任何内容(即使它们超过500个),看起来有点混乱,您同时启动了两个函数


    我还删除了
    返回
    ,因为我发现它在您的上下文中没有任何用处。

    非常感谢您,伙计。