我在div内有20个列表项,一次只能显示5个。滚动到第10项然后到第20项的好方法是什么?我知道所有物品的高度。
scrollTo插件可以做到这一点,但是如果没有真正了解它的源代码,就很难理解。 我不想使用此插件。

假设我有一个函数,它接受2个元素$parentDiv$innerListItem$innerListItem.offset().top$innerListItem.positon().top都不给我正确的$ parentDiv的scrollTop。

最佳答案

$innerListItem.position().top实际上相对于其第一个定位祖先的.scrollTop()。因此,计算正确的$parentDiv.scrollTop()值的方法是首先确定$parentDiv的位置。如果还没有明确的position,请使用position: relative。元素$innerListItem及其所有祖先(直到$parentDiv)无需具有明确的位置。现在,您可以使用以下命令滚动到$innerListItem:

// Scroll to the top
$parentDiv.scrollTop($parentDiv.scrollTop() + $innerListItem.position().top);

// Scroll to the center
$parentDiv.scrollTop($parentDiv.scrollTop() + $innerListItem.position().top
    - $parentDiv.height()/2 + $innerListItem.height()/2);

09-25 18:04