Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correct visible view calculations when using a wrapper element #38

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

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