【问题标题】:problems triggering functions when scroll back to top of webpage滚动回网页顶部时触发功能的问题
【发布时间】:2013-04-22 10:49:57
【问题描述】:

我正在开发一个固定位置的顶部导航栏,该导航栏在访问者开始滚动后“出现”。 (在背景变化中出现,徽标调整大小和边框出现,使其看起来与网页的其余部分分开,导航链接本身已经在页面顶部可见)。

使用 jQuery 的 scroll() 和 animate() 显示部分非常简单。

 $(window).scroll(function(){
     $('.logo img').animate({"height": "65px"}, 500);
     $('#header').css({"border": "1px solid #999", "padding-top": "1px"});
 });

但难倒我的部分是当访问者滚动回顶部时撤消更改,以便导航栏重新融入网页。

我添加了一个似乎工作得很好的位置函数......但是...... img 调整大小在返回顶部时会延迟,有时会延迟一两分钟。边框和填充更改在返回顶部时立即生效,只是延迟调整 img 大小。

 $(window).scroll(function(){
     if ($(this).scrollTop()>0) {
          $('.logo img').animate({"height": "65px"}, 300);
          $('#header').css({"border": "1px solid #999", "padding-top": "1px"});
     } else {
          $('.logo img').animate({"height": "114px"}, 300);
          $('#header').css({"border": "1px solid #fff", "padding-top": "8px"})
     }
 });

如果我将两个 img 函数都更改为 css() 它可以工作,但是我失去了 animate 提供的图像的平滑收缩。

专家有什么建议吗?

【问题讨论】:

    标签: jquery css scroll jquery-animate


    【解决方案1】:

    尝试在 animate 函数后面添加 .stop()

    $('.logo img').stop().animate({"height": "65px"}, 300);
    

    【讨论】:

    • 或者,使用.stop(true, true)
    • 感谢这似乎是诀窍。我认为必须有一些简单的东西,但由于我只在一个网站上工作,所以我对 jQuery 没有太多经验。
    • stop(true, true) 似乎禁用了动画功能,而 stop() 没有。
    猜你喜欢
    • 2015-12-18
    • 2015-03-03
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 2010-12-05
    • 2010-12-20
    相关资源
    最近更新 更多