2017-09-02 13 views
4

Bootstrap 4.0を使用して簡単なランディングページを作成し、このページでScrollSpyを使用していますが、動作させることができません。Bootstrap 4.0 scrollscyが動作しない、アクティブなメニュー項目を変更しない

のindex.html -

<body> 

<!-- Navbar --> 
<nav id="main-nav" class="navbar navbar-expand-lg bg-light bg-transparent fixed-top"> 
    <div class="container"> 

     <a class="navbar-brand" href="#"><!-- some logo --></a> 

     <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> 
      <span class="navbar-toggler-icon"></span> 
     </button> 

     <div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent"> 
      <ul class="navbar-nav"> 
       <li class="nav-item"><a class="nav-link" href="#header">Home</a></li> 
       <li class="nav-item"><a class="nav-link" href="#book">About Book</a></li> 
       <li class="nav-item"><a class="nav-link" href="#author">About Author</a></li> 
       <li class="nav-item"><a class="nav-link" href="#inspire">Inspire</a></li> 
      </ul> 
     </div> 

    </div> 
</nav> 

<!-- Header --> 
<header id="header" class="header"> 
    <!-- some content --> 
</header> 

<!-- About book --> 
<section id="book" class="book py-5"> 
    <!-- some content --> 
</section> 

<!-- About author --> 
<section id="author" class="author py-5"> 
    <!-- some content --> 
</section> 

<!-- Inspire --> 
<section id="inspire" class="author py-5"> 
    <!-- some content --> 
</section> 

<!-- JavaScript --> 
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script> 
<script src="js/bootstrap.min.js"></script> 
<script src="js/main.min.js"></script> 
</body> 

私は私のstyle.cssファイルにbody{postsition: relative}を持っています。

main.js -

$(document).ready(function() { 

    // Scroll spy 
    $('body').scrollspy({ 
     target: "#main-nav", 
     offset: 70 
    }); 

    // Navbar fade 
    changeNavbar(); 

    $(window).scroll(function() { 
     changeNavbar(); 
    }); 

    function changeNavbar() { 
     var navbar = $("#main-nav"); 
     if ($(this).scrollTop() >= 100) { 
      navbar.addClass("bg-light").removeClass("bg-transparent"); 
     } else if ($(this).scrollTop() < 100) { 
      navbar.removeClass("bg-light").addClass("bg-transparent"); 
     } 
    } 
}); 

私は任意の助けが理解されるであろう、多くのことを探索したがいずれかの解決策を取得していない、まだ数時間を無駄にしました。

ありがとうございます。

答えて

1

ScrollSpyコンポーネントはnav-itemactiveクラスを適用していますが、navbarにはnavbar-lightクラスがないため表示されません。

だから、
.navbar-light .navbar-nav .nav-link.active { 
    color: rgba(0, 0, 0, 0.9); 
} 

、ちょうどこのようnavbar-lightクラスを追加します:

<nav id="main-nav" class="navbar navbar-expand-lg navbar-light bg-light bg-transparent fixed-top"> 
</nav> 

デモ:https://www.codeply.com/go/ic6Md3e4y1スタイル(暗いテキストの色)を適用

ザ・ブートストラップ4 CSSセレクタはこれです

関連する問題