我在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);