Блог для вебмастеров и разработчиков
02 ноября 2016, 19:13

Плавная прокрутка до якоря на JQuery

Плавный якорь jquery

Нужно сделать плавную прокрутку для якоря, при нажатии на ссылку или какой-либо блок, без проблем! Для этого есть простой готовый скрипт, который достаточно вставить на страницу и наслаждаться его работой.

Скрипт плавного перехода к якорю

$(document).ready(function(){
    $('a[href^="#"], *[data-href^="#"]').on('click', function(e){
        e.preventDefault();
        var t = 1000;
        var d = $(this).attr('data-href') ? $(this).attr('data-href') : $(this).attr('href');
        $('html,body').stop().animate({ scrollTop: $(d).offset().top }, t);
    });
});

Описание работы скрипт для плавной прокрутка страницы до якоря

Данный скрипт требует наличия подключенной библиотеки jquery на странице.

Этот скрипт нужно вставить на страницу в любое место, главное требование, он должен находится ниже места подключения библиотеки jquery.

В скрипте можно указать скорость прокрутки до якоря var t = 1000;, меняем 1000 на нужное нам значение, 1000 равно 1 секунде.

Скрипт плавной прокрутки также будет работать не только при нажатие на ссылку, можно добавить любому блоку атрибут data-href="#idBlock" и тогда при клике на данный блок произойдет плавная прокрутка до якоря, как и по ссылке.
Комментарии ()
  1. ди ди 27 сентября 2017, 14:29 #
    Помогло, работает, спасибо.
    Есть небольшой дополнительный вопрос, как сделать так, что бы прокрутка происходила не до якоря, а скажем на 100px выше него, т.к. меню фиксированное и получается закрывает заголовок(якорь)
    1. AlexRas AlexRas 18 октября 2017, 08:26 #
      Для этого нужно добавить:
      $('html,body').stop().animate({ scrollTop: $(d).offset().top - 100 }, t);
    2. mery mery 18 ноября 2017, 21:02 #
      спасибо )
      1. Алексей Алексей 12 апреля 2018, 16:15 #
        Пасиб)
        1. Mansolide Mansolide 25 мая 2018, 20:00 #
          У меня так же не большой вопрос, взял версию где скролл с отступом top — 100, у меня тоже есть фиксированный блок в хидере в но в десктопе и мобильной версии по высоте он разный, так задумано, следовательно нужна разная высота. Не могли бы вы дополнить условие и для мобильной версии.

          Например в десктопе -> top — 100, а в мобильной версии после 769рх -> top — 150.
          1. Руслан Руслан 12 января 2019, 20:53 #
            Перепробовал кучу вариантов, но помог только этот!!! Спасибо большое!
            1. Андрей Андрей 19 февраля 2021, 16:24 #
              Здравствуйте! Спасибо за скрипт! Прекрасно работает! Есть вопрос: как сделать, чтобы скрипт срабатывал только для ссылок, находящихся в определённой области?
              Добавить комментарий