2017-06-09 4 views
0

私は2つのdivを持っています。ページの上部セクションを含むもの。もう1つはトップdivのすぐ下にあります。この2番目のdivは、ページの約1.5ビューポートです。しかし、私はしようとし、ナビゲーションボタンが押されたときに、ページを2番目のdivにスクロールさせます。それは私をページの先頭に連れて行きます。たとえそれが第2のdivのscrollTop属性を参照しているとしても。divがページのさらに下にあるにもかかわらずscrollTopが0に等しい

+0

https://gyazo.com/b6cf7f9621d29a7620a6fbcfcea06a1fこれは開発者向けのツールのスクリーンショットです。 divのscrollTopがページの先頭にないにもかかわらず0であると言います... – Born2EditHD

+0

[$(document).scrollTop()の重複は常に0を返します(https://stackoverflow.com/questions/ 12788487/document-scrolltop-always-returns-0) – doutriforce

+0

https://gyazo.com/b6935f99b658c96e54f30df80faeefbcこれは、私が話した「第2のdiv」であるparallax2を乗り越えた私のGIFです。あなたが見ることができるように、それはページの上部にないので、scrollTopを0にするべきではありません。 – Born2EditHD

答えて

0

scrollTopは常に0の位置になります。別のdivにスクロールする場合は、オフセットを使用してハッシュ位置までスクロールする必要があります。ブートストラップを使用している場合は、そのためにScrollSpyを使用できます。そうでない場合は、このコードを使用してハッシュ位置へスムーズにスクロールすることができます。

ハッシュはdivのIDにする必要があります。このIDは、ボタン/リンクのスクロール先のdivのIDと一致するように、ボタン/リンクのhrefを設定することでターゲットになります。

だから、あなたのリンクは次のようになります。

<a href="#somediv">Some Link</a> 

そして、あなたのdiv要素は次のようになります。

<div class="someclass" id="somediv"></div> 

そして、これは正しい位置にスクロールを処理するJS:

// Select all links with hashes 
$('a[href*="#"]') 
    // Remove links that don't actually link to anything 
    .not('[href="#"]') 
    .not('[href="#0"]') 
    .click(function(event) { 
    // On-page links 
    if (
     location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') 
     && 
     location.hostname == this.hostname 
    ) { 
     // Figure out element to scroll to 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); 
     // Does a scroll target exist? 
     if (target.length) { 
     // Only prevent default if animation is actually gonna happen 
     event.preventDefault(); 
     $('html, body').animate({ 
      scrollTop: target.offset().top -80 
     }, 1000, function() { 
      // Callback after animation 
      // Must change focus! 
      var $target = $(target); 
      $target.focus(); 
      if ($target.is(":focus")) { // Checking if the target was focused 
      return false; 
      } else { 
      $target.attr('tabindex','-1'); // Adding tabindex for elements not focusable 
      $target.focus(); // Set focus again 
      }; 
     }); 
     } 
    } 
    }); 
+0

未定義のプロパティ 'top'を読み取ることはできません。 – Born2EditHD

+0

jQueryを使用していますか?申し訳ありません - このソリューションにはjQueryが必要だと言いました。 – Korgrue

+0

https://gyazo.com/929adadba37e90537668b013e4ecab2d私はこれを行うには何をしたいのですか? 3 – Born2EditHD

関連する問題