How can I get the first DOM element that is visible in a viewport?
PS: the first DOM element in a page will not be the first "visible" element when I scroll to the middle or bottom of the page
In mind with the scroll, you'll need to query the whole document, get the elements offset positions, and match that agains the scrollTop
value of the window. Then query the :eq(0)
(jQuery) of those.
EDIT: I think this sample will work, haven't tried it out yet tho, since I'm unable to access any fiddle here at work computers.
$(function () {
var scroll = $(window).scrollTop();
var elements = $("*"); // VERY VERY bad performance tho, watch out!
var el;
for (var i=0; i<elements.length; i++) {
el = $(elements[i]);
if (el.offset().top >= scroll && el.is(':visible')){
// "el" is the first visible element here!
// Do something fancy with it
// Quit the loop
break;
}
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With