Como fazer rolagem/scroll lento em site?
Quando usamos o scroll do mouse para fazer rolagem em um site, ela rola e depois para instantaneamente, eu gostaria de programar o site para fazer um scroll que não parasse instantaneamente, mas que parasse aos poucos. Site exemplo: https://igorterekhov.com/en/
Matheus
Curtidas 1
Respostas
Diego Marinho
03/03/2022
Amigão, fiz um código aqui em javascript, mas acho que tem como fazer isso com css, mas não tenho certeza. Mas esse código aqui seria um esboço, desse efeito. Você mexendo um pouquinho talvez melhore. A ideia é manipular o scrollY , através do evento windows.scroll.
Essa última parte do código -> DOMContentLoaded , controla pra que o scroll não empurre sua página assim que windows for carregado, mas provavelmente há formas melhores de fazer isso.
Mas funcionou quando fiz os testes aqui .
Dá uma olhadinha.
<script>
var pos = 0
const potenciaDelay = 3.5
window.addEventListener("scroll", async function(e){
if (scrollY < pos){
//SUBINDO
await scrollDelay(-10)
}else{
//DESCENDO
await scrollDelay(10)
}
pos = this.scrollY
})
function scrollDelay(distancia){
count = 0 ;
let delay = setInterval(async()=>{
count++
count < potenciaDelay ? scrollTo(scrollY, scrollY + (distancia)) : clearInterval(delay) ;
distancia = 0
},100)
}
document.addEventListener("DOMContentLoaded", function() {
scrollTo(0,0)
})
</script>
Essa última parte do código -> DOMContentLoaded , controla pra que o scroll não empurre sua página assim que windows for carregado, mas provavelmente há formas melhores de fazer isso.
Mas funcionou quando fiz os testes aqui .
Dá uma olhadinha.
<script>
var pos = 0
const potenciaDelay = 3.5
window.addEventListener("scroll", async function(e){
if (scrollY < pos){
//SUBINDO
await scrollDelay(-10)
}else{
//DESCENDO
await scrollDelay(10)
}
pos = this.scrollY
})
function scrollDelay(distancia){
count = 0 ;
let delay = setInterval(async()=>{
count++
count < potenciaDelay ? scrollTo(scrollY, scrollY + (distancia)) : clearInterval(delay) ;
distancia = 0
},100)
}
document.addEventListener("DOMContentLoaded", function() {
scrollTo(0,0)
})
</script>
GOSTEI 0
Diego Marinho
03/03/2022
Assim funcionou melhor
var pos = 0 const potenciaDelay = 3 window.addEventListener("scroll", async function(e){ if (scrollY < pos){ //SUBINDO await scrollDelay(-10) }else{ //DESCENDO await scrollDelay(10) } pos = this.scrollY }) function scrollDelay(distancia){ count = 0 ; let delay = setInterval(async()=>{ count++ count < potenciaDelay ? scrollTo(scrollY, (scrollY + (distancia))) : clearInterval(delay) ; distancia = 0 },100) } document.addEventListener("DOMContentLoaded", function() { scrollTo(0,0) })
GOSTEI 0
Diego Marinho
03/03/2022
Ah ... Só que tem que colocar esse código no css :
html{
scroll-behavior: smooth;
}
Agora. sim !
html{
scroll-behavior: smooth;
}
Agora. sim !
GOSTEI 0