我已经在我的网站上添加了一些简单的动画滚动,但是在jQuery中有一个小怪癖。每当网站的窗口顶部处于网站顶部的静态.nav
导航下时,我都会slideDown()
一个.nav-fixed
导航栏。一切都很好,除了当你点击任何链接(我假设任何带有jQuery onClick动画滚动功能的链接)时,.nav-fixed
会暂时隐藏并在网站滚动后再次出现。每当顶部静态.nav
在窗口视图中时,我正在控制台记录一条消息Should hide the nav
并注意到即使我们在页面底部并单击网站上的任何 onclick jquery 函数链接,该消息也会记录一次,就好像静态导航在窗口视图中一样。
有人有任何想法如何解决这个问题吗? 这是提到的网站: http://www.mmsmsy.com 代码如下:
const addClickToNav = (element) => {
$(window.opera ? 'html' : 'html, body').animate({scrollTop: $(element).offset().top - 50}, 1000);
}
$('.nav-link-top').on('click', () => $(window.opera ? 'html' : 'html, body').animate({scrollTop: 0}, 1000));
$('.link-start').on('click', () => addClickToNav('.about'));
$('.nav-link-skills').on('click', () => addClickToNav('.skills'));
$('.nav-link-portfolio').on('click', () => addClickToNav('.portfolio'));
$('.nav-link-contact').on('click', () => addClickToNav('.contact'));
$(window).scroll(function() {
if ($(this).scrollTop() > $('.nav').offset().top + $('.nav').height() + 50 && $('.nav-fixed').css('display') == 'none') {
$('.nav-fixed')
.css('display', 'flex')
.hide()
.slideDown();
}
if ($(this).scrollTop() < $('.nav').offset().top + $('.nav').height() + 50) {
console.log("Should hide the nav");
$('.nav-fixed').slideUp();
}
});
你试过这样吗:
$(window).scroll(function() {
if ($(this).scrollTop() > $('.nav').offset().top + $('.nav').height() + 50 && $('.nav-fixed').css('display') == 'none') {
$('.nav-fixed')
.css('display', 'flex')
.hide()
.slideDown();
}
else if ($(this).scrollTop() < $('.nav').offset().top + $('.nav').height() + 50)
{
console.log("Should hide the nav");
$('.nav-fixed').slideUp();
}
});