Jquery / Javascript在滚动后找到第一个可见元素
我有如下代码:
blah blah blah blah 2
但实际上有很多很多与class =’item’。
基本上,当用户滚动这个很长的项目列表时,我想要更改当前顶部可见项目的样式(如Google阅读器!)。 在jquery或普通的javascript中寻找解决方案,但似乎无法找到一个。 有人有主意吗?
谢谢
标记
如果你的元素高度不同,你可以在滚动上迭代它们:
$(document).scroll(function() { var cutoff = $(window).scrollTop(); $('.item').removeClass('top').each(function() { if ($(this).offset().top > cutoff) { $(this).addClass('top'); return false; // stops the iteration after the first one on screen } }); });
如果这太慢,可以将$(’。item’)。offset()缓存到数组中,而不是每次调用offset()。
这是一个基于内置javascipt函数的想法。
var range = document.caretRangeFromPoint(0,0); // screen coordinates of upper-left corner of a scolled area (in this case screen itself) var element = range.startContainer.parentNode; // this an upper onscreen element
这段代码不是一个随时可用的产品 – 它只是一个例子,只适用于webkit浏览器。 如果你想使用它,你应该谷歌搜索caretRangeFromPoint()的跨浏览器等价物
您可以使用javascript创建自己的滚动条。
这不是很实际的想法,但你可以试试。
并将链接放置在更好地描述它的图像上。 它会非常实用。