Skip to content

Conversation

@rsutphin
Copy link
Contributor

Both the find-top and find-bottom searches were incorrect (in different ways) for the case where you're scrolling the contents of one element (vs. the whole page). The details of the two problems are in the commit messages.

I believe that these changes will not affect the behavior in the full page scrolling case, but I have not tested that. (The change to find-top definitely will not affect full page scrolling — the value which is no longer added was always zero. The change to find-bottom effectively is substituting position().top for offset().top. I believe in the scrolling-the-whole-page case, these values are the same. In addition, the new find-bottom bounds computation now matches the find-top bounds computation, which further suggests to me that it's probably right.)

The previous expression (offset + wrapperTop) was only correct when the wrapped
container was positioned at the top of the document. If the container was
further down from the top of the document than the height of the last row,
the last row would always be cloaked. The further down the container started,
the more of the bottommost rows would always be cloaked.

This was because "viewTop" was computed using document-relative coordinates,
but was compared to a value (viewportBottom) that was clamped to the height
of the container's content.

This change uses a coordinate for viewTop which is relative to the scrolling
container.
Incorporating wrapperTop into the calculated viewBottom shifts the computed
bounds for all the views such that the first row is always found to be the
topmost visible. Top put it another way, it prevents any of the views that
scroll above the top from ever being cloaked when you're using a wrapper
element.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant