react-bootstrap-range-slider
Version:
A range slider component with tooltips for React Bootstrap that extends the HTML input (type=range) element.
418 lines (417 loc) • 15.4 kB
CSS
input[type=range].range-slider {
-webkit-appearance: none;
display: block;
width: 100%;
height: calc(1.5em + 0.75rem + 2px);
padding: 0.375rem 0;
line-height: 1.5;
font: 1rem/1 arial, sans-serif;
color: #ced4da;
background-clip: padding-box;
background: transparent;
border: none;
outline: none;
box-shadow: none;
position: relative;
}
input[type=range].range-slider::-moz-focus-outer {
outline: none;
border: none;
}
input[type=range].range-slider::-moz-focusring {
outline: none;
}
input[type=range].range-slider.range-slider--sm {
height: calc(1.5em + .5rem + 2px);
padding: 0.25rem 0;
font-size: 0.875rem;
}
input[type=range].range-slider.range-slider--lg {
height: calc(1.5em + 1rem + 2px);
padding: 0.5rem 0;
font-size: 1.25rem;
}
input[type=range].range-slider::-webkit-slider-runnable-track {
box-sizing: border-box;
border: none;
height: 4px;
background: #ced4da;
border-radius: 2px;
}
input[type=range].range-slider::-moz-range-track {
box-sizing: border-box;
border: none;
height: 4px;
background: #ced4da;
border-radius: 2px;
}
input[type=range].range-slider::-ms-track {
box-sizing: border-box;
border: none;
height: 4px;
background: #ced4da;
border-radius: 2px;
}
input[type=range].range-slider::-ms-fill-lower {
box-sizing: border-box;
border: none;
height: 4px;
background: #ced4da;
border-radius: 2px;
}
input[type=range].range-slider::-ms-track {
color: transparent;
}
input[type=range].range-slider.range-slider--lg::-webkit-slider-runnable-track {
height: 6px;
border-radius: 3px;
}
input[type=range].range-slider.range-slider--lg::-moz-range-track {
height: 6px;
border-radius: 3px;
}
input[type=range].range-slider.range-slider--lg::-ms-track {
height: 6px;
border-radius: 3px;
}
input[type=range].range-slider.range-slider--lg::-ms-fill-lower {
height: 6px;
border-radius: 3px;
}
input[type=range].range-slider.disabled::-webkit-slider-runnable-track {
background: #e9e9e9;
cursor: not-allowed;
}
input[type=range].range-slider.disabled::-moz-range-track {
background: #e9e9e9;
cursor: not-allowed;
}
input[type=range].range-slider.disabled::-ms-track {
background: #e9e9e9;
cursor: not-allowed;
}
input[type=range].range-slider.range-slider--primary::-webkit-slider-thumb {
background: #007bff;
}
input[type=range].range-slider.range-slider--primary::-moz-range-thumb {
background: #007bff;
}
input[type=range].range-slider.range-slider--primary::-ms-thumb {
background: #007bff;
}
input[type=range].range-slider.range-slider--primary:not(.disabled):focus::-webkit-slider-thumb, input[type=range].range-slider.range-slider--primary:not(.disabled):active::-webkit-slider-thumb {
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
input[type=range].range-slider.range-slider--primary:not(.disabled):focus::-moz-range-thumb, input[type=range].range-slider.range-slider--primary:not(.disabled):active::-moz-range-thumb {
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
input[type=range].range-slider.range-slider--primary:not(.disabled):focus::-ms-thumb, input[type=range].range-slider.range-slider--primary:not(.disabled):active::-ms-thumb {
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
input[type=range].range-slider.range-slider--secondary::-webkit-slider-thumb {
background: #6c757d;
}
input[type=range].range-slider.range-slider--secondary::-moz-range-thumb {
background: #6c757d;
}
input[type=range].range-slider.range-slider--secondary::-ms-thumb {
background: #6c757d;
}
input[type=range].range-slider.range-slider--secondary:not(.disabled):focus::-webkit-slider-thumb, input[type=range].range-slider.range-slider--secondary:not(.disabled):active::-webkit-slider-thumb {
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.25);
}
input[type=range].range-slider.range-slider--secondary:not(.disabled):focus::-moz-range-thumb, input[type=range].range-slider.range-slider--secondary:not(.disabled):active::-moz-range-thumb {
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.25);
}
input[type=range].range-slider.range-slider--secondary:not(.disabled):focus::-ms-thumb, input[type=range].range-slider.range-slider--secondary:not(.disabled):active::-ms-thumb {
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.25);
}
input[type=range].range-slider.range-slider--success::-webkit-slider-thumb {
background: #28a745;
}
input[type=range].range-slider.range-slider--success::-moz-range-thumb {
background: #28a745;
}
input[type=range].range-slider.range-slider--success::-ms-thumb {
background: #28a745;
}
input[type=range].range-slider.range-slider--success:not(.disabled):focus::-webkit-slider-thumb, input[type=range].range-slider.range-slider--success:not(.disabled):active::-webkit-slider-thumb {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
input[type=range].range-slider.range-slider--success:not(.disabled):focus::-moz-range-thumb, input[type=range].range-slider.range-slider--success:not(.disabled):active::-moz-range-thumb {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
input[type=range].range-slider.range-slider--success:not(.disabled):focus::-ms-thumb, input[type=range].range-slider.range-slider--success:not(.disabled):active::-ms-thumb {
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
input[type=range].range-slider.range-slider--danger::-webkit-slider-thumb {
background: #dc3545;
}
input[type=range].range-slider.range-slider--danger::-moz-range-thumb {
background: #dc3545;
}
input[type=range].range-slider.range-slider--danger::-ms-thumb {
background: #dc3545;
}
input[type=range].range-slider.range-slider--danger:not(.disabled):focus::-webkit-slider-thumb, input[type=range].range-slider.range-slider--danger:not(.disabled):active::-webkit-slider-thumb {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
input[type=range].range-slider.range-slider--danger:not(.disabled):focus::-moz-range-thumb, input[type=range].range-slider.range-slider--danger:not(.disabled):active::-moz-range-thumb {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
input[type=range].range-slider.range-slider--danger:not(.disabled):focus::-ms-thumb, input[type=range].range-slider.range-slider--danger:not(.disabled):active::-ms-thumb {
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
input[type=range].range-slider.range-slider--warning::-webkit-slider-thumb {
background: #ffc107;
}
input[type=range].range-slider.range-slider--warning::-moz-range-thumb {
background: #ffc107;
}
input[type=range].range-slider.range-slider--warning::-ms-thumb {
background: #ffc107;
}
input[type=range].range-slider.range-slider--warning:not(.disabled):focus::-webkit-slider-thumb, input[type=range].range-slider.range-slider--warning:not(.disabled):active::-webkit-slider-thumb {
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.25);
}
input[type=range].range-slider.range-slider--warning:not(.disabled):focus::-moz-range-thumb, input[type=range].range-slider.range-slider--warning:not(.disabled):active::-moz-range-thumb {
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.25);
}
input[type=range].range-slider.range-slider--warning:not(.disabled):focus::-ms-thumb, input[type=range].range-slider.range-slider--warning:not(.disabled):active::-ms-thumb {
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.25);
}
input[type=range].range-slider.range-slider--info::-webkit-slider-thumb {
background: #17a2b8;
}
input[type=range].range-slider.range-slider--info::-moz-range-thumb {
background: #17a2b8;
}
input[type=range].range-slider.range-slider--info::-ms-thumb {
background: #17a2b8;
}
input[type=range].range-slider.range-slider--info:not(.disabled):focus::-webkit-slider-thumb, input[type=range].range-slider.range-slider--info:not(.disabled):active::-webkit-slider-thumb {
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.25);
}
input[type=range].range-slider.range-slider--info:not(.disabled):focus::-moz-range-thumb, input[type=range].range-slider.range-slider--info:not(.disabled):active::-moz-range-thumb {
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.25);
}
input[type=range].range-slider.range-slider--info:not(.disabled):focus::-ms-thumb, input[type=range].range-slider.range-slider--info:not(.disabled):active::-ms-thumb {
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.25);
}
input[type=range].range-slider.range-slider--light::-webkit-slider-thumb {
background: #f8f9fa;
}
input[type=range].range-slider.range-slider--light::-moz-range-thumb {
background: #f8f9fa;
}
input[type=range].range-slider.range-slider--light::-ms-thumb {
background: #f8f9fa;
}
input[type=range].range-slider.range-slider--light:not(.disabled):focus::-webkit-slider-thumb, input[type=range].range-slider.range-slider--light:not(.disabled):active::-webkit-slider-thumb {
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.25);
}
input[type=range].range-slider.range-slider--light:not(.disabled):focus::-moz-range-thumb, input[type=range].range-slider.range-slider--light:not(.disabled):active::-moz-range-thumb {
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.25);
}
input[type=range].range-slider.range-slider--light:not(.disabled):focus::-ms-thumb, input[type=range].range-slider.range-slider--light:not(.disabled):active::-ms-thumb {
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.25);
}
input[type=range].range-slider.range-slider--dark::-webkit-slider-thumb {
background: #343a40;
}
input[type=range].range-slider.range-slider--dark::-moz-range-thumb {
background: #343a40;
}
input[type=range].range-slider.range-slider--dark::-ms-thumb {
background: #343a40;
}
input[type=range].range-slider.range-slider--dark:not(.disabled):focus::-webkit-slider-thumb, input[type=range].range-slider.range-slider--dark:not(.disabled):active::-webkit-slider-thumb {
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.25);
}
input[type=range].range-slider.range-slider--dark:not(.disabled):focus::-moz-range-thumb, input[type=range].range-slider.range-slider--dark:not(.disabled):active::-moz-range-thumb {
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.25);
}
input[type=range].range-slider.range-slider--dark:not(.disabled):focus::-ms-thumb, input[type=range].range-slider.range-slider--dark:not(.disabled):active::-ms-thumb {
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.25);
}
input[type=range].range-slider::-webkit-slider-thumb {
-webkit-appearance: none;
box-sizing: border-box;
border: none;
border-radius: 50%;
background: #007bff;
height: 20px;
width: 20px;
cursor: pointer;
transition: box-shadow 0.5s ease;
margin-top: -8px;
}
input[type=range].range-slider::-moz-range-thumb {
-webkit-appearance: none;
box-sizing: border-box;
border: none;
border-radius: 50%;
background: #007bff;
height: 20px;
width: 20px;
cursor: pointer;
transition: box-shadow 0.5s ease;
}
input[type=range].range-slider::-ms-thumb {
-webkit-appearance: none;
box-sizing: border-box;
border: none;
border-radius: 50%;
background: #007bff;
height: 20px;
width: 20px;
cursor: pointer;
transition: box-shadow 0.5s ease;
margin-top: 0;
}
input[type=range].range-slider.range-slider--sm::-webkit-slider-thumb {
height: 16px;
width: 16px;
margin-top: -6px;
}
input[type=range].range-slider.range-slider--sm::-moz-range-thumb {
height: 16px;
width: 16px;
}
input[type=range].range-slider.range-slider--sm::-ms-thumb {
height: 16px;
width: 16px;
margin-top: 0;
}
input[type=range].range-slider.range-slider--lg::-webkit-slider-thumb {
height: 24px;
width: 24px;
margin-top: -9px;
}
input[type=range].range-slider.range-slider--lg::-moz-range-thumb {
height: 24px;
width: 24px;
}
input[type=range].range-slider.range-slider--lg::-ms-thumb {
height: 24px;
width: 24px;
margin-top: 0;
}
input[type=range].range-slider.disabled::-webkit-slider-thumb {
background: #e9e9e9;
cursor: not-allowed;
}
input[type=range].range-slider.disabled::-moz-range-thumb {
background: #e9e9e9;
cursor: not-allowed;
}
input[type=range].range-slider.disabled::-ms-thumb {
background: #e9e9e9;
cursor: not-allowed;
}
input[type=range].range-slider::-ms-tooltip {
display: none;
}
.range-slider__wrap {
position: relative;
display: block;
height: calc(1.5em + 0.75rem + 2px);
}
.range-slider__wrap .range-slider__tooltip {
display: block;
position: absolute;
width: 0;
height: 26px;
text-align: center;
overflow: visible;
opacity: 0;
transition: opacity 0.15s linear;
z-index: 1070;
}
.range-slider__wrap .range-slider__tooltip.range-slider__tooltip--top {
bottom: calc(0.75em + 0.375rem + 1px + .4rem + 10px + 3px);
top: auto;
}
.range-slider__wrap .range-slider__tooltip.range-slider__tooltip--bottom {
top: calc(0.75em + 0.375rem + 1px + .4rem + 10px + 3px);
bottom: auto;
}
.range-slider__wrap .range-slider__tooltip.range-slider__tooltip--on {
opacity: 0.9;
}
.range-slider__wrap .range-slider__tooltip.range-slider__tooltip--on.range-slider__tooltip--disabled {
opacity: 0.25;
}
.range-slider__wrap .range-slider__tooltip .range-slider__tooltip__label {
position: absolute;
transform: translateX(-50%);
max-width: 200px;
padding: 0 0.5rem;
height: 26px;
line-height: 26px;
color: white;
text-align: center;
background-color: black;
opacity: 0.9;
border-radius: 0.25rem;
box-sizing: border-box;
font-size: 0.875rem;
white-space: nowrap;
}
.range-slider__wrap .range-slider__tooltip .range-slider__tooltip__caret {
position: absolute;
transform: translateX(-50%);
display: block;
width: 0.8rem;
height: 0.4rem;
opacity: 0.9;
}
.range-slider__wrap .range-slider__tooltip .range-slider__tooltip__caret::before {
position: absolute;
content: "";
border-color: transparent;
border-style: solid;
left: 0;
}
.range-slider__wrap .range-slider__tooltip.range-slider__tooltip--top .range-slider__tooltip__caret {
bottom: -0.4rem;
}
.range-slider__wrap .range-slider__tooltip.range-slider__tooltip--top .range-slider__tooltip__caret::before {
top: 0;
border-width: 0.4rem 0.4rem 0;
border-top-color: black;
}
.range-slider__wrap .range-slider__tooltip.range-slider__tooltip--bottom .range-slider__tooltip__caret {
top: -0.4rem;
}
.range-slider__wrap .range-slider__tooltip.range-slider__tooltip--bottom .range-slider__tooltip__caret::before {
bottom: 0;
border-width: 0 0.4rem 0.4rem;
border-bottom-color: black;
}
.range-slider__wrap.range-slider__wrap--sm {
height: calc(1.5em + 0.5rem + 2px);
font-size: 0.875rem;
}
.range-slider__wrap.range-slider__wrap--sm .range-slider__tooltip--top {
bottom: calc(0.75em + 0.25rem + 1px + .4rem + 8px + 3px);
}
.range-slider__wrap.range-slider__wrap--sm .range-slider__tooltip--bottom {
top: calc(0.75em + 0.25rem + 1px + .4rem + 8px + 3px);
}
.range-slider__wrap.range-slider__wrap--lg {
height: calc(1.5em + 1rem + 2px);
font-size: 1.25rem;
}
.range-slider__wrap.range-slider__wrap--lg .range-slider__tooltip--top {
bottom: calc(0.75em + 0.5rem + 1px + .4rem + 12px + 3px);
}
.range-slider__wrap.range-slider__wrap--lg .range-slider__tooltip--bottom {
top: calc(0.75em + 0.5rem + 1px + .4rem + 12px + 3px);
}
.range-slider__wrap:hover .range-slider__tooltip:not(.range-slider__tooltip--off):not(.range-slider__tooltip--disabled) {
opacity: 0.9;
}
.range-slider__wrap:hover .range-slider__tooltip--disabled:not(.range-slider__tooltip--off) {
opacity: 0.25;
}