Chcę, aby strona przewijała się powoli i płynnie. Cóż, prędkość powinna być regulowana. Użytkownik powinien również mieć możliwość przewijania w górę, gdy skrypt przewija się w dół. Najpierw próbowałem tego:Powoli przewijaj stronę w dół na stałe, bez dużego obciążenia procesora lub przewijania z opóźnieniem.
var autoScrollDelay = 1
var autoScrollSpeed = 1
var autoScrollTimer
function setAutoScroll(newValue) {
autoScrollSpeed = newValue ? newValue : autoScrollSpeed
if (autoScrollTimer) {
clearInterval(autoScrollTimer)
}
if (autoScrollDelay) {
autoScrollTimer = setInterval(function(){
window.scrollBy(0,autoScrollSpeed)
},autoScrollDelay)
}
}
setAutoScroll(1) // higher number = faster scrolling
Ale to było przyczyną bardzo dużego obciążenia procesora, a najwolniejsza prędkość była zbyt szybka. Poza tym ręczne przewijanie nie działało poprawnie podczas działania kodu.
Potem próbowałem:
var autoScrollDelay = 1
var autoScrollSpeed = 1
var autoScrollTimer
function setAutoScroll(newValue) {
autoScrollDelay = newValue ? newValue : autoScrollDelay //using autoScrollDelay instead of autoScrollSpeed
if (autoScrollTimer) {
clearInterval(autoScrollTimer)
}
if (autoScrollDelay) {
autoScrollTimer = setInterval(function(){
window.scrollBy(0,autoScrollSpeed)
},autoScrollDelay)
}
}
setAutoScroll(200) // higher number scrolls slower
Ale nie było sprawne przewijanie podczas ustawiania go zbyt wolno (na przykład 200).
Potem próbowałem:
$("html, body").animate({
scrollTop: $('html, body').get(0).scrollHeight,
}, 40000, "linear");
Ale znowu obciążenie CPU było zbyt wysokie i przewijanie w górę lub w dół ręcznie nie można było w ten sposób.
Czy jest lepszy sposób to zrobić?
CSS translateY może być najlepszym rozwiązaniem. –
Czy możesz utworzyć link do swojej strony? Jaka jest waga strony - czy masz dużo ciężkich obrazów lub animacji lub cokolwiek się dzieje, gdy strona przewija się? –
Nie ma znaczenia, na której stronie uruchomiłem kod. Możesz wypróbować to tutaj na Stackoverflow. Mój Firefox pokazuje 10-12% obciążenia procesora, prawdopodobnie tyle samo, co skrypt z pojedynczym gwintem, który może obsłużyć procesor 8 wątków. – Forivin