Slider
Bootstrap Slider
Note: This documentation is for an older version of Bootstrap (v.4). A
newer version is available for Bootstrap 5. We recommend migrating to the latest version of our product - Material Design for
Bootstrap 5.
Go to docs v.5
Bootstrap slider is an interactive component that lets the user swiftly slide through possible values spread over a desired range.
Multi-range slider
Note: You can also see multi-range sliders, but rembember, that they do not work with this plugin.
Multi-range slider docsIts basic implementation is quite simple and does not require big blocks of code.
Examples of Bootstrap slider use:
- Video progress bar
- Volume increase/decrease
- Enthusiasm-o-meter
Look at the following Bootstrap slider examples:
Notification
If you were looking for a slider but you meant a carousel component, click here to see all the possibilities.
Default slider
Default styling for Bootstrap Slider component
You can create custom <input type="range">
controls with .custom-range
. The track (the
background) and thumb (the value) are both styled to appear the same across browsers. As only IE and Firefox
support “filling” their track from the left or right of the thumb as a means to visually indicate progress, we do
not currently support it.
<label for="customRange1">Example range</label>
<input type="range" class="custom-range" id="customRange1">
Range inputs have implicit values for min
and max
—0
and 100
,
respectively. You may specify new values for those
using the min
and max
attributes.
<label for="customRange2">Example range</label>
<input type="range" class="custom-range" min="0" max="5" id="customRange2">
By default, range inputs “snap” to integer values. To change this, you can specify a step
value. In
the example
below, we double the number of steps by using step="0.5"
.
<label for="customRange3">Example range</label>
<input type="range" class="custom-range" min="0" max="5" step="0.5" id="customRange3">
Material slider MDB Pro component
Material Design styling for the Bootstrap Slider component
<form class="range-field">
<input type="range" min="0" max="100" />
</form>
Slider with updating value
Material example MDB Pro component
<div class="d-flex justify-content-center my-4">
<form class="range-field w-75">
<input id="slider11" class="border-0" type="range" min="0" max="200" />
</form>
<span class="font-weight-bold text-primary ml-2 mt-1 valueSpan"></span>
</div>
$(document).ready(function() {
const $valueSpan = $('.valueSpan');
const $value = $('#slider11');
$valueSpan.html($value.val());
$value.on('input change', () => {
$valueSpan.html($value.val());
});
});
Default example
<div class="d-flex justify-content-center my-4">
<div class="w-75">
<input type="range" class="custom-range" id="customRange11" min="0" max="200">
</div>
<span class="font-weight-bold text-primary ml-2 valueSpan2"></span>
</div>
$(document).ready(function() {
const $valueSpan = $('.valueSpan2');
const $value = $('#customRange11');
$valueSpan.html($value.val());
$value.on('input change', () => {
$valueSpan.html($value.val());
});
});
Slider with different widths MDB Pro component
<form class="range-field my-4 w-25">
<input type="range" min="0" max="100" />
</form>
<form class="range-field my-4 w-50">
<input type="range" min="0" max="100" />
</form>
<form class="range-field my-4 w-75">
<input type="range" min="0" max="100" />
</form>
<form class="range-field my-4 w-100">
<input type="range" min="0" max="100" />
</form>
Slider with first and last value MDB Pro component
<div class="d-flex justify-content-center my-4">
<span class="font-weight-bold indigo-text mr-2 mt-1">0</span>
<form class="range-field w-25">
<input class="border-0" type="range" min="0" max="100" />
</form>
<span class="font-weight-bold indigo-text ml-2 mt-1">100</span>
</div>
<div class="d-flex justify-content-center my-4">
<span class="font-weight-bold blue-text mr-2 mt-1">0</span>
<form class="range-field w-50">
<input class="border-0" type="range" min="0" max="100" />
</form>
<span class="font-weight-bold blue-text ml-2 mt-1">100</span>
</div>
<div class="d-flex justify-content-center my-4">
<span class="font-weight-bold purple-text mr-2 mt-1">0</span>
<form class="range-field w-75">
<input class="border-0" type="range" min="0" max="100" />
</form>
<span class="font-weight-bold purple-text ml-2 mt-1">100</span>
</div>
Slider with icons within a card MDB Pro component

Choose your slider option
<div class="card blue-grey lighten-5">
<!--Card image-->
<img class="img-fluid" src="https://mdbootstrap.com/img/Photos/Horizontal/Nature/4-col/img%20%282%29.webp" alt="Card image cap">
<div class="card-body text-center">
<h3 class="indigo-text mt-4"><strong>Choose your slider option</strong></h3>
<div class="d-flex justify-content-center my-4 pt-3">
<span class="font-weight-bold blue-text mr-2 mt-1"><i class="fas fa-thumbs-down" aria-hidden="true"></i></span>
<form class="range-field w-75">
<input class="border-0" type="range" min="0" max="100" />
</form>
<span class="font-weight-bold blue-text ml-2 mt-1"><i class="fas fa-thumbs-up" aria-hidden="true"></i></span>
</div>
<div class="d-flex justify-content-center my-4 pt-3">
<span class="font-weight-bold indigo-text mr-2 mt-1"><i class="fas fa-dollar-sign" aria-hidden="true"></i></span>
<form class="range-field w-75">
<input class="border-0" type="range" min="0" max="100" />
</form>
<span class="font-weight-bold indigo-text ml-2 mt-1"><i class="fas fa-euro-sign" aria-hidden="true"></i></span>
</div>
<div class="d-flex justify-content-center my-4 pt-3">
<span class="font-weight-bold purple-text mr-2 mt-1"><i class="fas fa-minus" aria-hidden="true"></i></span>
<form class="range-field w-75">
<input class="border-0" type="range" min="0" max="100" />
</form>
<span class="font-weight-bold purple-text ml-2 mt-1"><i class="fas fa-plus" aria-hidden="true"></i></span>
</div>
</div>
</div>
Slider with a price counter MDB Pro component
Slide to see the pricing change
You earn
75$
Client pays
319$
<div class="card">
<div class="card-body">
<h3 class="text-center font-weight-bold blue-text mt-3 mb-4 pb-4"><strong>Slide to see the pricing change</strong></h3>
<hr>
<form class="range-field my-5">
<input id="calculatorSlider" class="no-border" type="range" value="0" min="0" max="30" />
</form>
<!-- Grid row -->
<div class="row">
<!-- Grid column -->
<div class="col-md-6 text-center pb-5">
<h2><span class="badge blue lighten-2 mb-4">You earn</span></h2>
<h2 class="display-4" style="color:#0d47a1"><strong id="resellerEarnings">75$</strong></h2>
</div>
<!-- Grid column -->
<!-- Grid column -->
<div class="col-md-6 text-center pb-5">
<h2><span class="badge blue lighten-2 mb-4">Client pays</span></h2>
<h2 class="display-4" style="color:#0d47a1"><strong id="clientPrice">319$</strong></h2>
</div>
<!-- Grid column -->
</div>
<!-- Grid row -->
</div>
</div>
const slider = $("#calculatorSlider");
const developerBtn = $("#developerBtn");
const corporateBtn = $("#corporateBtn");
const privateBtn = $("#privateBtn");
const reseller = $("#resellerEarnings");
const client = $("#clientPrice");
const percentageBonus = 30; // = 30%
const license = {
corpo: {
active: true,
price: 319,
},
dev: {
active: false,
price: 149,
},
priv: {
active: false,
price: 79,
}
}
function calculate(price, value) {
client.text((Math.round((price - (value / 100 * price)))) + '$');
reseller.text((Math.round(((percentageBonus - value) / 100 * price))) + '$')
}
function reset(price) {
slider.val(0);
client.text(price + '$');
reseller.text((Math.round((percentageBonus / 100 * price))) + '$');
}
developerBtn.on('click', function(e) {
license.dev.active = true;
license.corpo.active = false;
license.priv.active = false;
reset(license.dev.price)
});
privateBtn.on('click', function(e) {
license.dev.active = false;
license.corpo.active = false;
license.priv.active = true;
reset(license.priv.price);
});
corporateBtn.on('click', function(e) {
license.dev.active = false;
license.corpo.active = true;
license.priv.active = false;
reset(license.corpo.price);
});
slider.on("input change", function(e) {
if (license.priv.active) {
calculate(license.priv.price, $(this).val());
} else if (license.corpo.active) {
calculate(license.corpo.price, $(this).val());
} else if (license.dev.active) {
calculate(license.dev.price, $(this).val());
}
})
Getting started: download & setup
Download
All of the components and features are a part of the MDBootstrap package.
MDBootstrap (Material Design for Bootstrap) is an MIT Licensed framework - free for personal & commercial use.
It combines the esthetic of Material Design and the functionalities of the newest Bootstrap.
Click on the button below to visit the Getting Started Page, where you can download the latest MDBootstrap package.
MDBootstrap Download MDBootstrap AboutMDB Pro
Using components and features labeled as MDB Pro component requires the MDB Pro package - a powerful UI Kit containing over 10,000 components, dozens of plugins and much more cool features.
Click the button below to learn more about the MDBootstrap Pro package.
MDBootstrap ProTutorials
If you need any additional help, use our "5 min Quick Start" guide or start full Bootstrap tutorial.
5 min Quick Start Full Bootstrap TutorialCompilation & Customization
To reduce the weight of MDBootstrap package even more, you can compile your own, custom package containing only those components and features that you need.
If you need additional help with compiling your custom package, please use our Compilation & Customization tutorial.
Compilation & Customization tutorialMap of dependencies of SCSS files in MDBootstrap:
Legend:
'-->' means 'required'
All free and pro files require files from 'core' catalog
'none' means 'this component doesn't require anything except core files'
A file wrapped by `< >` means that this file make the base component prettier but it isn't necessary for the proper working
All PRO components require 'pro/_variables.scss' file
scss/
|
|-- core/
| |
| |-- bootstrap/
| | |-- _functions.scss
| | |-- _variables.scss
| |
| |-- _colors.scss
| |-- _global.scss
| |-- _helpers.scss
| |-- _masks.scss
| |-- _mixins.scss
| |-- _typography.scss
| |-- _variables.scss
| |-- _waves.scss
|
|-- free/
| |-- _animations-basic.scss --> none
| |-- _animations-extended.scss --> _animations-basic.scss
| |-- _buttons.scss --> none
| |-- _cards.scss --> none <_buttons.scss>
| |-- _dropdowns.scss --> none <_buttons.scss>
| |-- _input-group.scss --> _forms.scss, _buttons.scss, _dropdowns.scss
| |-- _navbars.scss --> none <_buttons.scss, _forms.scss, _input-group.scss>
| |-- _pagination.scss --> none
| |-- _badges.scss --> none
| |-- _modals.scss --> _buttons.scss, _forms.scss (PRO --> _tabs.scss)
| |-- _carousels.scss --> <_buttons.scss>
| |-- _forms.scss --> none
| |-- _msc.scss --> none <_buttons.scss, _forms.scss, _cards.scss>
| |-- _footers.scss none <_buttons.scss> (PRO: )
| |-- _list-group.scss --> none
| |-- _tables.scss --> none (PRO: _material-select.scss, pro/_forms.scss, _checkbox.scss, pro/_buttons.scss, pro/_cards.scss, _pagination.scss, pro/_msc.scss)
| |-- _depreciated.scss
|
|-- pro/
| |
| |-- picker/
| | |-- _default.scss --> none
| | |-- _default-time.scss --> _default.scss, free/_forms.scss, free/_buttons.scss, pro/_buttons.scss, free/_cards.scss
| | |-- _default-date.scss --> _default.scss, free/_forms.scss
| |
| |-- sections/
| | |-- _templates.scss --> _sidenav.scss
| | |-- _social.scss --> free/_cards.scss, free/ _forms.scss, free/_buttons.scss, pro/_buttons.scss,
| | |-- _team.scss --> free/_buttons.scss, pro/_buttons.scss, free/_cards.scss, pro/_cards.scss
| | |-- _testimonials.scss --> free/_carousels.scss, pro/_carousels.scss, free/_buttons.scss, pro/_buttons.scss
| | |-- _magazine.scss --> _badges.scss
| | |-- _pricing.scss --> free/_buttons.scss, pro/_buttons.scss
| | |-- _contacts.scss --> free/_forms.scss, pro/_forms.scss, free/_buttons.scss, pro/_buttons.scss
| |
| |-- _variables.scss
| |-- _buttons.scss --> free/_buttons.scss, pro/_msc.scss, _checkbox.scss, _radio.scss
| |-- _social-buttons.scss --> free/_buttons.scss, pro/_buttons.scss
| |-- _tabs.scss --> _cards.scss
| |-- _cards.scss --> free/_cards.scss <_buttons.scss, _social-buttons.scss>
| |-- _dropdowns.scss --> free/_dropdowns.scss, free/_buttons.scss
| |-- _navbars.scss --> free/_navbars.scss (PRO: )
| |-- _scrollspy.scss --> none
| |-- _lightbox.scss --> none
| |-- _chips.scss --> none
| |-- _msc.scss --> none
| |-- _forms.scss --> none
| |-- _radio.scss --> none
| |-- _checkbox.scss --> none
| |-- _material-select.scss --> none
| |-- _switch.scss --> none
| |-- _file-input.scss --> free/_forms.scss, free/_buttons.scss
| |-- _range.scss --> none
| |-- _input-group.scss --> free/_input-group.scss and the same what free input group, _checkbox.scss, _radio.scss
| |-- _autocomplete.scss --> free/_forms.scss
| |-- _accordion.scss --> pro/_animations.scss, free/_cards.scss
| |-- _parallax.scss --> none
| |-- _sidenav.scss --> free/_forms.scss, pro/_animations.scss, sections/_templates.scss
| |-- _ecommerce.scss --> free/_cards.scss, pro/_cards.scss, free/_buttons.scss, pro/_buttons.scss, pro/_msc.scss
| |-- _carousels.scss --> free/_carousels.scss, free/_cards.scss, free/_buttons.scss
| |-- _steppers.scss --> free/_buttons.scss
| |-- _blog.scss --> none
| |-- _toasts.scss --> free/_buttons.scss
| |-- _animations.scss --> none
| |-- _charts.scss --> none
| |-- _progress.scss --> none
| |-- _scrollbar.scss --> none
| |-- _skins.scss --> none
| |-- _depreciated.scss
|
`-- _custom-skin.scss
`-- _custom-styles.scss
`-- _custom-variables.scss
`-- mdb.scss
Map of dependencies of JavaScript modules in MDBootstrap:
Legend:
'-->' means 'required'
All files require jQuery and bootstrap.js
js/
├── dist/
│ ├── buttons.js
│ ├── cards.js
│ ├── character-counter.js
│ ├── chips.js
│ ├── collapsible.js --> vendor/velocity.js
│ ├── dropdown.js --> Popper.js, jquery.easing.js
│ ├── file-input.js
│ ├── forms-free.js
│ ├── material-select.js --> dropdown.js
│ ├── mdb-autocomplete.js
│ ├── preloading.js
│ ├── range-input.js --> vendor/velocity.js
│ ├── scrolling-navbar.js
│ ├── sidenav.js --> vendor/velocity.js, vendor/hammer.js, vendor/jquery.hammer.js
│ └── smooth-scroll.js
├── _intro-mdb-pro.js
├── modules.js
├── src/
│ ├── buttons.js
│ ├── cards.js
│ ├── character-counter.js
│ ├── chips.js
│ ├── collapsible.js --> vendor/velocity.js
│ ├── dropdown.js --> Popper.js, jquery.easing.js
│ ├── file-input.js
│ ├── forms-free.js
│ ├── material-select.js --> dropdown.js
│ ├── mdb-autocomplete.js
│ ├── preloading.js
│ ├── range-input.js --> vendor/velocity.js
│ ├── scrolling-navbar.js
│ ├── sidenav.js --> vendor/velocity.js, vendor/hammer.js, vendor/jquery.hammer.js
│ └── smooth-scroll.js
└── vendor/
├── addons/
│ ├── datatables.js
│ └── datatables.min.js
├── chart.js
├── enhanced-modals.js
├── hammer.js
├── jarallax.js
├── jarallax-video.js --> vendor/jarallax.js
├── jquery.easing.js
├── jquery.easypiechart.js
├── jquery.hammer.js --> vendor/hammer.js
├── jquery.sticky.js
├── lightbox.js
├── picker-date.js --> vendor/picker.js
├── picker.js
├── picker-time.js --> vendor/picker.js
├── scrollbar.js
├── scrolling-navbar.js
├── toastr.js
├── velocity.js
├── waves.js
└── wow.js
Integrations with Angular, React or Vue
Apart from the standard Bootstrap integration (using jQuery), MDBootstrap also integrates with Angular, React and Vue.
About MDB Angular About MDB React About MDB VueExclusive resources
MDBootstrap is a platform for web creators and MDB packages are only a part of it.
If you sign up you'll gain free access to other useful tools & resources including:
- Community developed components & design projects
- Technical support & community forum
- CLI interface & free project hosting
- Helpful articles & news agregators
...and much more!
Don't hesitate and sign up now!
Sign up now