How to determine which element(s) are visible in an overflowed <div>

Posted by jjross on Stack Overflow See other posts from Stack Overflow or by jjross
Published on 2011-01-04T23:49:48Z Indexed on 2011/01/04 23:53 UTC
Read the original article Hit count: 122

Filed under:
|
|
|

Basically, I'm trying to implement a system that behaves similar to the reading pane that's built into the Google Reader interface.

If you haven't seen it, Google Reader presents each article in a separate box and as you scroll it highlights the current box (and marks the article as read). In addition to this, you can move forward or backward in the article list by clicking the previous and next buttons in the UI.

I've basically figured out how to do most of the functionality. However, I'm not sure how I can determine which of my divs is currently visible in in the scrollable pane.

I have a div that is set to overflow:auto. Inside of this div, there are other divs, each one containing a piece of content. I've used the following jquery plugin to make everything scroll based on a click of the "next" or "previous" button and it works like a charm:

http://demos.flesler.com/jquery/serialScroll/

But I can't tell which div has "focus" in the scrollable pane. I'd like to be able to do this for two reasons.

  1. I'd like to highlight the item that the user is currently reading (similar to Google Reader). I need to do this regardless of whether or not they used the plugin to get there or used the browser's scroll bar.

  2. I need to be able to tell the plugin which item has focus so that my call to scroll to the "next" pane actually uses the currently viewed pane (and not just the previous pane that the plugin scrolled from).

I've tried doing some searching but I can't seem to figure out a way to do this. I found lots of ways to scroll to a particular item, but I can't find a way to determine which element is visible in an overflowed div. If I can determine which items are visible, I can (probably) figure out the rest.

I'm using jquery if that helps. Thanks!

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about jQuery