javascript范围滑块,带有HTML5Canvas

问题描述 投票:0回答:1

您可以尝试设置一个沿滑块的“ snap to” x值的数组。 您还需要一个接受X值的函数,并返回最接近的“ snap to”值。 这样的东西:

const left = 100;
const width = 200;
const numStops = 11;

const lerp = (from, to, pct) => (to - from) * pct + from;

const sliderPositions = Array.from(
  {length: numStops}, 
  (_, i) => lerp(left, left + width, i / (numStops - 1))
);

const getClosestSliderPosition = xPos => 
  sliderPositions.reduce((acc, el) => {
    if (Math.abs(xPos - el) < Math.abs(xPos - acc))
      acc = el;
    return acc;
  });

console.log(getClosestSliderPosition(150));
console.log(getClosestSliderPosition(115));
console.log(sliderPositions);
javascript canvas html5-canvas
1个回答
0
投票

在您的活动处理程序中,您可以使用GetClosestSliderPosition函数这样:

function moveSlider(e) { Slider.x = getClosestSliderPosition(e.clientX); }
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.