Вступление #
Для кастомизация ползунка можно использовать класс .js-range-slider по умолчанию и стандартную разметку.
Ползунок реализован на базе noUiSlider.
Установка #
Пример разметки и инициализации кастомизированного ползунка.
<input
class="js-range-slider"
type="range"
min="0"
max="100"
step="10"
data-range-id="my-range"
data-range-options='{
"connect": "lower",
"start": 50,
"pips": { "mode": "steps", "stepped": true, "density": 4 }
}'
/>
// настройки noUiSlider(https://refreshless.com/nouislider/slider-options/)
const options = {
'connect': 'lower',
'start': 50,
'pips': {
'mode': 'steps',
'stepped': true,
'density': 4,
},
};
BasicRangeSlider.init('.my-range-slider', options);
BasicRangeSlider.init(document.querySelector('.my-range-slider'), options);
BasicRangeSlider.init(document.querySelectorAll('.my-range-slider'), options);
// или
BasicRangeSlider.init(); // по умолчанию инициaлизирует элементы с классом .js-range-slider
Конфигурация #
Настройки, заданные с использованием data-атрибутов.
data-range-options #
В значении указываются параметры для гибкой настройки ползунка. С ними можно ознакомиться на странице официальной документации.
<input
class="js-range-slider"
type="range"
data-range-options='{
"connect": true,
"start": [0, 80],
"pips": { "mode": "steps", "stepped": true, "density": 4 }
}'
/>
data-range-id #
В значениях можно указать id для кастомизированного ползунка.
<input
class="js-range-slider"
data-range-id="my-range"
/>
min, max, step #
Стандартные параметры, которые задаются с помощью обычных атрибутов.
<input
class="js-range-slider"
min="0"
max="100"
step="10"
data-range-options='{
"connect": true,
"start": [0, 80],
"pips": { "mode": "steps", "stepped": true, "density": 4 }
}'
/>
| Название | Тип | Описание |
|---|---|---|
min |
number |
Минимальное значение для ползунка. |
max |
number |
Максимальное значение для ползунка. |
step |
number |
Шаг для изменения значения ползунка. |
Экземпляр #
У каждого инициализированного элемента есть свой экземпляр.
const myRangeSlider = document.querySelector(".my-range-slider");
console.log(myRangeSlider.BasicRangeSlider); // пример экземпляра
В настоящее время экземпляр поддерживает все методы.
Прослушивание событий #
Представляют собой оболочки для noUiSlider.on.
BasicRangeSlider.on('.my-range-slider', {
event: 'change',
listener: (values, handle, unencoded, tap, positions, noUiSlider) => {
console.log(values);
}
});
Для удаления события можно использовать метод BasicRangeSlider.off().
BasicRangeSlider.off('.my-range-slider', 'change'); // Удалит событие "change";
BasicRangeSlider.off('.my-range-slider'); // Удалит все привязанные события.