我正在尝试为我的应用程序构建非线性水平缩放滑块,我正在努力为'非线性'找到正确的公式。缩放应该是“原始”宽度的百分比(更高或更低),中心为100%(默认)。百分比范围应为10%至10000%。滑块本身的范围为10到4000,默认值为2000,使其保持居中:
<input type="range" id="zoom" min="10" max="4000" value="2000" autocomplete="off">
我当前的JS公式执行以下操作(其中val
是滑块的当前值):
Math.floor(Math.pow(10, parseInt(val)/1000));
这没关系,很好地将100%放在滑块中心,但两边的刻度都太陡了。
理想情况下,我想要的是从10%到100%的线性或近线性变化(因此50%大致为四分之一标记),然后是100%的非线性,对数变化至1000%,同时仍保持滑块中心的100%。有没有一个公式,或者我是否真的需要构建我刚刚描述的内容,计算从0到中心的线性值,以及从中心到结尾的对数值?
感谢您提出任何建议。