Javascript 获取可滚动列表中第一个可见项的位置
我有一个带有Javascript 获取可滚动列表中第一个可见项的位置,javascript,dom,user-interface,Javascript,Dom,User Interface,我有一个带有lis的列表。每个项在集合中都有一个对应的对象。当我开始滚动列表时,我现在想知道实际的第一个可见项是什么,它在我的收藏中的位置是什么。在我的第一个版本中,这很容易,因为每个项目都有相同的高度,我可以将列表的顶部除以项目的高度。但在我们的新版本中,每件物品都可能有不同的高度 问题在于它是一个无限滚动列表,必须在移动设备上运行。因此,也许有更好的解决方案,然后迭代所有项目,并将其高度相加,直到其大于列表顶部 有没有处理这个问题的常用方法 好的,我找到了一种使用document.eleme
li
s的列表。每个项在集合中都有一个对应的对象。当我开始滚动列表时,我现在想知道实际的第一个可见项是什么,它在我的收藏中的位置是什么。在我的第一个版本中,这很容易,因为每个项目都有相同的高度,我可以将列表的顶部除以项目的高度。但在我们的新版本中,每件物品都可能有不同的高度
问题在于它是一个无限滚动列表,必须在移动设备上运行。因此,也许有更好的解决方案,然后迭代所有项目,并将其高度相加,直到其大于列表顶部
有没有处理这个问题的常用方法 好的,我找到了一种使用
document.elementFromPoint
的简单方法:
<script>
var span = $('span');
var ul = $('ul')
var y = ul.offset().left +1;
var x = ul.offset().top +1;
$('ul').scroll(function(){
var el = document.elementFromPoint(y,x);
span.html($(el).html())
})
</script>
变量span=$('span');
变量ul=$('ul')
变量y=ul.offset().left+1;
var x=ul.offset().top+1;
$('ul')。滚动(函数(){
var el=document.elementFromPoint(y,x);
html($(el.html())
})