A web component range slider. This is very like the <input type="range" />
element in that it takes a min
, a max
, and a step
attribute but it also takes a low
and high
. If you subscribe to the input
event you will get the low, high, and range (the difference between them) as an object called values
.
All you need is to include this in your document head and it will automatically work when you invoke <range-slider min="0" max="128" low="0" high="128" step="1"></range-slider>
You can create this dynamically like this:
const range = document.createElement('range-slider');
range.min = 0;
range.max = 128;
range.low = 10;
range.high = 50;
range.step = 1;
document.body.append(range);
You can subscribe to the returned values by attaching an event listener to the input
like so:
range.addEventListener('input', () => {
console.log(range.values);
});
This will return an object with the low
, high
, and range
(the difference between them) like this:
{
"low": 0,
"high": 0,
"range": 0
}
This is based loosely on the very elegant example I originally found at: https://codeconvey.com/snippet/html-css-range-slider-with-2-handle-controls-Nj3KvzTY