Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Simplest Custom JavaScript Range Slider by Taufik Nurrohman</title>
</head>
<body>
<div class="range-slider" id="range-slider-1">
  <span></span>
</div>
<div class="range-slider" id="range-slider-2">
  <span></span>
</div>
<div class="test-result" id="test-result">0%</div>
</body>
</html>
 
.range-slider {
  width:300px;
  height:20px;
  margin:0 auto 1em;
  position:relative;
  cursor:e-resize;
}
.range-slider:before {
  content:"";
  display:block;
  position:absolute;
  top:9px;
  left:0;
  width:100%;
  height:2px;
  background-color:black;
}
.range-slider span {
  display:block;
  height:inherit;
  position:relative;
  z-index:2;
  background-color:red;
  cursor:inherit;
}
/* Test result */
.test-result {
  position:absolute;
  top:10px;
  right:10px;
  line-height:1;
}
 
function rangeSlider(id, onDrag) {
    var range = document.getElementById(id),
        dragger = range.children[0],
        draggerWidth = 10, // width of your dragger
        down = false,
        rangeWidth, rangeLeft;
    dragger.style.width = draggerWidth + 'px';
    dragger.style.left = -draggerWidth + 'px';
    dragger.style.marginLeft = (draggerWidth / 2) + 'px';
    range.addEventListener("mousedown", function(e) {
        rangeWidth = this.offsetWidth;
        rangeLeft = this.offsetLeft;
        down = true;
        updateDragger(e);
        return false;
    });
    document.addEventListener("mousemove", function(e) {
        updateDragger(e);
    });
    document.addEventListener("mouseup", function() {
        down = false;
    });
    function updateDragger(e) {
        if (down && e.pageX >= rangeLeft && e.pageX <= (rangeLeft + rangeWidth)) {
            dragger.style.left = e.pageX - rangeLeft - draggerWidth + 'px';
            if (typeof onDrag == "function") onDrag(Math.round(((e.pageX - rangeLeft) / rangeWidth) * 100));
        }
    }
}
// Run!
rangeSlider('range-slider-1', function(value) {
    document.getElementById('test-result').innerHTML = value + '%';
});
rangeSlider('range-slider-2', function(value) {
    document.getElementById('test-result').innerHTML = value + '%';
});
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers