我有以下代码“显示/隐藏”我的导航离开屏幕顶部,然后再次将其拉下。
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/