JSFiddle - React, Tailwind, and code Playground
by Keith Jeter
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css">
<div id="slider"></div>
CSS
#slider{
margin: 50px;
}
.value {
position: absolute;
top: 30px;
left: 50%;
margin: 0 0 0 -20px;
width: 40px;
text-align: center;
display: block;
/* optional */
font-weight: normal;
font-family: Verdana,Arial,sans-serif;
font-size: 14px;
color: #333;
}
.price-range-both.value {
width: 100px;
margin: 0 0 0 -50px;
top: 26px;
}
.price-range-both {
display: none;
}
.value i {
font-style: normal;
}
body div.ui-slider-range.ui-widget-header {
background: #F44336;
}
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus{
background: #2ecaf9 !important;
}
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default{
background: #2ecaf9 !important;
border-radius: 50%;
font-size:21px;
border: none !important;
box-shadow: 0 0 7px #306473;
&:focus{
outline: none;
}
}
span.ui-slider-handle.ui-corner-all.ui-state-default:focus {
outline: none;
}
JavaScript
function collision($div1, $div2) {
var x1 = $div1.offset().left;
var w1 = 40;
var r1 = x1 + w1;
var x2 = $div2.offset().left;
var w2 = 40;
var r2 = x2 + w2;
if (r1 < x2 || x1 > r2)
return false;
return true;
}
// Fetch Url value
var getQueryString = function (parameter) {
var href = window.location.href;
var reg = new RegExp('[?&]' + parameter + '=([^&#]*)', 'i');
var string = reg.exec(href);
return string ? string[1] : null;
};
// End url
// // slider call
$('#slider').slider({
range: true,
min: 1000,
max: 10000,
step: 1,
values: [getQueryString('minval') ? getQueryString('minval') : 3000, getQueryString('maxval') ? getQueryString('maxval') : 6000],
slide: function (event, ui) {
$('.ui-slider-handle:eq(0) .price-range-min').html('$' + ui.values[ 0 ]);
$('.ui-slider-handle:eq(1) .price-range-max').html('$' + ui.values[ 1 ]);
$('.price-range-both').html('<i>$' + ui.values[ 0 ] + ' - </i>$' + ui.values[ 1 ]);
// get values of min and max
$("#minval").val(ui.values[0]);
$("#maxval").val(ui.values[1]);
if (ui.values[0] == ui.values[1]) {
$('.price-range-both i').css('display', 'none');
} else {
$('.price-range-both i').css('display', 'inline');
}
if (collision($('.price-range-min'), $('.price-range-max')) == true) {
$('.price-range-min, .price-range-max').css('opacity', '0');
$('.price-range-both').css('display', 'block');
} else {
$('.price-range-min, .price-range-max').css('opacity', '1');
$('.price-range-both').css('display', 'none');
}
}
});
$('.ui-slider-range').append('<span class="price-range-both value"><i>$' + $('#slider').slider('values', 0) + ' - </i>' + $('#slider').slider('values', 1) + '</span>');
$('.ui-slider-handle:eq(0)').append('<span class="price-range-min value">$' +...