2016-08-04 4 views
1

Ссылка на jsfiddle - https://jsfiddle.net/dn5t2mwm/3/Почему прокрутка не работает правильно?

$('a.item_link').click(function(){ 
    var hash = this.hash, top = $(hash).offset().top; 
    console.log(hash, top); 
    $('html, body').animate({ 
     scrollTop: top 
    }, 500); 
    return false; 
}); 

Я хочу сделать гладкую прокрутку. Но когда i координаты счета ссылки с якорем, он возвращает разные результаты. Похоже, что он учитывает координаты с начала окна просмотра, а не начало документа. Он работает на codepen, но не работает на локальном и jsfiddle. css отключен. Может быть, вы знаете, что в этом плохого?

+0

'вар хэш = this.hash'? Вероятно, вы имеете в виду 'var hash = this.href' – metal03326

+0

Я не понимаю, что не так ?! В чем проблема? – eisbehr

+0

$ ('html, body'). Aimate ({ scrollTop: top }, 5000); увеличьте время прокрутки. Будет больше smoth –

ответ

0

Используйте этот кусок кода:

$('a[href*="#"]:not([href="#"])').click(function() { 
    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) { 
      $('html, body').animate({ 
       scrollTop: target.offset().top 
      }, 1000); 
      return false; 
     } 
    } 
}); 
+0

он не работает со ссылками внизу. – Adoratus

+0

Это связано с тем, что левая высота страницы меньше площади прокрутки. Это максимум, который он может прокручивать. :) –

+0

Вы получили решение? –

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