我有一个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)