因此,我使用此代码在向下滚动时隐藏导航栏,并在用户再次向上滚动时立即显示它。

它适用于台式机,所有浏览器,也适用于移动设备(iPhone)上的Chrome浏览器,但在Safari中,slideUp / slideDown表现得很疯狂,有时会显示,隐藏,显示隐藏导航栏几次,然后消失。

好像事件被多次触发一样。

这是工作代码

   var lastScrollTop = 0, delta = 5;
   $(window).scroll(function(event){
   var st = $(this).scrollTop();

   if(Math.abs(lastScrollTop - st) <= delta)
      return;

   if (st > lastScrollTop){
       // downscroll code
       $("#soulnavbar").slideUp()
   } else {
      // upscroll code
      $("#soulnavbar").slideDown();

   }
   lastScrollTop = st;
});


http://jsfiddle.net/5n630gs2/1/

我在http://www.carbsanity.com/上使用它的网站

谁能告诉我为什么它在Safari上表现得如此,是否有什么我可以做的? :-)

谢谢!

最佳答案

问题是移动浏览器不支持“真实”滚动事件。滚动事件仅在窗口停止滚动后才触发。它没有及时反应。

您需要第三方来处理滚动,例如Iscroll。

关于javascript - 在“向下滚动”上显示“隐藏菜单”,在“向上滚动”上显示“显示”,可在Chrome浏览器中工作,而不在Safari中(移动设备),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29152279/

10-12 12:53
查看更多