【问题标题】:Fade out 'scroll to top' button when you're 100px off the bottom of the page当您离开页面底部 100 像素时,淡出“滚动到顶部”按钮
【发布时间】:2025-11-22 23:50:02
【问题描述】:

我正在使用我在网上找到的一个简单的 jquery“滚动到顶部”插件,它运行良好。但是,当我离开页面底部 100 像素时,我想淡出“滚动到顶部”按钮。任何人都可以帮忙吗?这是一个小提琴 - https://jsfiddle.net/p1em9gph/

//Check to see if the window is top if not then display button
$(window).scroll(function(){
    if ($(this).scrollTop() > 100) {
        $('.scrollToTop').fadeIn();
    } else {
        $('.scrollToTop').fadeOut();
    }
});

//Click event to scroll to top
$('.scrollToTop').click(function(){
    $('html, body').animate({scrollTop : 0},800);
    return false;
});
<a href="#" class="scrollToTop">Scroll To Top</a>

【问题讨论】:

  • 想知道为什么它被关闭了。不用担心,当它恢复时告诉我。谢谢

标签: javascript jquery css


【解决方案1】:

您需要修改比较scrollTop() 为文档高度减去窗口高度减去100px 距离的逻辑。试试这个:

//Check to see if the window is top if not then display button
$(window).scroll(function() {
    if ($(this).scrollTop() > $(document).height() - $(window).height() - 100) {
        $('.scrollToTop').fadeIn();
    } else {
        $('.scrollToTop').fadeOut();
    }
});

Working example

更新

从下面的 cmets 看来,您只希望 div 在滚动距顶部或底部 100 像素时显示,在这种情况下,请尝试以下操作:

$(window).scroll(function() {
    if ($(this).scrollTop() < 100 || $(this).scrollTop() > $(document).height() - $(window).height() - 100) {
        $('.scrollToTop').fadeOut();
    } else {
        $('.scrollToTop').fadeIn();
    }
});

Working example

【讨论】:

  • 嗨@Rory,感谢您的回答。当我点击页面底部时,我可以看到您的示例淡入“滚动到顶部”按钮,但是我希望当您从标题滚动 100 像素时出现“滚动到顶部”按钮,然后在关闭 100 像素时消失页面底部。我希望这是有道理的。
  • 啊,我误解了逻辑。这有点奇怪,因为当您已经在顶部时,滚动到顶部按钮是可见的。话虽如此,您只需将上面代码中的&gt; 更改为&lt;
  • 谢谢罗里。是的,这听起来很奇怪,但在上下文中它是有道理的。基本上我希望“滚动到顶部”按钮只出现在我的文章正文中,我不希望它出现在页眉或页脚(它目前正在做的)上。我改变了 并且效果很好......除了当你回到标题时它不会淡出。谢谢你的帮助。真的很感激!
  • 好的,所以您只想滚动到距离顶部或底部 100 像素时可见的顶部?如果是这样:jsfiddle.net/ro4wyox9/1
  • 完美!谢谢罗里!