Добавление плавной прокрутки к начальной загрузке 4.1 (при использовании scrollspy)? - PullRequest
0 голосов
/ 02 мая 2018

Итак, что я пытаюсь сделать здесь, это использовать функцию scrollspy загрузчика 4.1s в моей панели навигации. Мне удалось заставить это работать. Однако я также хотел бы добавить плавную прокрутку к нему. После поиска по всему интернету мне так и не удалось это исправить.

Вот исходный код, с которым я работаю (такой же, как и при начальной загрузке).

<nav id="navbar-example2" class="navbar navbar-light bg-light">
  <a class="navbar-brand" href="#">Navbar</a>
  <ul class="nav nav-pills">
    <li class="nav-item">
      <a class="nav-link" href="#fat">@fat</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="#mdo">@mdo</a>
    </li>
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
      <div class="dropdown-menu">
        <a class="dropdown-item" href="#one">one</a>
        <a class="dropdown-item" href="#two">two</a>
        <div role="separator" class="dropdown-divider"></div>
        <a class="dropdown-item" href="#three">three</a>
      </div>
    </li>
  </ul>
</nav>
<div data-spy="scroll" data-target="#navbar-example2" data-offset="0">
  <h4 id="fat">@fat</h4>
  <p>...</p>
  <h4 id="mdo">@mdo</h4>
  <p>...</p>
  <h4 id="one">one</h4>
  <p>...</p>
  <h4 id="two">two</h4>
  <p>...</p>
  <h4 id="three">three</h4>
  <p>...</p>
</div>

И вот что я попытался добавить, чтобы включить плавную прокрутку.

      <script>
          $(document).ready(function() {
    $(".nav-item").click(function() {
        var t = $(this).attr("href");
        $('.active').removeClass('active');
        $("html, body").animate({
            scrollTop: $(t).offset().top - 50
        }, {
            duration: 1e3,

        });

        $('body').scrollspy({ target: '#navbar-example2',offset: $(t).offset().top });
        $(this).parent().addClass('active');





        return false;
    });

});



//navbar
var distance = $('#site-header').offset().top,
    $window = $(window);

$window.scroll(function() {
    if ( $window.scrollTop() >= distance ) {
        $('#site-header').addClass('fixed-nav')
    }
    if ( $window.scrollTop() <= distance ) {
        $('#site-header').removeClass('fixed-nav')
    }
});


$('body').scrollspy({ target: '#navbar-example2',offset: 0 });
        </script>

На данный момент я чувствую себя застрявшим и не понимаю, что я делаю неправильно. Потому что я не могу заставить это работать. Я также пытался добавить различные варианты CSS, но я не могу заставить его работать. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 02 мая 2018

Измените селектор jQuery для обработчика кликов на ...

$(".nav-link,.dropdown-item").click(function() {
  ...
});

https://www.codeply.com/go/y0LweX2FBY

Проблема с селектором nav-link заключается в том, что у него нет href, поэтому обработчик щелчков ничего не делает. Кроме того, вы, вероятно, хотите, чтобы Navbar fixed-top не прокручивался при переходе к разделу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...