我正在尝试实现一个浮动在页面右下角的“go to top”按钮。我可以使用以下代码执行此操作,但我不希望此按钮进入我的页面的页脚。当用户将页面向下滚动到页面底部时,如何阻止它进入页脚并停留在页面顶部?
CSS
#to-top {
position: fixed;
bottom: 10px;
right: 10px;
width: 100px;
padding: 5px;
border: 1px solid #ccc;
background: #f7f7f7;
color: #333;
text-align: center;
cursor: pointer;
display: none;
}
的JavaScript
$(window).scroll(function() {
if($(this).scrollTop() != 0) {
$('#to-top').fadeIn();
} else {
$('#to-top').fadeOut();
}
});
$('#to-top').click(function() {
$('body,html').animate({scrollTop:0},"fast");
});
HTML
<div id="to-top">Back to Top</div>
修改 下面是它应该是什么样子的图。黑色垂直矩形是滚动条。 “返回顶部”按钮不应进入页脚区域。
这是jsfiddle。
答案 0 :(得分:2)
解决方案比我想象的要复杂得多。这是我的解决方案。
它使用此function来检查页脚是否在屏幕上可见。如果是,则将带有position: absolute
的按钮放在div中。否则,它使用position: fixed
。
function isVisible(elment) {
var vpH = $(window).height(), // Viewport Height
st = $(window).scrollTop(), // Scroll Top
y = $(elment).offset().top;
return y <= (vpH + st);
}
$(window).scroll(function() {
if($(this).scrollTop() == 0) {
$('#to-top').fadeOut();
} else if (isVisible($('footer'))) {
$('#to-top').css('position','absolute');
} else {
$('#to-top').css('position','fixed');
$('#to-top').fadeIn();
}
});
<强> jsfiddle 强>
答案 1 :(得分:1)
增加bottom: 10px;
的值,而不是页脚的高度。
我现在看到了你的截图,只是添加了一些填充底部。
答案 2 :(得分:1)
$(document).ready(function(){
$(window).scroll(function(){
btnBottom = $(".btt").offset().top + $(".btt").outerHeight();
ftrTop = $(".footer").offset().top;
if (btnBottom > ftrTop)
$(".btt").css("bottom", btnBottom - ftrTop + $(".btt").outerHeight());
});
});
你忘了给z-index
,这会阻止它出现在最前面!
z-index: 999;
或者,如果它与页面的页脚重叠,则可以增加坐标。
bottom: 50px;
你的问题仍然不明确,“阻止它进入页脚”。它重叠吗?