ion.rangeSlider test playground

by Denis Ineshin

HTML

<script src="https://cdn.jsdelivr.net/npm/[email protected]/js/ion.rangeSlider.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/ion.rangeSlider.min.css">
<div class="range-slider">
    <input type="text" class="js-range-slider" value="" />
</div>
<div class="extra-controls">
    Placeholder for some buttons to change slider behavior
</div>

CSS

html {
    height: 100%;
}
body {
    height: 100%;
    overflow: hidden;
    margin: 40px;
    font-family: Arial, sans-serif;
    font-size: 12px;
}
.range-slider {
    position: relative;
    height: 80px;
}
.extra-controls {
    position: relative;
    border-top: 3px solid #000;
    padding: 10px 0 0;
}

.mark {
    display: block;
    position: absolute;
    top: 45px;
    background: #f00;
    transform: rotate(-45deg);
    padding: 1px 3px;
    border-radius: 3px;
    color: #fff;
    margin-left: -10px;
}

JavaScript

var $range = $(".js-range-slider");
var min = 100;
var max = 1000;
var marks = [700, 900];

$range.ionRangeSlider({
		skin: "big",
    type: "single",
    min: min,
    max: max,
    from: 300,
    onStart: function (data) {
    	addMarks(data.slider);
    }
});

function convertToPercent (num) {
	var percent = (num - min) / (max - min) * 100;
    
	return percent;
}

function addMarks ($slider) {
	var html = '';
    var left = 0;
    var i;
    
    for (i = 0; i < marks.length; i++) {
    	left = convertToPercent(marks[i]);
    	html += '<span class="mark" style="left: ' + left + '%">' + marks[i] + '</span>';
    }
    
    $slider.append(html);
}