我有一个div,其中包含多个元素。它们每个都用作分页号,当我单击其中一个时,容器div必须滚动以将该元素居中。

div有一个溢出:隐藏行为,因此我必须找到div的实际大小,而不仅仅是其可见部分。

最佳答案

首先,您需要找到div的内部宽度。
您可以使用它:

$("#divOverflowHidden")[0].scrollWidth


现在,您需要计算元素的位置,该位置必须是这样的:

{element index} * {overflow hidden div inside width} / {number of elements}


代码应该是这样的:

 index * $("#divOverflowHidden")[0].scrollWidth / total


现在,如果您有水平滚动条,则需要使用$("#divOverflowHidden").scrollLeft()将滚动条移动到正确的位置;如果您有垂直滚动条,则需要使用$("#divOverflowHidden").scrollTop()

结果是该元素将显示在溢出的div的左侧。为了使元素居中,可以减去计算结果,即溢出div的外部宽度的一半。因此,新公式为:

(({element index} * {overflow hidden div inside width}) / {number of elements}) - ({overflow hidden div ouside width} / 2)


最终...

((index * $("#divOverflowHidden")[0].scrollWidth) / total) - $("#divOverflowHidden").width() / 2)

10-08 14:24