Scrollable Div, which elements can be seen

随声附和 提交于 2019-12-03 04:41:16

Update

Updated with a working example http://jsfiddle.net/U4qyp/32/


I think .position() should do the job. It gives you the position of the element relative to its parent element. After you called .position() you can access the element coordinates using the properties top and left.

http://api.jquery.com/position/

The element whose top position plus its height is major than zero, is visible.

Here is an example of what I mean.

http://jsfiddle.net/U4qyp/10/

I'd have thought the best way to do it is in your scroll event capture the scrollTop value of the div and compare it to the top of each li element (maybe add the height so you can see if the element is completely out of view).

jQuery's position method gets the position relative to the container, and you can get the top position by doing $("li").position().top;

So my solution was to write a loop to go through all the elements and find the one with the smallest value for position().top and pick that out. Here's the script I wrote:

$(function() {

    var mostVisibleItem = $("li:first");

    var smallestOffset = mostVisibleItem.position().top;
    $("li").each(function(i, item) {
        if($(item).position().top < smallestOffset)
        {
            smallestOffset = $(item).position().top;
            mostVisibleItem = $(item);
        }
    });
    mostVisibleItem.css("color", "red");
});

You can see this working in JSFiddle here: http://jsfiddle.net/P69y2/

Hope this helps :)

Something like this would work, where you would replace the console.log with your display logic.

<script>
    $(function() {
        $('#scroller').scroll(function() {
            $('#scroller li').each(function() {
                if ($(this).position().top > 0) {
                    console.log($(this).html());
                    return false;  // break once the first displayable value has been returned.
                }   
            })
        })
    })
</script>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!