llgruff
@llgruff
Scala

Как изменить код кнопок «Вверх», «Вниз», чтобы регулировать скорость прокрутки?

Раньше на сайте использовался код, который позволял прокручивать ("возвращать") страницу только вверх :
$(document).on("scroll",function(){
	$("#up").css("opacity",(parseFloat(($(document).scrollTop()-300)/3000)));});
	$("body").on("click","#up",function(){
	$('body, html').animate({scrollTop:0},800);return false;
});


Решил воспользоваться решение с сайта learn.javascript.ru/task/knopka-vverh-vniz:
$(document).on("scroll",function(){
$("#updown").css("opacity",(parseFloat(($(document).scrollTop()-300)/3000)));});
var updownElem = document.getElementById('updown');
var pageYLabel = 0;
updownElem.onclick = function() {  var pageY = window.pageYOffset || document.documentElement.scrollTop;
  switch(this.className) {
	case 'up':
	  pageYLabel = pageY;
	  window.scrollTo(0, 0);
	  this.className = 'down';
	  break;
	case 'down':
	  window.scrollTo(0, pageYLabel);
	  this.className = 'up';
}}
window.onscroll = function() {
  var pageY = window.pageYOffset || document.documentElement.scrollTop;
  var innerHeight = document.documentElement.clientHeight;
  switch(updownElem.className) {
	case '':
	  if (pageY > innerHeight) {updownElem.className = 'up';}
	  break;
	case 'up':
	  if (pageY < innerHeight) {updownElem.className = '';}
	  break;
	case 'down':
	  if (pageY > innerHeight) {updownElem.className = 'up';}
	  break;
}}


Теперь при нажатии кнопок "вверх", "вниз" страница резко перескакивает.
Как изменить код, чтобы можно было установить плавную скорость прокрутки?
Благодарю за ответ.
  • Вопрос задан
  • 1190 просмотров
Решения вопроса 1
@kejinzo
Java Developer
На место window.scrollTo(0, 0) вставить $('body, html').animate({scrollTop:0},800);return false;}).

Если листаем вниз, то не 0, а pageYLabel на сколько я понял.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
А при чем здесь тег WordPress?
Ответ написан
Комментировать
deenween
@deenween
Laravel
у тебя две кнопки. вниз и вверх.
заменит это js код на простой, с Jquery.

function down(){
    
$('html, body').animate({ scrollTop: $("#footer").offset().top }, 500); 
}

function up(){
    
$('html, body').animate({ scrollTop: 0 }, 500); 
}


Jquery - магия)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы