"Stylish Sliders/Range Selectors!"
Bootstrap 3.1.0 Snippet by srichakradhar

<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"></script> <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <!------ Include the above in your HEAD tag ----------> <div class="container"> <h2>Range Sliders <small>Only tested in Chrome!</small></h2> <hr/> <div class="row"> <div class="col-xs-6"> <div class="range"> <input type="range" name="range" min="1" max="100" value="50" onchange="range.value=value"> <output id="range">50</output> </div> </div> <div class="col-xs-6"> <div class="range range-primary"> <input type="range" name="range" min="1" max="100" value="50" onchange="rangePrimary.value=value"> <output id="rangePrimary">50</output> </div> </div> </div> <div class="row"> <div class="col-xs-6"> <div class="range range-success"> <input type="range" name="range" min="1" max="100" value="50" onchange="rangeSuccess.value=value"> <output id="rangeSuccess">50</output> </div> </div> <div class="col-xs-6"> <div class="range range-info"> <input type="range" name="range" min="1" max="100" value="50" onchange="rangeInfo.value=value"> <output id="rangeInfo">50</output> </div> </div> </div> <div class="row"> <div class="col-xs-6"> <div class="range range-warning"> <input type="range" name="range" min="1" max="100" value="50" onchange="rangeWarning.value=value"> <output id="rangeWarning">50</output> </div> </div> <div class="col-xs-6"> <div class="range range-danger"> <input type="range" name="range" min="1" max="100" value="50" onchange="rangeDanger.value=value"> <output id="rangeDanger">50</output> </div> </div> </div> <div class="col-xs-6"> <div class="range range-success range-slider"> <!--<span class="rangeValues"></span>--> <input value="0" min="0" max="100" step="1" type="range" class="pull-left"> <input value="50" min="0" max="100" step="1" type="range" class="pull-left"> <output class='rangeValues' id="rangeMultiple">50</output> </div> </div> </div>
@import url(http://fonts.googleapis.com/css?family=Roboto:400,300); @import url(http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css); body { padding: 70px 0px; } .range { display: table; position: relative; height: 25px; margin-top: 20px; background-color: rgb(245, 245, 245); border-radius: 4px; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); cursor: pointer; } .range input[type="range"] { -webkit-appearance: none !important; -moz-appearance: none !important; -ms-appearance: none !important; -o-appearance: none !important; appearance: none !important; display: table-cell; width: 100%; background-color: transparent; height: 25px; cursor: pointer; } .range input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none !important; -moz-appearance: none !important; -ms-appearance: none !important; -o-appearance: none !important; appearance: none !important; width: 11px; height: 25px; color: rgb(255, 255, 255); text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: 0px; background-color: rgb(153, 153, 153); } .range input[type="range"]::-moz-slider-thumb { -webkit-appearance: none !important; -moz-appearance: none !important; -ms-appearance: none !important; -o-appearance: none !important; appearance: none !important; width: 11px; height: 25px; color: rgb(255, 255, 255); text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: 0px; background-color: rgb(153, 153, 153); } .range output { display: table-cell; padding: 3px 5px 2px; min-width: 80px; color: rgb(255, 255, 255); background-color: rgb(153, 153, 153); text-align: center; text-decoration: none; border-radius: 4px; border-bottom-left-radius: 0; border-top-left-radius: 0; width: 1%; white-space: nowrap; vertical-align: middle; -webkit-transition: all 0.5s ease; -moz-transition: all 0.5s ease; -o-transition: all 0.5s ease; -ms-transition: all 0.5s ease; transition: all 0.5s ease; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: -moz-none; -o-user-select: none; user-select: none; } .range input[type="range"] { outline: none; } .range.range-primary input[type="range"]::-webkit-slider-thumb { background-color: rgb(66, 139, 202); } .range.range-primary input[type="range"]::-moz-slider-thumb { background-color: rgb(66, 139, 202); } .range.range-primary output { background-color: rgb(66, 139, 202); } .range.range-primary input[type="range"] { outline-color: rgb(66, 139, 202); } .range.range-success input[type="range"]::-webkit-slider-thumb { background-color: rgb(92, 184, 92); } .range.range-success input[type="range"]::-moz-slider-thumb { background-color: rgb(92, 184, 92); } .range.range-success output { background-color: rgb(92, 184, 92); } .range.range-success input[type="range"] { outline-color: rgb(92, 184, 92); } .range.range-info input[type="range"]::-webkit-slider-thumb { background-color: rgb(91, 192, 222); } .range.range-info input[type="range"]::-moz-slider-thumb { background-color: rgb(91, 192, 222); } .range.range-info output { background-color: rgb(91, 192, 222); } .range.range-info input[type="range"] { outline-color: rgb(91, 192, 222); } .range.range-warning input[type="range"]::-webkit-slider-thumb { background-color: rgb(240, 173, 78); } .range.range-warning input[type="range"]::-moz-slider-thumb { background-color: rgb(240, 173, 78); } .range.range-warning output { background-color: rgb(240, 173, 78); } .range.range-warning input[type="range"] { outline-color: rgb(240, 173, 78); } .range.range-danger input[type="range"]::-webkit-slider-thumb { background-color: rgb(217, 83, 79); } .range.range-danger input[type="range"]::-moz-slider-thumb { background-color: rgb(217, 83, 79); } .range.range-danger output { background-color: rgb(217, 83, 79); } .range.range-danger input[type="range"] { outline-color: rgb(217, 83, 79); } .range-slider { position: relative; /*width: 100%;*/ /*height: 35px;*/ /*text-align: center;*/ } .range-slider input { /*pointer-events: none;*/ position: absolute; /*overflow: hidden;*/ /*left: 0;*/ /*top: 15px;*/ /*width: 100%;*/ /*outline: none;*/ /*height: 18px;*/ margin: 0; padding: 0; } .range-slider input::-webkit-slider-thumb { pointer-events: all; position: relative; z-index: 1; outline: 0; } .range-slider input::-moz-range-thumb { pointer-events: all; position: relative; z-index: 10; -moz-appearance: none; width: 9px; } .range-slider input::-moz-range-track { position: relative; z-index: -1; background-color: rgba(0, 0, 0, 1); border: 0; } .range-slider input:last-of-type::-moz-range-track { -moz-appearance: none; background: none transparent; border: 0; } .range-slider input[type=range]::-moz-focus-outer { border: 0; }
function getVals(){ // Get slider values var parent = this.parentNode; var slides = parent.getElementsByTagName("input"); var slide1 = parseFloat( slides[0].value ); var slide2 = parseFloat( slides[1].value ); // Neither slider will clip the other, so make sure we determine which is larger if( slide1 > slide2 ){ var tmp = slide2; slide2 = slide1; slide1 = tmp; } var displayElement = parent.getElementsByClassName("rangeValues")[0]; displayElement.innerHTML = slide1 + " - " + slide2; } window.onload = function(){ // Initialize Sliders var sliderSections = document.getElementsByClassName("range-slider"); for( var x = 0; x < sliderSections.length; x++ ){ var sliders = sliderSections[x].getElementsByTagName("input"); for( var y = 0; y < sliders.length; y++ ){ if( sliders[y].type ==="range" ){ sliders[y].oninput = getVals; // Manually trigger event first time to display values sliders[y].oninput(); } } } }

Related: See More


Questions / Comments: