Вступление #

Для кастомизация ползунка можно использовать класс .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'); // Удалит все привязанные события.