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())
})