Hey, @Cassie. Thank you for help here.
I like the way your version works, but even though it looks more compact, I can't figure out the way all parts work.
I will try to explain step by step and asking you to correct me if I'm wrong.
1.yPercent: -100 * (items.length - 1). This is what's happening on each scroll(snap). Transforming current item 200%(if we have 3 items) up by Y axis (I don't understand why 200 instead of 100);
2.Ease is clear
3.trigger is place where animation should start (depends on start and end).
4.pin: animatedPart. animatedPart gets pinned.
5.start: 'top top',
end: `+=${itemContainer.offsetHeight}`,
I assume we indicate what length our animation will take and I can indicate end as +=300% if I want to, instead of container height.
6.Scrub is clear
7. Snap is the hardest part for me?. Value is 0.5 in my case, therefore it has two points: 50% and 100%(as far as I understand). In my case I want to have 3 snaps: 33%, 66%, 100%(for each item), start it when bottom of the viewport touches top of our trigger and if I go from the very bottom- when top of the viewport touches bottom of the trigger. Is that possible or I misunderstand the way it works?