2015-08-24 3 views
9

Im пытается использовать scroll-spy, чтобы добавить активный класс к ul li на прокрутке на одну страницу и липкий nav, по какой-то неизвестной причине я не могу получить эту работу с помощью - в моем проект. Ниже приводится расположение моего меню:HTML Bootstrap 3 не добавляет активный класс в UL LI

<body id="page-top" data-spy="scroll" data-target=".navbar-fixed-top"> 
<nav class="navbar navbar-default navbar-fixed-top my-nav" role="navigation"> 
    <div class="container_full height"> 
     <div class="navbar-header page-scroll height"> 
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"> 
       <span class="sr-only">Toggle navigation</span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
      <div class="logo-holder"> 
      <img class="" src="img/logo-p.png"/> 
      <span> 
       <a class="page-scroll" href="#home-page">xxxxxx</a> 
       <i>xxxxxxx</i> 
      </span> 
      </div> 
     </div> 
     <div class="collapse navbar-collapse navbar-ex1-collapse height"> 
      <ul class="nav navbar-nav height"> 
       <li class="hidden"> 
        <a class="page-scroll" href="#page-top"></a> 
       </li> 
       <li> 
        <a class="page-scroll" href="#home-page">item1</a> 
       </li> 
       <li> 
        <a class="page-scroll" href="#item2">item2</a> 
       </li>     
       <li> 
        <a class="page-scroll" href="#item3">item3</a> 
       </li> 

       <li> 
        <a class="page-scroll" href="#item4">item4</a> 
       </li> 
      </ul> 
      </div> 
     </div> 
    </div> 
</nav> 
<div class="container_full" id="site"> 
<section class="parallax"> 
<!-- HOME PAGE DISPLAY --> 
    <div id="home-page" class="home-g height-650"> 
     <div class="parallax-layer parallax-back height-650" > 
      <div class="home"> 
      </div> 
      //many divs css parallax-- 

СЧ расслоения плотного файл ниже:

$('.parallax').scroll(function() { 

if ($('.parallax').scrollTop() > 100) { 
    $(".navbar-fixed-top").addClass("top-nav-collapse"); 
    $(".my-nav").addClass("nav-resize"); 



} else { 

    $(".navbar-fixed-top").removeClass("top-nav-collapse"); 
    $(".my-nav").removeClass("nav-resize"); 
    $(".moveLogo").removeClass("moveLogo-resize"); 
} 
}); 


$(function() { 
$('a.page-scroll').bind('click', function(event) { 
    var $anchor = $(this); 
    var position = $($anchor.attr('href')).offset().top + $('.parallax').scrollTop() ; 

    $('html,body,.parallax').stop().animate({ 
     scrollTop: position 
    }, 1500, 'easeInOutExpo'); 

    event.preventDefault(); 
    }); 
}); 

Если я должен был использовать вышеупомянутый метод без параллакса дивы и т.д., это будет работать без каких-либо проблем, но на данный момент класс li активен всегда на последний элемент li при прокрутке страницы.

enter image description here

зеленый = прокручивать-состоянии содержимое внутри родительского контейнера «Синий», зеленый дивы являются целевой идентификаторы.

.blue{ 
    height:100%; 
    width:100%; 
    overflow:hidden; 

} 

.green // Has many divs 

Я пробовал очевидное, чтобы нацелить зеленые> divs, но он, похоже, не работает.

+1

Как насчет создания jsfiddle? Это может помочь вам помочь – Subash

+0

Я не понимаю, вы, похоже, не используете функцию 'scrollspy' Boostrap? – joshhunt

+0

Из того, что я прочитал в документах, меня ограничивает только относительное позиционирование. Поскольку параллакс использует абсолютное позиционирование, мне нужно будет создать скрипт для обнаружения div и поместить класс ul li по мере необходимости. В это время js скрипка будет длительной. – Careen

ответ

2

Ваш код не дал достаточно, чтобы уйти, поэтому я добавил серию divs, которые имеют высоту 1000 пикселей и имеют разные цвета фона - все они соответствуют идентификаторам вашего навигационного меню - работает шпионский шпион. Возможно, у вас просто недостаточно содержимого для прокрутки или неправильной реализации идентификаторов?

Обратите внимание, что я также с использованием последних версий Bootstrap и JQuery ...

Check the fiddle

<!DOCTYPE html> 
    <html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
     <title></title> 
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"> 
     <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"> 
     <!--[if lt IE 9]> 
      <script src="//oss.maxcdn.com/libs/html5shiv/r29/html5.min.js"></script> 
      <script src="//oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> 
     <![endif]--> 
    </head> 
    <body> 


<body id="page-top" data-spy="scroll" data-target=".navbar-fixed-top"> 
<nav class="navbar navbar-default navbar-fixed-top my-nav" role="navigation"> 
    <div class="container_full height"> 
     <div class="navbar-header page-scroll height"> 
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"> 
       <span class="sr-only">Toggle navigation</span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
      <div class="logo-holder"> 

      <span> 
       <a class="page-scroll" href="#home-page">xxxxxx</a> 
       <i>xxxxxxx</i> 
      </span> 
      </div> 
     </div> 
     <div class="collapse navbar-collapse navbar-ex1-collapse height"> 
      <ul class="nav navbar-nav height"> 
       <li class="hidden"> 
        <a class="page-scroll" href="#page-top"></a> 
       </li> 
       <li> 
        <a class="page-scroll" href="#home-page">item1</a> 
       </li> 
       <li> 
        <a class="page-scroll" href="#item2">item2</a> 
       </li>     
       <li> 
        <a class="page-scroll" href="#item3">item3</a> 
       </li> 

       <li> 
        <a class="page-scroll" href="#item4">item4</a> 
       </li> 
      </ul> 
      </div> 
     </div> 
    </div> 
</nav> 
<div class="container_full" id="site"> 
<section class="parallax"> 
<!-- HOME PAGE DISPLAY --> 
    <div id="home-page" class="home-g height-650"> 
     <div class="parallax-layer parallax-back height-650" > 
      <div class="home"> 
      </div> 
      <div style="height:1000px; background:pink"></div> 
     </div> 
    </div> 

    <div id="item2" class="home-g height-650"> 
     <div class="parallax-layer parallax-back height-650" > 
      <div class="home"> 
      </div> 
      <div style="height:1000px; background:red"></div> 
     </div> 
    </div> 

    <div id="item3" class="home-g height-650"> 
     <div class="parallax-layer parallax-back height-650" > 
      <div class="home"> 
      </div> 
      <div style="height:1000px; background:green"></div> 
     </div> 
    </div> 


     <script src="http://code.jquery.com/jquery.js"></script> 
     <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> 
<script> 

</script> 
    </body> 
</html> 
+0

Это была проблема, над которой я наблюдал, поэтому вы можете получить щедрость из-за своих усилий, спасибо за интерес. – Careen

Смежные вопросы