javascript - jQuery 不显示和隐藏标题

标签 javascript jquery html css

我正在尝试制作一个出现在页面特定位置的页眉。 所以我正在做的是检查滚动到页面顶部和元素的顶部偏移量,在该元素之后应该出现标题。如果 scrollTop 大于偏移量,则显示标题,否则它会消失。

但是!当我滚动到该位置时,标题位置不断在 top: -13%top: -12.999998% 之间切换。一段时间后,它终于显示标题,但它从未消失。

我做错了什么?!

JSFiddle:https://jsfiddle.net/5k5s016f/

最佳答案

嗯,我认为问题在于 .animate() 函数不断运行,导致动画在结束前“重新启动”。

这不是最漂亮的解决方案,但只需添加一个控制函数执行的标志和一个超时以减少运行处理程序的频率即可解决问题。

https://jsfiddle.net/5k5s016f/2/

var visible = false;
$(window).scroll(function() {
    setTimeout(function(){

    var height = $(window).scrollTop();
    var $page2 = $("#page2");
    var offset = $page2.offset().top;

    if (height > offset) {
      if    (visible) {
        return;
      }
      visible = true;
      $(".floating-header").show().animate({
        top: 0
      });
    } else {
        if (!visible) {
        return;
      }
      visible = false;
      $(".floating-header").animate({
        top: "-13%"
      });
    }

  }, 200)
});

关于javascript - jQuery 不显示和隐藏标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37733949/

相关文章:

javascript - 使用 Javascript/Node.js 重新采样时间序列或数据帧

javascript - 为什么 SpeechSynthesisUtterance 有时不会在基于 Chromium 的浏览器中触发 'end' 事件?

javascript - e.preventDefault() 的纯 JavaScript 版本;

java - 使用 Jsoup 解析网页。为什么 Android 上的行为不同?

html - 将垂直滚动从页面移动到内部 div

javascript - 为什么我的第一个 snippit 工作,但我的第二个不工作?

javascript - 如何在点击链接之前显示 (DOM) 消息

javascript - 将 jQuery 对象分配给 JavaScript 对象以进行事件绑定(bind)的首选方法是什么?

javascript - 大量更换元件

javascript - 我创建了一个下拉列表,如何显示所选项目的其他列数据?