为什么我的 noUiSlider 只尊重滑块一半的 "step" 值?
Why does my noUiSlider only respect the "step" value on half of the slider?
我正在尝试创建一个 noUiSlider,它具有一系列值、滑块上的刻度并以设定的步长值移动。
使用点子文档页面上的 example,我能够将其设置为显示范围从 -500 到 20,000 的滑块。
然而,step
仅适用于定义的 50% 标记(不是数学上的 50% 标记)。右边的所有内容(在本例中为 5000 到 20,000)都不会按步骤增加。相反,它会按分数增加。
var slider = document.getElementById('slider');
var low = document.getElementById('low');
var high = document.getElementById('high');
var range_all_sliders = {
'min': [-500],
'50%': [5000],
'max': [20000]
};
noUiSlider.create(slider, {
start: [-500, 20000],
step: 500,
connect: true,
range: range_all_sliders,
pips: {
mode: 'range',
density: 8
}
});
slider.noUiSlider.on('update', function(values, handle) {
low.value = values[0];
high.value = values[1];
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/8.5.1/nouislider.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/8.5.1/nouislider.min.js"></script>
<div id="slider"></div>
<br/>
<br/>
<input type="text" id="low" placeholder="Min" value="Min" />
<input type="text" id="high" placeholder="Max" value="Max" />
滑动两个手柄。低端(从-500开始)将增加500,直到达到5000,然后忽略500的步长值到20,000。如果从高端开始,不考虑步长值,一直递减,直到5000,再递减500,直到-500。
如何使 step
值在整个滑块上有效?
发生这种情况是因为您使用的是非线性滑块。您提供的 step
选项是 range
选项中符号的 shorthand。它以这种方式工作,因为单个步长值 可能 不适合每个指定的子范围。
您需要为范围的每个部分提供步骤:
var range_all_sliders = {
'min': [ -500, 500], // Step for this range is 500
'50%': [ 5000, 500], // For this one too
'max': [ 20000 ] // n/a
};
查看 the full documentation 了解更多详情。
我正在尝试创建一个 noUiSlider,它具有一系列值、滑块上的刻度并以设定的步长值移动。
使用点子文档页面上的 example,我能够将其设置为显示范围从 -500 到 20,000 的滑块。
然而,step
仅适用于定义的 50% 标记(不是数学上的 50% 标记)。右边的所有内容(在本例中为 5000 到 20,000)都不会按步骤增加。相反,它会按分数增加。
var slider = document.getElementById('slider');
var low = document.getElementById('low');
var high = document.getElementById('high');
var range_all_sliders = {
'min': [-500],
'50%': [5000],
'max': [20000]
};
noUiSlider.create(slider, {
start: [-500, 20000],
step: 500,
connect: true,
range: range_all_sliders,
pips: {
mode: 'range',
density: 8
}
});
slider.noUiSlider.on('update', function(values, handle) {
low.value = values[0];
high.value = values[1];
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/8.5.1/nouislider.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/8.5.1/nouislider.min.js"></script>
<div id="slider"></div>
<br/>
<br/>
<input type="text" id="low" placeholder="Min" value="Min" />
<input type="text" id="high" placeholder="Max" value="Max" />
滑动两个手柄。低端(从-500开始)将增加500,直到达到5000,然后忽略500的步长值到20,000。如果从高端开始,不考虑步长值,一直递减,直到5000,再递减500,直到-500。
如何使 step
值在整个滑块上有效?
发生这种情况是因为您使用的是非线性滑块。您提供的 step
选项是 range
选项中符号的 shorthand。它以这种方式工作,因为单个步长值 可能 不适合每个指定的子范围。
您需要为范围的每个部分提供步骤:
var range_all_sliders = {
'min': [ -500, 500], // Step for this range is 500
'50%': [ 5000, 500], // For this one too
'max': [ 20000 ] // n/a
};
查看 the full documentation 了解更多详情。