I have a list of item sections on the page.
Example:
<div data-page='1' class'item' ></div>
<div data-page='1' class'item' ></div>
<div data-page='1' class'item' ></div>
<div data-page='2' class'item' ></div>
<div data-page='2' class'item' ></div>
<div data-page='2' class'item' ></div>
<div data-page='3' class'item' ></div>
<div data-page='3' class'item' ></div>
<div data-page='3' class'item' ></div>
I need to find out the element, which is located in the very central part of the screen, and get its number data-page.
If all divs are close to the page button or are not visible because it is down the page, I get the top of the page itself because it is closer to the middle, and if all divs are above the middle or not visible because they are at the top the windows are out of visible view, I get the bottom of the div because it is closer to the middle.
What I tried ( source ):
$(".item").sort(function(a,b){
return Math.abs(1 - (($(window).scrollTop()+$(window).height()/2-$(a).height()/2) / $(a).position().top)) -
Math.abs(1 - (($(window).scrollTop()+$(window).height()/2-$(b).height()/2) / $(b).position().top))
})[0].css("background", "red");
The above function did not work for me because it was highlighted with the red bottom most of the elements.
jQuery, , .