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を学習している最中なので、皆さんの忍耐に感謝し、あなたのコメントを聞くのを楽しみにしています。

よろしくお願いします。

編集:ここに私のテストサイトがあります:テスト

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>

ボディセクションの対応するナビゲーション:

 <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

于 2012-01-19T10:34:32.680 に答える