简体   繁体   中英

how to add text between handles in a range slider

I am using noUiSlider , but in fact any range slider library would work. I have a small widget (here: https://codepen.io/chapkovski/pen/pobRwZj ) where people have to split the range into three sections:

 var slider = document.getElementById('slider-color'); noUiSlider.create(slider, { start: [6000, 12000], connect: [true, true, true], range: { 'min': [2000], 'max': [20000] } }); var connect = slider.querySelectorAll('.noUi-connect'); var classes = ['c-1-color', 'c-2-color', 'c-3-color']; for (var i = 0; i < connect.length; i++) { connect[i].classList.add(classes[i]); }
 <link href="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/14.6.2/nouislider.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/14.6.2/nouislider.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <style> .c-1-color { background: red; } .c-2-color { background: yellow; } .c-3-color { background: green; } </style> <div id='slider-color'></div>

What I can't figure is how to add a text within the ranges. For instance for the mid-range (yellow one) would be something like 'Second category: XX%' (depending on the handles position. When I do something like:

.c-3-color::after {
content:'my text goes here';
}

it ends up completely deformed.

On the parent you are having scale so this is why it is growing. You need to compensate that with child or pseudo child Please have a look as below:

.c-3-color::after {
  content:'my text goes here';
  display: block;
  position: absolute;
  top: 50%;
  left: 33%;
  transform: translateY(-50%) scale(4,2);
}

DEMO (with adjustment of the code above because line is smaller

 var slider = document.getElementById('slider-color'); noUiSlider.create(slider, { start: [6000, 12000], connect: [true, true, true], range: { 'min': [2000], 'max': [20000] } }); var connect = slider.querySelectorAll('.noUi-connect'); var classes = ['c-1-color', 'c-2-color', 'c-3-color']; for (var i = 0; i < connect.length; i++) { connect[i].classList.add(classes[i]); }
 .c-3-color::after { content:'my text goes here'; display: block; position: absolute; top: 50%; left: 33%; transform: translateY(-50%) scale(3,2); font-size:12px; }
 <link href="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/14.6.2/nouislider.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/14.6.2/nouislider.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <style> .c-1-color { background: red; } .c-2-color { background: yellow; } .c-3-color { background: green; } </style> <div id='slider-color'></div>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM