Slider

Bootstrap Slider

Note: We are transitioning MDB4 to a legacy version and focusing on developing MDB5. While we'll continue to support for the transition period, we encourage you to migrate to MDB5. We're offering a huge discount on MDB5 PRO to help with your transition, enabling you to leverage the full potential of the latest version. You can find more information here.
upgrade with discount

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 remember, that they do not work with this plugin.

Multi-range slider docs

A multi-range-slider slider is gonna autoinit if you add class multi-range-slider to your element. Multi-range Slider starts with max 100 and min 0 values.


Its 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 max0 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

Modify the width of the slider.

        
            

        <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

Use the example to add values with max and min offset at the beginning and end of the slider.

        
            

        <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

Card image cap

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

Slider demonstrating the difference between the revenue and the price paid by the client.

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());
              }
            })