I'm trying to understand how parallax works with iscroll5. From what I understand, I can define a container as an indicator to alter scroll speed. However what I need to do is to apply a speed ratio to several elements at the same time.
Let's take the example below, how would I proceed to change the speedratioX of all h2 elements at once?
Here is the jsfiddle (might be easier) and below the same example in SO :
var container = document.getElementsByClassName('iscroll__wrapper')[0],
myScroll = new IScroll(container, {
scrollX: true,
scrollY: false,
mouseWheel: true
});
.iscroll__wrapper {
overflow-x: scroll;
overflow-y: hidden;
}
ul {
margin: 0;
padding: 0;
display: flex;
width: 1200px;
height: 300px;
}
li {
box-sizing: border-box;
flex: 0 0 auto;
width: calc(100% / 3);
padding-left: 2em;
padding-right: 2em;
list-style: none;
}
figure {
margin: 0;
}
img {
display: block;
width: 100%;
height: auto;
}
<script src="https://cdn.jsdelivr.net/npm/iscroll/build/iscroll-probe.js"></script>
<div class="iscroll__wrapper">
<ul>
<li>
<figure><img src="https://lorempixel.com/900/200"></figure>
<h2 class="title">Title 1</h2>
</li>
<li>
<figure><img src="https://lorempixel.com/900/200"></figure>
<h2 class="title">Title 1</h2>
</li>
<li>
<figure><img src="https://lorempixel.com/900/200"></figure>
<h2 class="title">Title 1</h2>
</li>
</ul>
</div>
Now, my questions are :
Is it possible to do it with iScroll only? And if so, how (the documentation only mentions altering the speed ratio of a whole container)?
If it's not possible, I'm open to any other suggestions that can be integrated with iScroll and that don't require jQuery.
Thanks for your help!
Ok, I've found a solution. I'm posting this here as an answer in case it could help someone.
So I've noticed that you can pass an array of
indicatorsand not just one element. So I've used aforloop to populate an array that I use when creating a new IScroll class.Here is how it looks: