Range
Range inputs allow users to set value based on a range.
Markup
Creating a range field is super simple thanks to JavaScript. Create an element with the range-slider js-range-slider
classes with an input[type=range]
as the child:
<div class="range-slider js-range-slider">
<input type="range" min="0" max="10" value="5" step="1">
</div>
Icons
Icons can be added either side of the range input by simply adding them as you usually would. No other special markup is required here. The icons also get styled when the range reaches it's min
and max
values:
<div class="range-slider js-range-slider">
<span class="fa fa-volume-off"></span>
<input type="range" min="0" max="200" value="50" step="1">
<span class="fa fa-volume-high"></span>
</div>
Indicators
Add indicators for both the min
and max
by adding the range-indicators
modifier class to the wrapper element.
When indicators are added either side, the active
indicator gets styled to show it is the current value.
<div class="range-slider range-indicators js-range-slider">
<input type="range" min="0" max="100" value="50" step="1">
</div>
Adding the range-labeled
modifier class to wrapper element styles the indicators as labels:
<!-- Label style -->
<div class="range-slider range-labeled js-range-slider">
<input type="range" min="0" max="100" value="50" step="1">
</div>
<!-- Label style both indicators -->
<div class="range-slider range-labeled range-indicators js-range-slider">
<input type="range" min="0" max="100" value="50" step="1">
</div>
Prefix & Suffix
You can also add an optional prefix and/or suffix string to the indicators. This is controlled via data attributes on the input:
<div class="range-slider js-range-slider">
<input type="range" min="0" max="500" value="50" step="1" data-prefix="$" data-suffix=".00">
</div>
<div class="range-slider range-labeled js-range-slider">
<input type="range" min="0" max="500" value="50" step="1" data-prefix="$" data-suffix=".00">
</div>
CSS Customization
Range inputs use local CSS variables on .range-slider
for enhanced component customization and styling. The base values are used by the UI to create all the variants. Values for the CSS variables are set via Sass, so pre-compilation customization is still supported too.
Default values are set in the scss/_config.scss
file in Frontbx's source.
scss/_config.scss
$range-track-bg: var(--fbx-gray-300);
$range-track-highlight: var(--fbx-theme-info);
$range-thumb-bg: var(--fbx-theme-info);
$range-track-size: 4px;
$range-thumb-size: 16px;
$range-thumb-focus-ring-color: rgba(var(--fbx-theme-info-rgb), 0.3);
$range-indicator-color: var(--fbx-gray-300);
$range-indicator-font-size: 1.35rem;
$range-icon-color: var(--fbx-gray-400);
$range-icon-color-on: var(--fbx-theme-info);
$range-icon-color-off: var(--fbx-gray-200);
.range-slider
{
--fbx-track-bg: var(--fbx-gray-300);
--fbx-track-highlight: var(--fbx-theme-info);
--fbx-thumb-bg: var(--fbx-theme-info);
--fbx-track-size: 4px;
--fbx-thumb-size: 16px;
--fbx-thumb-focus-ring-color: rgba(var(--fbx-theme-info-rgb),0.3);
--fbx-indicator-color: var(--fbx-gray-300);
--fbx-indicator-font-size: 1.35rem;
--fbx-icon-color: var(--fbx-gray-400);
--fbx-icon-color-on: var(--fbx-theme-info);
--fbx-icon-color-off: var(--fbx-gray-200);
}
JavaScript Instantiation
Range sliders can be instantiated via JavaScript to generate dynamic content on the fly. To create a slider dynamically, use Frontbx's Component.Create
method either via the frontbx.Dom
or the RangeSlider
Component directly:
let options =
{
min: 0,
max: 100,
value: 50,
step: 1,
labeled: false,
indicators: false,
};
// Via Frontbx dom
frontbx.Dom().create('RangeSlider', options, container);
// Or via Component directly
frontbx.Dom().component('RangeSlider').create(options, container);
Below are the available options:
Option | Type | Required | Behavior |
---|---|---|---|
min |
Integer |
Yes | Input min . |
max |
Integer |
Yes | Input max . |
value |
Integer |
Yes | Input value . |
step |
Integer |
Yes | Input step . |
labeled |
Boolean |
No (default false ) |
Enable label style indicator(s) |
indicators |
Boolean |
No (default false ) |
Enable min and max indicators. |