Horizontal scroll detection
Check when els are in view and add animate.css classes
HTML
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.slim.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gemini-scrollbar@1.5.3/gemini-scrollbar.css">
<script src="https://cdn.jsdelivr.net/npm/gemini-scrollbar@1.5.3/index.js"></script>
<div class="js-page-scroll">
<main>
<section>
<h2>1</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima dolorum cumque fugiat ducimus rem dicta sequi neque laudantium, facilis explicabo?
</p>
</section>
<section>
<h2>2</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima dolorum cumque fugiat ducimus rem dicta sequi neque laudantium, facilis explicabo?
</p>
</section>
<section>
<h2>3</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima dolorum cumque fugiat ducimus rem dicta sequi neque laudantium, facilis explicabo?
</p>
</section>
<section>
<h2>4</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima dolorum cumque fugiat ducimi neque laudantium, facilis explicabo?
</p>
</section>
<section>
<h2>5</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima dolorum cumque fugiat ducimus rem dicta sequi neque laudantium, facilis explicabo?
</p>
</section>
</main>
</div>
CSS
main {
display: flex;
flex-flow: row;
align-items: center;
align-content: center;
justify-content: space-between;
}
section {
display: block;
border: 1px solid #000;
padding: 1rem;
flex: 1 0 300px;
}
section p {
opacity: 0;
}
.gm-scrollbar .thumb {
background: darkblue;
}
JavaScript
// Add custom scrollbar
var myScrollbar = new GeminiScrollbar({
element: document.querySelector('.js-page-scroll')
}).create();
// Add scroll events
var scrollContainer = $('.gm-scroll-view');
var scrollElem = $('section');
var offset = 300;
scrollContainer.scroll(function() {
var $thisContainer = $(this);
$thisContainer.find(scrollElem).each(function(n) {
var $thisElem = $(this);
if ($thisElem.position().left + $thisElem.width() > 0 && $thisElem.position().left < $thisContainer.width() - offset) {
$('p', $thisElem).addClass('animated fadeInUp');
}
});
});