Range slider with buttons
HTML
<div class="container">
<button id="minus">-</button>
<input id="range" type="range" step="10" value="50">
<button id="plus">+</button>
<output for="range" id="output">50</output>
</div>
SCSS
.container {
width: 100%;
margin: 50px auto;
display: flex;
justify-content: space-between;
align-items: center;
}
input[type=range] {
width: 100%;
}
button {
flex: 0 0 auto;
width: 40px;
height: 40px;
border-radius: 100%;
background: white;
font-size: 24px;
border: 1px solid lightgrey;
cursor: pointer;
-webkit-appearance: none;
margin: 0 10px;
}
JavaScript
$("#minus").click(function(event) {
zoom("out");
});
$("#plus").click(function(event) {
zoom("in");
});
$("#range").on('input change', function(event) {
$('#output').text($(event.currentTarget).val());
});
function zoom(direction) {
var slider = $("#range");
var step = parseInt(slider.attr('step'), 10);
var currentSliderValue = parseInt(slider.val(), 10);
var newStepValue = currentSliderValue + step;
if (direction === "out") {
newStepValue = currentSliderValue - step;
} else {
newStepValue = currentSliderValue + step;
}
slider.val(newStepValue).change();
};