Изменение позиции полосы прокрутки

18

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

    
задан alan 08.08.2009 в 05:20
источник

4 ответа

30

Вы можете рассчитать процент текущей позиции полосы прокрутки, используя onscroll , и если он достигает 50%, положение прокрутки может быть установлено в верхней части страницы с помощью функции scrollTo :

window.onload = function () { 
  window.onscroll = function () { 
    var doc = document.body, 
    scrollPosition = doc.scrollTop,
    pageSize = (doc.scrollHeight - doc.clientHeight),
    percentageScrolled = Math.floor((scrollPosition / pageSize) * 100); 

     if (percentageScrolled >= 50){ // if the percentage is >= 50, scroll to top
       window.scrollTo(0,0); 
     } 
   }; 
};

Вы можете проверить мой пример здесь .

    
ответ дан CMS 08.08.2009 в 05:57
источник
  • @CMS: Отличный ответ! –  Josh 08.08.2009 в 16:47
  • window.scrollTo (0,0); не работает для меня в chomre –  SuperUberDuper 24.05.2016 в 11:54
9

Да, я видел это несколько раз. Вот несколько JS-кода:

window.scrollBy(0,50)

50 - количество пикселей, которые вы хотите прокрутить.

    
ответ дан thedayturns 08.08.2009 в 05:24
источник
4

Три функции прокрутки, которые вы хотите затронуть, - это window.scroll(x,y) , window.scrollBy(dx,dy) и window.scrollTo(x,y) .

Как сказал Дэвид, вам понадобится позиция прокрутки, чтобы узнать, где вы находитесь, и использовать событие window.onscroll , чтобы сбить этот расчет.

    
ответ дан Eric Wendelin 08.08.2009 в 05:32
источник
  • Доступны ли они во всех браузерах или требуется некоторое обнаружение функции? –  Graham Lea 04.10.2011 в 02:32
2

(window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop) должен предоставить вам текущую позицию прокрутки практически в любом браузере.

    
ответ дан David 08.08.2009 в 05:29
источник