如果用户向下滚动并且菜单消失,我想要显示div(返回顶部)。 div下滑并弹跳,但它一直弹跳。
,我只想让它反弹一次我知道发生这种情况是因为只要“(distance + navHeight)< = 1”,代码会一遍又一遍地运行,但有没有办法只运行一次代码?
$(window).on('scroll', function () {
var scrollTop = $(window).scrollTop(),
elementOffset = $('.navigation').offset().top,
navHeight = $('.navigation').height();
distance = Math.round((elementOffset - scrollTop));
if((distance + navHeight) <= 1) {
$('#scroll-top').slideToggle(700, 'easeOutBounce', function() {
$(this).addClass('menu-stick');
});
}
});
CSS
.menu-stick {
position: fixed;
z-index: 2000;
left: 0;
right: 0;
top: 0;
}
答案 0 :(得分:2)
将动作的触发选择器更改为#scroll-top:not(.menu-stick)
所以:
if (distance + navHeight) <= 1) {
$('#scroll-top:not(.menu-stick)').slideToggle(700, 'easeOutBounce', function() {
$(this).addClass('menu-stick');
});
}
答案 1 :(得分:1)
我显然无法看到您的所有代码,但可能会尝试检查元素是否已被卡住:
if ( !$('#scroll-top').hasClass('menu-stick') ) {
// Do animation
// add class 'menu-stick'
}