0

我有一个非常流畅的动画滚动,它会根据您在导航上单击的内容上下移动(感谢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

4

1 回答 1

1

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

这是控制滚动项的位置

 $.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/找到了原始代码

我希望这对你有帮助。

干杯五

于 2012-01-19T10:34:32.680 回答