Почему моя плавная прокрутка не плавная?

Я использую следующий код для плавной прокрутки довольно большого документа:

$("html, body").animate({
scrollTop: $('#article').offset().top + $('#article').outerHeight(true)
}, 500);

Я считаю, что это потому, что он охватывает слишком большое расстояние. В небольших статьях (т. е. в случаях, когда div #article занимает меньшую высоту) он плавно прокручивается. Есть ли динамический способ настроить время прокрутки, чтобы избежать прерывистого отображения, или есть какое-то другое решение?


person COMisHARD    schedule 05.12.2015    source источник
comment
вы всегда можете использовать этот пакет npm   -  person Theia    schedule 02.04.2018


Ответы (1)


Вы можете попробовать простое уравнение между высотой статьи и продолжительностью... например, вы можете установить продолжительность следующим образом... или изменить ее в соответствии с вашими потребностями.

//this is just for example
var duration = ($('#article').outerHeight(true) / 100) * 500 ;
//or
//var duration = (($('#article').offset().top + $('#article').outerHeight(true)) / 100) * 500 ;

$("html, body").animate({
scrollTop: $('#article').offset().top + $('#article').outerHeight(true)
}, duration);

Рабочая демонстрация .. измените высоту статьи в css, чтобы увидеть эффект

person Mohamed-Yousef    schedule 05.12.2015