使 html5 input[type=range] with many steps snap to the middle

Make html5 input[type=range] with many steps snap to the middle

我有一个 60000 步的 <input type=range>。 当它靠近中间时,我需要插入符号跳到中间。我怎样才能做到这一点?

我正在使用 Angular 和 jQuery 库。

不确定您到目前为止尝试了什么或您的实际目标是什么。但我的理解是,如果范围中间三分之一的值被 selected,你希望它成为中间值。这是我的例子。

HTML:

<input id="slider1" type="range" min="0" max="500" step="20" />

JQuery:

$('#slider1').change( function() {
    var cVal =  $(this).val(); 
    if (cVal >= 200 && cVal <= 300) {
        $('#slider1').val("250");
    }
});

因此,如果一旦更改它等于 200 到 300 之间的任何值,它将默认为 250。这里的问题是它将值设置为 250,而不仅仅是 caretPosition。您可以根据需要更改所有设置。有一个我以前没有用过的插件,叫做 jQuery Caret 如果你想保留 selected 值并只是改变位置,它可能会有更好的帮助,但我又一次没有使用它。

有一个 HTML5 功能,它使用 list 属性和匹配的 datalist 元素提供本机定位捕捉。列表中的每个元素都成为滑块中的定位点,带有刻度线和捕捉。

<input type="range" value="0" min="0" max="60000" step="1" list="my-detents">

<datalist id="my-detents">
  <option value="30000">
</datalist>

datalist元素可以放在HTML中的任何位置;它只是定义供 input 元素使用的列表(此处命名为 my-detents)。

根据 MDN and caniuse.com,截至 2019 年 2 月,Chrome、IE、Edge 和 Safari 预览版支持使用 datalistrange 输入. (Firefox 仅支持 datalist 用于 text 输入。)