请在此处查看JSFiddle:http://jsfiddle.net/jL6d2qp6/
我有一个动画,它应该将#top元素保持在页面顶部的固定位置,除非#login元素在屏幕上。为了控制这个,我使用一个每10ms运行一次的javascript函数并为#top切换css类,当我向下滚动时,它会按预期更新,但是当我尝试向上滚动时,没有任何反应。
有问题的javascript代码:
offScreen = function(id, targetValue)
{
var offset = $("#top").offset();
var w = $(window);
var height = $(id).innerHeight();
var finalOffset = (offset.top + height) - w.scrollTop();
if (finalOffset < targetValue)
{
return true;
}
else
{
return false;
}
}
function updateTopMenu()
{
if (offScreen("#login", 81) === false)
{
if($("#top").hasClass("top-bar-absolute") === false)
{
$("#top").addClass("top-bar-absolute");
console.log("added top-bar-absolute");
}
if($("#top").hasClass("top-bar-fixed") === true)
{
$("#top").removeClass("top-bar-fixed");
console.log("removed top-bar-fixed");
}
}
if(offScreen("#login", 81) === true)
{
if($("#top").hasClass("top-bar-absolute") === true)
{
$("#top").removeClass("top-bar-absolute");
console.log("removed top-bar-absolute");
}
if($("#top").hasClass("top-bar-fixed") === false)
{
$("#top").addClass("top-bar-fixed");
console.log("added top-bar-fixed");
}
}
}
$("#top").ready( function() {
setInterval(updateTopMenu, 10);
});
此外,如果有更好的方法来实现这一目标,我会喜欢它,因为这有点像是一种欺骗。