Se você está procurando como animar elementos ao fazer scroll com o mouse de forma fácil, veja esse artigo, animação com scroll mais fácil que já vi.
Pesquisando sobre como animar alguns elementos com o scroll do mouse, me deparei com diversas soluções, mas confesso que nenhuma chegou aos pés da facilidade dessa implementação, melhor biblioteca que já vi, se tiver alguma outra melhor, pode me falar ai nos comentários.
Você pode ver a aplicação funcionando já com os exemplos clicando aqui AOS – Animate On Scroll Library e no GitHub aqui
Vamos para parte prática, instalar no html simples a biblioteca para animar elementos com scroll.
Instalação básica, no seu <head> coloque o código abaixo:
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
E antes de fechar o </body> você coloca essa chamada do script.
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
<script>
AOS.init();
</script>
Dentro do <script>AOS.init();</script> você pode chamar as configurações que achar interessante, no meu caso, eu acabei importando tudo para também poder testar.
/ You can also pass an optional settings object
// below listed default settings
AOS.init({
// Global settings:
disable: false, // accepts following values: 'phone', 'tablet', 'mobile', boolean, expression or function
startEvent: 'DOMContentLoaded', // name of the event dispatched on the document, that AOS should initialize on
initClassName: 'aos-init', // class applied after initialization
animatedClassName: 'aos-animate', // class applied on animation
useClassNames: false, // if true, will add content of `data-aos` as classes on scroll
disableMutationObserver: false, // disables automatic mutations' detections (advanced)
debounceDelay: 50, // the delay on debounce used while resizing window (advanced)
throttleDelay: 99, // the delay on throttle used while scrolling the page (advanced)
// Settings that can be overridden on per-element basis, by `data-aos-*` attributes:
offset: 120, // offset (in px) from the original trigger point
delay: 0, // values from 0 to 3000, with step 50ms
duration: 400, // values from 0 to 3000, with step 50ms
easing: 'ease', // default easing for AOS animations
once: false, // whether animation should happen only once - while scrolling down
mirror: false, // whether elements should animate out while scrolling past them
anchorPlacement: 'top-bottom', // defines which position of the element regarding to window should trigger the animation
});
E o seu uso é muito simples, vamos por exemplo, imaginar o seguinte cenário:
<div data-aos="zoom-in" data-aos-duration="2000">
<div class="divBoxTexto1">
<div class="texto1">
<p>Texto1</p>
</div>
</div>
<div class="divBoxTexto2">
<div class="texto2">
<p>texto</p>
</div>
</div>
</div>
No caso do exemplo acima, terá um efeito de zoom-in no momento do scroll do mouse nessa região do seu site.
Ou seja, em resumo, basta você envolver o código no local onde você quer.
Veja essa lista abaixo, quanta opção de animação:
Animations
- Fade animations:
- fade
- fade-up
- fade-down
- fade-left
- fade-right
- fade-up-right
- fade-up-left
- fade-down-right
- fade-down-left
- Flip animations:
- flip-up
- flip-down
- flip-left
- flip-right
- Slide animations:
- slide-up
- slide-down
- slide-left
- slide-right
- Zoom animations:
- zoom-in
- zoom-in-up
- zoom-in-down
- zoom-in-left
- zoom-in-right
- zoom-out
- zoom-out-up
- zoom-out-down
- zoom-out-left
- zoom-out-right
Anchor placements:
- top-bottom
- top-center
- top-top
- center-bottom
- center-center
- center-top
- bottom-bottom
- bottom-center
- bottom-top
Easing functions:
- linear
- ease
- ease-in
- ease-out
- ease-in-out
- ease-in-back
- ease-out-back
- ease-in-out-back
- ease-in-sine
- ease-out-sine
- ease-in-out-sine
- ease-in-quad
- ease-out-quad
- ease-in-out-quad
- ease-in-cubic
- ease-out-cubic
- ease-in-out-cubic
- ease-in-quart
- ease-out-quart
- ease-in-out-quart
Para ver mais exemplos e acesso ao github, acesse o endereço aqui github.com/michalsnik/aos