Animação no Scroll

15 respostas
cssjavascript
R

Bom dia pessoal, eu tô procurando (tentando) uma animação que vc faz o scroll com o mouse e ele desce exatamente pra div que a gente quer, como se fosse um anchor…

Eu achei essa:

Muito boa por sinal, mas é pago… Alguém conhece algo similar?


Tem esse exemplo no StackOverFlow tbm, mas a animação de scroll é só quando clica no botao, queria achar algo com o mouse mesmo.

15 Respostas

R

Achei::

https://github.com/lukesnowden/FSVS.


Mais simples ainda:

E

Eu sei que a pergunta é em relacao ao CSS, mas voce ja tentou isso aqui atraves do JavaScript? Nao precisa de libraries para fazer isso, pois é algo muito basico e voce nao quer aumentar o size do seu bundle por um evento simples assim.


Boa Sorte

R

Opa, valeu pela resposta!

Mas o intuito era ficar tipo aquele negocio do tik tok, que vc arrasta pra baixo ou pra cima e troca de post, conseguiu entender mais ou menos?

E

ah entendi, voce quer que o proximo scroll pegue a tela toda? Isso é para desktop ne? Eu acho que da para voce quebrar cada visualizacao em um wrapper assina esse wrapper com uma id crescente que voce consegue rastrear, e cada vez que voce capturar o gesto do usuario ativando o evento da sua funcao, voce envia a id do proximo elemento. A sua funcao usa esse id para procurar o elemento no DOM Tree e ai voce usa o metodo que eu mencionei para mover a sua pagina.


Mas tem outras formas mais simples de fazer isso, da uma olhada nesse aqui por exemplo

R

Então, é pra mobile e desktop (web).

eu consegui achar esse exemplo e ficou bem legal!

E

Esse é bom mas você ainda precisa de limitar para 1 elemento por scroll, talvez voce precise de usar algo chamado throttling mas ai ja envolve JavaScript.

R

não pô, mas é aquilo mesmo. Como se fosse o tik tok mesmo

E

Tiktok aceita scrolling de 1 em 1 elemento pelo iPhone, nao sei se aceita varios elementos ao mesmo tempo em outras plataformas. Por isso fiz a recomendacao, que bom que ja encontrou a solucao entao :wink:

R

Como assim? Desculpa, não entendi sua colocação…

Eu sei q no Android e no browser (mobile) também aceita aquele scroll de 1 “section” por vez


Esse é o tik tok (mobile web)

Esse é oq eu to fazendo, pensando se deixo um elemento por tela também

R

E assim é como ficaria mais ou menos com o scroll animado:

E

As vezes o portugues foge da lingua, o que eu quis dizer eh que o TikTok pelo iPhone voce passa de um container por vez quando faz o scroll, agora vi que o Android e na Web tambem é possivel, ja a sua postagem acima CSS Scroll Snapping, vertical not working pela logica que eu vi, parece que ele simplesmente fazia o smooth scroll sem ter a limitacao de 1 container com 100vh por viewport. Mas o exemplo que voce esta demonstrando acima parece que ja esta funcionando da forma que voce quer, entao esta tranquilo!


Edit 1: Um elemento por tela faz muito mais sentido, Instagram tem o modelo que deixa o usuario parar o scroll pois é uma ideia trazida do Facebook eu diria, é sem limitacao, mas eu percebo que o fluid do tiktok eh bem mais tranquilo na hora que voce esta consumindo informacao. Eu acho que ja expliquei acima, o throttling e o seu smoothScroll com os ids seria a combinacao perfeita caso voce precise.

R

Eu só fiquei meio confuso em relação ao throttling, ele controlaria o que exatamente?

E

Quando o usuario faz o scroll, cada pixel que a tela movimenta para baixo ativa a funçao para cuidar da mudanca do ContainerA para o ContainerB, e do B ao C e por ai vai. Entao se o usuario quer movimentar 100 px de scroll no +Y axis onde a sua funcao precisa ser invocada apenas uma vez, ai a sua funcao é chamada 100 vezes.

Isso alem de ser um bug, tambem pode causar uma queda enorme de performance no seu app. Por isso voce usa o Throttle para limitar a funcao a ser invocada digamos que 1 vez a cada 1 segundo.

E

Aqui vai um exemplo de Throttling e Debouncing, no seu caso voce precisa do Throttle

E

Esse Throttle vai te ajudar na hora de voce chamar a funcao 1 vez para mudar para o proximo container, pois se voce chama a funcao 100 vezes voce pode movimentar 100 vezes mais.


Throttling e Debouncing sao meio high level performance enhancers em CS, muita gente nao sabe como funciona, mas eu quis te passar isso para te ajudar agora ou mais adiante.

Criado 16 de setembro de 2020
Ultima resposta 17 de set. de 2020
Respostas 15
Participantes 2