【问题标题】:Stopping "Back to Top Button" before footer在页脚之前停止“返回顶部按钮”
【发布时间】:2013-10-20 02:11:18
【问题描述】:

我有这个代码:

        $(function() {
// cache scroll to top button
var b = $('#back-top');
// Hide scroll top button
b.hide();
// FadeIn or FadeOut scroll to top button on scroll
$(window).on('scroll', function(){
    // if you scroll more then 400px then fadein goto top button
    if ($(this).scrollTop() > 500) {
        b.fadeIn();
    // otherwise fadeout button
    } else {
        b.fadeOut();
    }

});
// Animated smooth go to top
b.on('click', function(){
    $('html,body').animate({
        scrollTop: 0
    }, 2000 );
    return false;
});
$('#back-top').)
});

一切都很好,但是我找不到在按钮到达页脚之前停止滚动的解决方案。:( 我希望这里有人能解决我的问题!? 任何帮助或建议都会非常有帮助! 谢谢!

更新:

好吧,我来了!! 我用新代码更新了小提琴:http://jsfiddle.net/q8DUC/6/
我实现了一条线,可以平滑滚动到每个 href="#" 及其工作!
但是我仍然有返回顶部元素滚动到页脚的老问题!我会提出任何想法或帮助使背景在页脚之前停止!谢了!!



26/10/14 更新:

更进一步:http://jsfiddle.net/q8DUC/20/
只是不知道如何避免按钮的跳跃!
有没有办法将按钮粘贴到底部而不是顶部:0?

一如既往地感谢每一个建议或帮助!

【问题讨论】:

  • 可以加个jsfiddle吗?
  • 是的。 jsfiddle.net/q8DUC 不知何故动画不工作,但你可以看到按钮滚动到页脚...
  • 我快到了!!我用新代码更新了小提琴:jsfiddle.net/q8DUC/6 我实现了一条线,可以平滑滚动到每个 href="#" 及其工作!但是我仍然有后台元素滚动到页脚的老问题!我会提出任何想法或帮助使背景在页脚之前停止!谢了!!

标签: jquery button scroll autoscroll


【解决方案1】:

在您的小提琴中,您使用的是$(window).load(function (),而这里您使用的是$(function()。它不适用于前者。

还有这行$('#back-top').) 在你的代码底部什么都不做。删除它,一切都应该正常。

http://jsfiddle.net/dJfpC/更新小提琴

(我还隐藏了滚动按钮,因此在页面首次加载时它不会淡出)。

【讨论】:

  • 谢谢克里斯!它的工作。我仍然有按钮滚动到页脚的问题!在小提琴“无耻地从堆栈溢出中被盗”。应该是页脚......并且按钮运行到它!对这个问题有什么建议吗?
  • 是的,检查第一个答案。 :)
  • @user2899161 对不起,伙计-我没有正确阅读您的问题。看起来你已经解决了你的问题。如果没有,您可以尝试以下更新的解决方案:jsfiddle.net/djGrZ(在 jsfiddle 中不起作用,但在本地应该可以正常工作)。
  • @Chris 谢谢!我刚试了一下,褪色和过渡效果很好。但是按钮仍然一直向下滚动到页脚..尽管我给出了页脚的高度:(有什么想法我可能做错了吗?
【解决方案2】:

这是您要实现的目标的粗略解决方案。

动画在这里并不完美,但这是你的工作 jsfiddle - http://jsfiddle.net/q8DUC/5/

你应该通过以下方式修改你的函数:

$('#backTop').hide();
$(window).scroll(function(){

 var stop = $('#footer').position().top - $(window).scrollTop();

 var bottomofbutton = $('#backTop').position().top + 100;

var bottom = stop - $('#backTop').height() + 'px';
console.log(bottom);
if ($(window).scrollTop() >100 ){
    $('#backTop').fadeIn();
} else {
$('#backTop').fadeOut();
};

if (stop <= bottomofbutton){
    $('#backTop').css('top',bottom);
} else if (stop >= bottomofbutton){

    $('#backTop').css({'bottom': '100px',
                       'top': ''});
}
});

我还重命名了您的#back-top id,因为 jQuery 似乎无法以这种方式使用它。我改用#backTop。

【讨论】:

  • 感谢马克西姆!老实说,这是我第一次接触 javascript!我可以看到您的解决方案正在运行,但现在淡入/淡出效果消失了。 :( 我不知道如何将您的解决方案添加到我的脚本中!我无法将两个脚本放在一起...对不起!您有机会将您的脚本添加到我的脚本中吗?跨度>
  • 没问题,我更新了 jsfiddle,所以它可以按照你想要的方式工作。希望这次能有所帮助。
  • 我尝试了您的解决方案,但这里的按钮也进入了页面的页脚。 :(但无论如何感谢您的努力!
  • 好的,现在试试,我又更新了,这次我很确定它会按照你想要的方式工作
  • 我刚试过...淡出不起作用..“页脚前停止”也不是。我不知道我做错了什么。使用 Chris 的脚本,除了页脚问题外,一切正常!我可能太业余了,无法完成这项工作......无论如何,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-07-24
  • 2011-12-10
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
相关资源
最近更新 更多