prosty skrypt do przewijania zawartości okna. o tyle zaawansowany względem innych skryptów, że przewija z tą samą prędkością niezależnie od posiadanego komputera i używanej przeglądarki
w przeciwieństwie do większości ogólnie dostępnych w internecie skryptów przewijających oparłem się nie na funkcji scrollBy() tylko wykorzystałem funkcję scrollTo() co pozwoliło mi na przewijanie o ułamek piksli w jednostce czasu, a użyłem najmniejszej możliwej jednostki czasu, czyli 1.
wszystko to jest w celu umożliwienia systemu który nazwałem "próbkowaniem" (nie wiem czy to trafna nazwa, ale wydaje mi się, że tak - ale to się okaże za chwilę). przez każde kolejne 10 (słownie dziesięć, nie dwie binarnie :D) jednostki czasu skrypt dokonuje próbkowania przewiniętej przez te dziesięć jednostek czasu ilości piksli, oraz faktycznej ilości czasu ile to zajęło.
po dokonaniu każdej próby obliczana jest faktyczna prędkość przewijania oraz porównywana jest z żądaną prędkością przewijania. jeśli prędkość faktyczna mieści się w granicy błędu, nic nie jest wykonywane. w przeciwnym wypadku obliczana jest proporcja pomiędzy tymi dwoma wartościami i współczynnik prędkości (czyli ilość piksli o ile zostaje przewinięte okno w jednostce czasu) zostaje odpowiednio zmodyfikowany.
wracając jeszcze do długości jednostki czasu - użyłem wartości najmniejszej (1) z dwóch powodów. po pierwsze taka mała jednostka czasu przyspiesza próbkowanie (gdyby była duża, to przy złych ustawieniach początkowych mogło by się skończyć na tym, że przez chwilę okno nie przewija się prawie wcale, albo wręcz przeciwnie, przewija się w zastraszającym tempie). drugi z powodów, to dążenie do jak najpłynniejszego przewijania. przy takiej częstotliwości w połączeniu z funkcją scrollTo() można przewijać o ułamkowe wartości (czyli przewijanie do 10,1 potem do 10,2 itd.) czyli w praktyce przewijać o 1 piksel co ileś tam jednostek.
przykład | sposób użycia | kod