【发布时间】:2025-12-30 11:35:12
【问题描述】:
我有一个 div,里面有几个元素。它们中的每一个都用作分页编号,当我单击其中一个时,容器 div 必须滚动以使该元素居中。
div 有一个溢出:隐藏行为,所以我必须找到 div 的实际大小,而不仅仅是它的可见部分。
【问题讨论】:
标签: javascript jquery html css
我有一个 div,里面有几个元素。它们中的每一个都用作分页编号,当我单击其中一个时,容器 div 必须滚动以使该元素居中。
div 有一个溢出:隐藏行为,所以我必须找到 div 的实际大小,而不仅仅是它的可见部分。
【问题讨论】:
标签: javascript jquery html css
首先你需要找到 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)
【讨论】:
您可以在 javascript 中使用 scrollHeight:
document.getElementById("container").scrollHeight;
或 jQuery
$("#container")[0].scrollHeight;
此处的示例:Demo
【讨论】: