如何精确找到输入的拇指位置[type =“range”]?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何精确找到输入的拇指位置[type =“range”]?相关的知识,希望对你有一定的参考价值。

我们的想法是提供一个与滑块相关的工具提示。我最初想通过使用css grid来完成这项任务。 CSS为您提供任意大小的网格,10或1000列,无关紧要。通过利用网格功能,我们可以根据需要调整工具提示。我们真正得到的是:

thumb is unstable

拇指位置有点不可预测。它似乎是偏移的,并且该偏移的方向取决于输入值是在滑块的左侧还是右侧。

注意:默认拇指的行为方式完全相同。我的意思是,拇指的形状并不重要。

那么,html如何根据其值计算拇指位置?

答案

你必须考虑你的thumb的大小

可以使用一点点javascript实现这一点(除非你能得到我现在不知道的范围比)

Therorical

计算当前ratio相对于输入的valueminmax(0到1之间)

(value - el.min) / (el.max - el.min)

所以它的位置(从相对于输入容器的箭头开始)将是:

thumbSize / 2 + ratio * 100% - ration * thumbSize

Method

这可能会让我们知道如何在javascript中实现它

const thumbSize = 10
const range = document.querySelector('input[type=range]')
const tooltip = document.querySelector('.tooltip')

range.addEventListener('input', e => {
  const ratio = (range.value - range.min) / (range.max - range.min)
  tooltip.style.left = `calc(${thumbSize / 10}px + ${ratio * 100} - ${ratio} * ${thumbSize}px)`
}

上面的代码尚未经过测试,但已实施相同的方法

以上是关于如何精确找到输入的拇指位置[type =“range”]?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 UISlider 拇指位置

如何找到滑块的拇指来设置其宽度

如何在给定路径下查找具有与递归精确模式匹配的位置的目录名称列表[重复]

如何在 Chrome 开发者工具中查看范围输入拇指的样式?

在Canvas上的精确位置创建输入TextField?

如何单独引用 RangeSlider 的每个拇指 (ControlsFX)