我有一个浮动菜单(绝对定位),当用户向下滚动页面时,它保持在视图中,问题是我有一个相当大的页脚,如果你一直滚动到页面底部它将与页脚。
我只是想让它停止从页面底部说400px ..有谁知道这是否可以做到?
以下是代码:
var name = "#about";
var menuYloc = null;
$(document).ready(function(){
menuYloc = parseInt($(name).css("top").substring(0,$(name).css("top").indexOf("px")))
$(window).scroll(function () {
var offset = menuYloc+$(document).scrollTop()+"px";
$(name).animate({top:offset},{duration:500,queue:false});
});
});
提前致谢!
赖安
答案 0 :(得分:3)
需要计算“页脚”的可见程度,然后将#about放在页脚上方,这样它就不会隐藏它。我认为以下代码应该可以解决问题:
var name = "#about";
var menuYloc = null;
var footer = '#yourFooterId'; //Specify the ID for your footer.
$(document).ready(
function()
{
menuYloc = parseInt($(name).css("top").substring(0,$(name).css("top").indexOf("px")))
$(window).scroll(
function()
{
var offset = menuYloc + $(document).scrollTop();
var anotherOffset = offset;
var docTop = $(window).scrollTop();
var footerTop = $(footer).offset().top;
var maxOffset = footerTop - $(name).height() - 20;
var minOffset = docTop;
offset = offset > maxOffset ? maxOffset : offset;
offset = offset < minOffset ? minOffset : offset;
$(name).animate({top:offset + 'px'},{duration:500,queue:false});
}
);
}
);
编辑1:
修正了上述代码中的错误。它现在应该工作。
编辑2:
更新了演示代码,它应该适用于所有浏览器。 [早期的演示代码有'console.log'调用,如果你不使用Firefox可能会失败]
编辑3:
通过计算最小偏移量确保浮动菜单始终可见。
这就是演示的样子:
红色浮动div将始终保持在页脚上方,而绿色浮动div没有应用此类逻辑。
答案 1 :(得分:1)
尝试这样的事情(未经测试):
var name = "#about";
var menuYloc = null;
$(document).ready(function(){
var menu = $(name);
menuYloc = parseInt(menu.css("top").substring(0,menu.css("top").indexOf("px")));
var height = parseInt( menu.attr( 'offsetHeight' ) + ( parseInt( menu.css( 'marginTop' ) ) || 0 ) + ( parseInt( menu.css( 'marginBottom' ) ) || 0 ) );
var footerYLoc = $('#footer').offset().top;
$(window).scroll(function () {
var offset = menuYloc+$(document).scrollTop();
if ( (offset + height) >= footerYloc) offset = footerYloc - height;
menu.animate({top:offset+"px"},{duration:500,queue:false});
});
});