我有一个带有两个手柄的 nouislider 组件。句柄代表开始和结束日期,使用时间戳作为值。一切都按预期工作。我只想添加一个功能,移动手柄将通过更改范围来缩放滑块。
这是我的滑块的样子。
我想要它,例如,将左手柄移近右侧会增加下限范围,以便两个手柄之间的区域占整个空间的更大百分比。有点像缩放效果。
我知道如何在需要时更新范围,我只是想知道是否有一些现有的公式或通用方法来计算这样的事情,手柄的位置将决定范围;也许使用左手柄和最小范围之间的距离的东西,反之亦然。
一种可能的方法是定义下限和上限,使手柄始终处于总范围的固定百分比。例如:
lh, rh := left handle and right handle values
lower, upper := lower and upper bounds of the range
tl, tr := percentages of left and right handles:
那么你要解决线性系统
lh = (1 - tl) * lower + tl * upper
rh = (1 - tr) * lower + tr * upper
解决办法是:
lower = (lh * tr - rh * tl) / (tr - tl)
upper = (rh - lh + lh * tr - rh * tl) / (tr - tl)
如果你想使用tl = 0.25
and tr = 0.75
,你会得到:
lower = 1.5 * lh - 0.5 * rh
upper = 1.5 * rh - 0.5 * lh
然后,您可以将范围限制为您的最小值和最大值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句