2013-10-21 90 views
4

我有一个“回到顶部”按钮,当用户向下滚动页面时出现。
随着一些帮助,我已成功地实现在下面的代码如下功能:在某一点 褪色向下滚动,动画滚动回顶后和动画滚动到所有HREF =“#”页面的链接。停止DIV滚动一旦它到达页脚(另一个DIV)

$('a[href^="#"]').on('click',function (e) { 
    e.preventDefault(); 

    var target = this.hash, 
    $target = $(target); 

    $('html, body').stop().animate({ 
     'scrollTop': $target.offset().top 
    }, 800, 'swing', function() { 
     window.location.hash = target; 
    }); 
}); 

var $win = $(window); 

$win.scroll(function() { 

    if ($win.scrollTop() > 300) { 
     b.fadeIn(); 
     console.log("fadding in") 
    } 
    else { 
     b.fadeOut(); 
    } 
    }); 

}); 

这里是一个工作exsample:http://jsfiddle.net/q8DUC/8/

我的问题是按钮滚动到页面的页脚... 基本上“回到顶部”应该停止30PX上面的“页脚” DIV。 但我找不到一种方法来实现这一点。我环顾四周,但没有发现任何与现有代码一起工作的东西。

感谢您的任何帮助或建议!

UPDATE:

进一步得到了一点:http://jsfiddle.net/q8DUC/20/
只是不知道我怎样才能避免按钮的跳跃!
有没有办法将按钮粘到底部而不是顶部:0 ???

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

+0

任何人有想法/建议或一段代码!?!? – user2899161

回答

4

我认为你可以得到页脚的位置,并把它添加到您的条件,检查如果按钮应显示:

// dynamically get the position of the footer 
var FOOTER_POSITION = someNumber; 
// i THINK something like var FOOTER_POSITION = $('#T4').position().top; could work 

if (300 < $win.scrollTop() && $win.scrollTop() < FOOTER_POSITION) { 

对不起,我看了你的问题错了,因为你使用固定定位为您的按钮,你可以实现类似:

  1. 得到页脚+ 30PX
  2. 得到一个要价较高的高度有关页脚文件,根据您的提琴〜2000像素(FOOTER_START)
  3. 的离子,如果窗口顶部的位置> 300,它是大于(FOOTER_START)变化#back-topbottom属性的高度你页脚
+0

感谢 - 它是一个非常好的解决方法,让按钮一遇到页脚就立即消失。但它有点错过了“回到顶部”按钮的想法,如果它消失。我需要它停止/成为页脚以上的静态,以便客户可以使用它来回滚到顶部。任何建议如何做到这一点? – user2899161

+0

@ user2899161,不好意思读了你的问题,更新了一些逻辑来帮助解决你的问题! – dm03514

+0

非常感谢@ dm03514! 我的确了解它背后的逻辑。但说实话,我就像一个初学者,直到上周才解决这个问题 - 所以我没有把逻辑变成代码的技巧!此外,该按钮应该在不同长度的页面上工作。您的帮助将被高度赞赏.. Thx! – user2899161

相关问题