Math 浏览器如何计算滚动条';内容高度更改时的位置?

Math 浏览器如何计算滚动条';内容高度更改时的位置?,math,browser,scrolltop,Math,Browser,Scrolltop,我正在为一个游戏开发自己的滚动条。当内容的高度改变时,我不知道如何计算滚动条的位置(在浏览器scrollTop中)。我想在改变可滚动内容的高度后显示其相同的位置 正如我在一些测试后所理解的,如果我在视口上方添加/删除元素,那么scrollTop值在添加/删除元素的高度上会发生变化,如果我在视口下方添加/删除元素,scrollTop值将是相同的。浏览器如何检测元素的添加/删除位置?也许你们有源代码,它解释了滚动条数学是如何在浏览器中工作的 谢谢。如果我们知道每个内容的高度和间距,就不难计算出要在两

我正在为一个游戏开发自己的滚动条。当内容的高度改变时,我不知道如何计算滚动条的位置(在浏览器scrollTop中)。我想在改变可滚动内容的高度后显示其相同的位置

正如我在一些测试后所理解的,如果我在视口上方添加/删除元素,那么scrollTop值在添加/删除元素的高度上会发生变化,如果我在视口下方添加/删除元素,scrollTop值将是相同的。浏览器如何检测元素的添加/删除位置?也许你们有源代码,它解释了滚动条数学是如何在浏览器中工作的


谢谢。

如果我们知道每个内容的高度和间距,就不难计算出要在两个内容之间设置的特定y位置。每个内容高度的设置器都应该有回调,这样每当您试图更改特定内容的高度时,它都会自动调整。当然,我知道每个元素的高度,如果我添加或删除下面的元素,所有内容都会保持在视区中。若我在视口顶部上方添加或删除元素,则视口中或下方元素的坐标将随添加或删除元素的高度而变化,所以视口将不会显示相同的内容。在这种情况下,浏览器会在添加或删除的元素的高度上更改滚动条的位置。是的,完全正确。我的解释是基于Unity2d,但我认为不会有太大的差异。添加或删除内容将通过分配给setter的回调自动调用滚动条更新函数。当然,我们知道计算滚动条大小和位置的所有信息。如果我在删除每个元素时触发滚动条,而不是只给滚动条整个内容高度,我接下来该怎么做?比较元素的位置是否在视口上方,然后将此值添加到滚动条位置?我尝试过,它可以工作,但对于我现有的系统来说太复杂了。我一直向滚动条发送整个高度的内容,当我删除元素时,我只更新这个变量。所以scrollbar不知道元素,他只知道整个高度。