Hi Jack,
Thanks for the quick and detailed reply
I should clarify the biggest issue I was facing was the scroll snapping, I tried my best for many hours, looking through every tidbit of gsap documentation and pretty much every related codepen I could get my hands on, but to no avail. I should also say I don't expect anybody to code the solution for me (thank you for the codepen though, helps a lot), just hoping for any pointers in the right direction.
The sort of snapping functionality I'm looking for is as follows:
1. User starts scrolling
2. User stops scrolling
3. Top of nearest red box starts snapping/aligning to top of text
But so far it seems gsap's builtin snapping can only do the following:
1. User starts scrolling
2. User stops scrolling
2.1. Red box must keep tweening to it's final position based on the inertia of scroll
3. Top of nearest red box starts snapping/aligning to top of text
It's the delay caused by step 2.1 that I'm trying to avoid.
I've also just realised that the very first codepen I posted behaves very differently when scrolling using apple trackpad/magic mouse vs a mechanical scroll wheel. Transitions are way smoother using the former. So I'm going to abandon the idea of using native css scroll snapping.
After doing some more digging, I think I may try something like this:
Except make the start and end point for each section inset so it doesn't immediately snap, but lets you scroll a little bit before snapping. I will post an updated codepen if I manage to get it working.