我怎样才能有负值的范围滑块?

How can I have a range slider with negative values?

我正在使用滑块 <input type="range" /> 和:

它适用于正值(最小值:20,最大值:90,步长:15)但我不知道如何处理负值。
你能帮帮我吗?

Codesandbox.io link

将最小值设置为 -80 并将 padding-left 添加到滑块,让用户认为 -90 是最小值。

const sliders = document.querySelectorAll("input[type=range]");

for (const slider of sliders) {
  slider.addEventListener('change', (e) => {
    e.target.nextElementSibling.value = e.target.value;
  });

  slider.nextElementSibling.value = slider.value;
}
input {
  padding-left: 15px;
}
<input type="range" min="-80" max="-20" step="15" />
<output></output>

你不能简单地使用HTML来做到这一点,因为-90低于-20所以你不能设置min="-20" max="-80"。但是通过使用这个技巧你可以实现你的输出。

将 HTML 保持为:

<input type="range" min="20" max="90" step="15"/>
<output></output>

将您的 JavaScript 更改为:

for (const slider of sliders) {
  slider.addEventListener("change", (e) => {
    e.target.nextElementSibling.value = "-" + e.target.value;
  });

  slider.nextElementSibling.value = "-" + slider.value;
}