代码在 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 类并且导航不显示。但仅当用户滚动到页面顶部时。

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

我看到你正在使用这个例子。他的小提琴也很好用。唯一的问题是,在浏览器调整大小时,没有关于显示导航到位的任何内容。您应该能够单独添加它。

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

我更新了他的原始小提琴,以反映窗口大小调整处理的添加。

相关内容

最新更新