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

17

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

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

4 ответа

28

Вы можете рассчитать процент текущей позиции полосы прокрутки, используя 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
источник
8

Да, я видел это несколько раз. Вот несколько 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
источник
2

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

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