JQuery: 带有粘性导航栏的不透明度动画只工作一次
JQuery: Opacity animation with sticky navbar only works once
我有一个使用此代码的粘性导航栏:
var stickyNavTop = $("#mynavbar").offset().top;
var winheight = $(window).height();
var relation = stickyNavTop / winheight;
function fixNavBar() {
var stickyNav = function(){
var winheight = $(window).height();
var elempos = winheight * relation;
var scrollTop = $(window).scrollTop();
if (scrollTop > elempos) {
$("#mynavbar").addClass('sticky');
$("#logo").animate({opacity: 1}) // <- first animation
} else {
$("#mynavbar").removeClass('sticky');
$("#logo").animate({opacity: 0}) // <- second animation
}
};
stickyNav();
$(window).scroll(function() {
stickyNav();
})
}
fixNavBar();
css:
.sticky {
position: fixed;
width: 100%;
left: 0;
top: 0;
z-index: 100;
}
#logo {
position: absolute;
left: 0px;
opacity: 0;
}
当我只添加第一个动画时它工作正常。当我添加第二个以在向上滚动时将不透明度重置为 0 时,它会在加载页面时立即执行。在这种情况下,徽标始终不可见。
我上传了一个 preview here(最小化 window,直到出现菜单图标;第二个动画被注释掉)
非常感谢...
一月
如果我没理解错的话,您想在顶部滚动位置位于第一个棕色块之后时显示小徽标,否则隐藏它。
每次滚动都会触发一个新的动画,jQuery正在排队所有动画。
要在向上滚动时隐藏徽标,您必须停止所有以前未完成的动画。
if (scrollTop > elempos) {
$("#mynavbar").addClass('sticky');
$("#logo").animate({opacity: 1})
} else {
$("#mynavbar").removeClass('sticky');
$("#logo").stop(true); // Stop all previous animations
$("#logo").animate({opacity: 0})
}
我有一个使用此代码的粘性导航栏:
var stickyNavTop = $("#mynavbar").offset().top;
var winheight = $(window).height();
var relation = stickyNavTop / winheight;
function fixNavBar() {
var stickyNav = function(){
var winheight = $(window).height();
var elempos = winheight * relation;
var scrollTop = $(window).scrollTop();
if (scrollTop > elempos) {
$("#mynavbar").addClass('sticky');
$("#logo").animate({opacity: 1}) // <- first animation
} else {
$("#mynavbar").removeClass('sticky');
$("#logo").animate({opacity: 0}) // <- second animation
}
};
stickyNav();
$(window).scroll(function() {
stickyNav();
})
}
fixNavBar();
css:
.sticky {
position: fixed;
width: 100%;
left: 0;
top: 0;
z-index: 100;
}
#logo {
position: absolute;
left: 0px;
opacity: 0;
}
当我只添加第一个动画时它工作正常。当我添加第二个以在向上滚动时将不透明度重置为 0 时,它会在加载页面时立即执行。在这种情况下,徽标始终不可见。
我上传了一个 preview here(最小化 window,直到出现菜单图标;第二个动画被注释掉)
非常感谢... 一月
如果我没理解错的话,您想在顶部滚动位置位于第一个棕色块之后时显示小徽标,否则隐藏它。
每次滚动都会触发一个新的动画,jQuery正在排队所有动画。 要在向上滚动时隐藏徽标,您必须停止所有以前未完成的动画。
if (scrollTop > elempos) {
$("#mynavbar").addClass('sticky');
$("#logo").animate({opacity: 1})
} else {
$("#mynavbar").removeClass('sticky');
$("#logo").stop(true); // Stop all previous animations
$("#logo").animate({opacity: 0})
}