(In reply to Hiroyuki Ikezoe (:hiro) from comment #0)
Attaching file is an example to demonstrate this issue. If you scroll down to a point where the green box just appeared (at the point the blue box is out of view), snapping to the green box's top is the right behavior, but actually Chrome doesn't. I have an imcomplete patch for us it works as expected if you scroll down with dragging scrollbar but it doesn't work by wheel scrolling (probably we need machinery similar to OverscrollAnimation?)
I was about to file a separate issue for the strange/sporadic behavior exhibited in this link until I found this issue.
Hiroyuki, if you load that link in webkit (desktop or iOS) you get an expected/smooth snapping experience. In chrome canary, though the snap-type is mandatory you get free scrolling (not snapping) logic in areas between images of the "slideshow". But in firefox nightly, you get snapping that almost always resolves in the opposite direction of the inertia left from a two finger scrolling flick, almost never resolving towards the intended direction.
I can't tell if it has the same root cause as your snap-visible-element-prior-to-invisible case, though when I very slowly execute my scrolling gestures and ensure showing the next snap area, our two test cases seem to behave similar???
What do you think?