Как добавить смягчение к плавной прокрутке?

У меня есть этот скрипт, в котором я хотел бы добавить некоторое смягчение, чтобы сделать весь эффект прокрутки немного более плавным:

$('a[href*="#"]')
  .not('[href="#"]')
  .not('[href="#0"]')
  .click(function(event) {
    if (
      location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') 
      && 
      location.hostname == this.hostname
    ) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
      if (target.length) {
        event.preventDefault();
        $('html, body').animate({
          scrollTop: target.offset().top}, 1000,
          function() {
          var $target = $(target);
          $target.focus();
          if ($target.is(":focus")) {
            return false;
          } else {
            $target.attr('tabindex','-1');
            $target.focus(); // Set focus again
          };
        });
      }
    }
  });

Поэтому я выбрал эту строку и добавил 'easeOutExpo', но, к сожалению, это не сработало. Любая идея, что я делаю неправильно?

scrollTop: target.offset().top}, 1000, 'easeOutExpo',

https://jsfiddle.net/3gb4s2af/1/


person rijn251    schedule 13.05.2020    source источник


Ответы (1)


Пожалуйста, включите строку, указанную ниже, после сценария jQuery. это сработало для меня.

<script src='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js'>

ИЛИ: Загрузите собственный jQueryUi с здесь

person hesam rajaei    schedule 13.05.2020
comment
Я уже включил оба, jQuery и jQueryUI. До сих пор не работает - person rijn251; 13.05.2020
comment
rijn251 Я проверил код, который вы отправили, по-видимому, код прерывается перед разделом анимации, для получения дополнительной информации целевой элемент не может быть клонирован, если вы попытаетесь выполнить console.log. - person hesam rajaei; 17.05.2020