平滑滚动结束定位

时间:2012-01-17 17:30:56

标签: javascript jquery html scroll smooth-scrolling

我有一个漂亮的流畅动画卷轴,根据你点击导航的内容而上下移动(感谢CSS-Tricks!)。现在这一切都运行良好,但我有一个导航器,它粘在浏览器窗口的顶部,当它向下滚动时会阻碍部分标题。我不能为我的生活找到任何可能有类似问题的人,似乎是一个非常简单的功能。

这是我粘贴到HTML中的JS:

<script type="text/javascript">
$(document).ready(function() {
  function filterPath(string) {
  return string
    .replace(/^\//,'')
    .replace(/(index|default).[a-zA-Z]{3,4}$/,'')
    .replace(/\/$/,'');
  }
  var locationPath = filterPath(location.pathname);
  var scrollElem = scrollableElement('html', 'body');

   $('a[href*=#]').each(function() {
    var thisPath = filterPath(this.pathname) || locationPath;
    if (  locationPath == thisPath
    && (location.hostname == this.hostname || !this.hostname)
    && this.hash.replace(/#/,'') ) {
      var $target = $(this.hash), target = this.hash;
      if (target) {
        var targetOffset = $target.offset().top;
        $(this).click(function(event) {
          event.preventDefault();
          $(scrollElem).animate({scrollTop: targetOffset}, 800, function() {
            location.hash = target;
          });
        });
      }
    }
  });

  // use the first element that is "scrollable"
  function scrollableElement(els) {
    for (var i = 0, argLength = arguments.length; i <argLength; i++) {
      var el = arguments[i],
          $scrollElement = $(el);
      if ($scrollElement.scrollTop()> 0) {
         return el;
      } else {
        $scrollElement.scrollTop(1);
        var isScrollable = $scrollElement.scrollTop()> 0;
        $scrollElement.scrollTop(0);
        if (isScrollable) {
          return el;
        }
      }
    }
    return [];
  }

});</script>

所以我正在学习JS和JQuery,所以我感谢每个人的耐心,并期待听到你的意见。

非常感谢提前。

编辑:这是我的测试网站:test

1 个答案:

答案 0 :(得分:1)

获取jquery.scrollTo.js的副本 来自http://flesler.blogspot.com/2008/09/jqueryscrollto-14-released.html

这是控制滚动项目位置的原因

 $.scrollTo( 0, 500); 
如果你设置了更高的数字,那么0会占据页面的顶部 它会降低你的页面,在我的例子中我有5个部分我想滚动到。根据需要进行更改。

我在头部使用了这个:

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>


 <script type="text/javascript" src="javascripts/jquery.scrollTo.js"></script>
 <script type="text/javascript">
 $(document).ready(function()
 {
 // scroll to top
 $('a.topOfPage').click(function(){
 $.scrollTo( 0, 500);
 return false;
 });
 // scroll to top
 $('a.twoOfPage').click(function(){
 $.scrollTo( 570, 500);
 return false;
 });
 // scroll to top
 $('a.threeOfPage').click(function(){
 $.scrollTo( 1175, 500);
 return false;
 });
 // scroll to top
 $('a.fourOfPage').click(function(){
 $.scrollTo( 1790, 500);
 return false;
 });
 // scroll to top
 $('a.fiveOfPage').click(function(){
 $.scrollTo( 2385, 500);
 return false;
 });
 });
 </script>

在body部分对应nav:

 <ul class="pagination">

   <li><a href="" class="topOfPage">1</a></li>
   <li><a href="" class="twoOfPage">2</a></li>
   <li><a href="" class="threeOfPage">3</a></li>
   <li><a href="" class="fourOfPage">4</a></li>
   <li><a href="" class="fiveOfPage">5</a></li>

 </ul>  

如果您需要更多参考,我会找到原始代码 http://nick.boldison.com/websites/jquery/jquery-scroll-to-top-animation-scrollto-plugin/

我希望能帮助你。

干杯 V