【发布时间】:2017-01-09 14:08:25
【问题描述】:
我正在尝试显示以拇指为中心的范围项目的值。通过读出值并将元素定位在范围元素上方作为其clientWidth 的百分比,这非常有效。
然而,距离中间的偏移量越来越大(见图),这导致值不在拇指上。我确信这是由于拇指本身的大小以及轨道周围可能有一些空间,实际上拇指移动的幅度小于clientWidth。
我如何考虑到这一点?
JSFiddle 可以在这里找到:https://jsfiddle.net/jd4kncuk/
var myRange = document.querySelector('#myRange');
var myValue = document.querySelector('#myValue');
var off = myRange.clientWidth / (parseInt(myRange.max) - parseInt(myRange.min));
var px = ((myRange.valueAsNumber - parseInt(myRange.min)) * off) - (myValue.clientWidth / 2);
myValue.style.left = px + 'px';
myValue.style.top = -myRange.offsetHeight - 5 + 'px';
myValue.innerHTML = myRange.value;
myRange.oninput = function() {
let px = ((myRange.valueAsNumber - parseInt(myRange.min)) * off) - (myValue.clientWidth / 2);
myValue.innerHTML = myRange.value;
myValue.style.left = px + 'px';
};
<div style="position:relative; margin:auto; width:90%; margin-top:80px;">
<output style="position:absolute; min-width:100px; text-align: center;" id="myValue"></output>
<input type="range" id="myRange" min="0" max="200" step="5" style="width:80%" value="80">
</div>
【问题讨论】:
-
您能否将相关代码发布到问题中,如果可能,请添加 jsFiddle、Plunkr 或类似的代码来演示问题。
-
不要迂腐,但我认为我的描述和提供的图像应该最清楚地说明我的方法和手头的问题。
-
你不是书呆子 :) 图像不允许我们帮助你,因为我们看不到你的代码,也不知道你的 CSS、HTML 或脚本(如果相关)做了什么,任何事情都对猜测。此外,如果图像由于某种原因被删除或更改,则该问题对任何未来有类似问题的用户都没有用。最后,您希望我们为您提供帮助的难易程度取决于您。
-
@RoyPrins 老兄,你发现courellation了吗?它该死的不清楚它是如何移动的
-
我只有最模糊的记忆,甚至问过这个问题,我当时肯定没有解决它。我没有时间,但只是为了它,我会为这个问题添加一个赏金。蜂蜜会吸引苍蝇,对吧:)
标签: javascript html css input range