Ошибка анимации jquery шаблона Bootstramp

#javascript #jquery #html #css #twitter-bootstrap

#javascript #jquery #HTML #css #twitter-bootstrap

Вопрос:

Я использовал этот шаблон для своего веб-сайтаhttp://www.bootply.com/100702 Но анимированное меню глючит и запаздывает при нажатии на опции меню.

После нажатия на ссылку страница мигает в неправильном положении, а затем отображается анимация.

Я подозреваю, что проблема в этом фрагменте кода:

 /* smooth scrolling for nav sections */
$('#nav .navbar-nav li>a').click(function(){
  var link = $(this).attr('href');
  var posi = $(link).offset().top 20;
  $('body,html').animate({scrollTop:posi},700);
})
  

Этот код требуется для использования задержки между щелчками или другого метода улучшения анимации?

Ответ №1:

Ошибка возникает из-за активации ScrollSpy при прокрутке. Добавить класс spy-activated

 <div class="navbar navbar-custom navbar-inverse navbar-static-top spy-activated" id="nav">
  

Нацелиться на класс

 $('body').scrollspy({ target: '.spy-activated' })
  

Переключение spy-активируется при прокрутке. Не забудьте вручную настроить «активный» класс для li элементов

 /* smooth scrolling for nav sections */
$('#nav .navbar-nav li>a').click(function(){
  $("#nav").removeClass("spy-activated");
  $(this).parent().siblings().each( function(){ $(this).removeClass("active"); });
  $(this).parent().addClass("active");
  var link = $(this).attr('href');
  var posi = $(link).offset().top 20;
  $('body,html').animate({scrollTop:posi},700, function(){
     $("#nav").addClass("spy-activated");
  });
})
  

загрузочный процесс:http://www.bootply.com/YmaEAbUWEf

Ответ №2:

Я обнаружил ошибку в этом коде.

Вам нужно использовать

   e.preventDefault();
  

Чтобы отключить использование раздела по умолчанию.
Правильный код:

 $('#nav .navbar-nav li>a').click(function(e){
  var link = $(this).attr('href');
  var posi = $(link).offset().top;
  e.preventDefault();
  $('body,html').animate({scrollTop:posi},700);
});