javascript - 代码在 Safari 和响应式浏览器中无法正常工作

标签 javascript jquery html css safari

我有以下代码“显示/隐藏”我的导航离开屏幕顶部,然后再次将其拉下。

jQuery(document).ready(function($){
  var didScroll;
  var lastScrollTop = 0;
  var delta = 5;
  var navbarHeight = $('nav').outerHeight(true);

  $(window).scroll(function(event) { didScroll = true; });

  setInterval(function() {
    if (didScroll) {
    hasScrolled();
    didScroll = false;
  }
 }, 0);

function hasScrolled() {
 if($( window ).width() > 768) {
   var st = $(this).scrollTop();
 if (Math.abs(lastScrollTop - st) <= delta)
   return;
 if (st > lastScrollTop) {
    // Scroll Down
        $('#screen-nav').removeClass('nav-down').addClass('nav-up');
   } else { 
        $('#screen-nav').removeClass('nav-up').addClass('nav-down');
   }  

  }
    lastScrollTop = st;
  }

});

CSS

#screen-nav {
  position: fixed;
  top: 0; left: 0; right: 0;
 }

#screen-nav.nav-up { top: -100px; }
#screen-nav.nav-down { top: 0; }

问题是,在 safari 浏览器上,当屏幕从移动尺寸(所有浏览器上 <768px)变为屏幕尺寸时,有时会添加 .nav-up 类并且导航不显示。但仅当用户滚动到页面顶部时。

不确定是否有更好的方法来编写代码以确保正常运行。

最佳答案

我看到你正在使用 this例子。他的 fiddle 也很好用。唯一的问题是,在浏览器上调整大小与显示导航到位无关。您应该可以单独添加它。

$(window).resize(function(){
    $('#screen-nav').removeClass('nav-up').addClass('nav-down')
});

我更新了他的原文fiddle以反射(reflect)添加的窗口调整大小处理。

关于javascript - 代码在 Safari 和响应式浏览器中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45736500/

相关文章:

javascript - 使用 JavaScript 更改背景后 CSS 背景样式停止工作

html - 无法对齐图像?

javascript - jQuery - 复选框启用/禁用 - 带数据库

javascript - this.href 与 $(this).attr ('href' )

javascript - gmaps4rails - 在不刷新页面的情况下动态更新 map 上数据库中的标记

javascript - jQuery on TAB 压力模拟 on(mousedown) 事件

javascript - 获取所有不是表格的子元素

javascript - 防止 div 被其下方的 div 碰撞时向上滚动?

javascript - 使用带有 Promise 的多个请求

javascript - 禁用日期选择器中的先前日期