2012-02-19 13 views
5

私はこの他のウェブサイトでこのすばらしい機能を見ましたが、自分で見つけることができません。htmlアンカーリンクをスローダウン

アンカータグのスクロールでページの別の部分へのリンクを作成したいだけでなく、目的のIDにジャンプしたいと思います。私はjavascriptファイルは、おそらくCSSの移行を助けるかもしれないと思うが、私はその移行要素がわからない。

<a href="#bottom">scroll to bottom</a> 

<p id="bottom">bottom</p> 

感謝:)

+0

イムを見ています埋め込まれたコードと私はそれを変更することはできません...しかし、私はあなたが私が意味するものを得ることを確認します。 –

+0

[jQuery.ScrollTo](http://flesler.blogspot.com/2007/10/jqueryscrollto.html) –

+0

どうすれば使用できますか? onclick関数として、このようなidを入れてくださいonclck = "jQuery.ScrollTo(bottom)" –

答えて

6

私はそれを必要とする人々のための私の発見でお答えします前に、誰もが本当にこの質問に答えていないので。

あなたがしなければならないのは、この

<a href="#bottom">scroll to bottom</a> 

<p id="bottom">bottom</p> 

のような通常のアンカーリンクは、このJavaScriptコードを追加して、あなたは何も変更する必要がある場合は、その携帯でJavaScriptのコメント

<script> 
    $(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'); 

     // Any links with hash tags in them (can't do ^= because of fully qualified URL potential) 
     $('a[href*=#]').each(function() { 

      // Ensure it's a same-page link 
      var thisPath = filterPath(this.pathname) || locationPath; 
      if ( locationPath == thisPath 
       && (location.hostname == this.hostname || !this.hostname) 
       && this.hash.replace(/#/,'')) { 

        // Ensure target exists 
        var $target = $(this.hash), target = this.hash; 
        if (target) { 

         // Find location of target 
         var targetOffset = $target.offset().top; 
         $(this).click(function(event) { 

          // Prevent jump-down 
          event.preventDefault(); 

          // Animate to target 
          $(scrollElem).animate({scrollTop: targetOffset}, 400, function() { 

           // Set hash in URL after animation successful 
           location.hash = target; 

          }); 
         }); 
        } 
      } 

     }); 

     // Use the first element that is "scrollable" (cross-browser fix?) 
     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> 
関連する問題