获取可滚动列表中第一个可见项的位置

Get position of the first visible item in a scrollable list

本文关键字:位置 滚动 列表 获取 第一个      更新时间:2023-09-26

我有一个包含li s的列表。每个项在集合中都有一个相应的对象。当我开始滚动列表时,我现在想看看实际的第一个可见项目是什么,以及它在我的收藏中的位置。在我的第一个版本中,这很容易,因为每个项目都有相同的高度,我可以将列表的 scrollTop 除以项目的高度。但是在我们的新版本中,每个项目都可以有不同的高度。

问题是它是一个无限可滚动的列表,并且必须在移动设备上运行。因此,也许有更好的解决方案,然后遍历所有项目并汇总其高度,直到其大于列表顶部的滚动顶部。

是否有处理该问题的常用方法。

好的,

我找到了一种使用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>