jQuery UI Slider – гибкий плагин, который позволяет создать элементы интерфейса в виде ползунков в различных вариантах.
Описание свойств и методов https://api.jqueryui.com/slider/
Для создания слайдера достаточно добавить пустой элемент <div id="slider"></div>
и вызвать метод $('#slider').slider({...})
, в нём прописать необходимые настройки, например минимальное и максимальное значение:
<div id="slider"></div>
<input type="text" id="val" value="">
<script src="/jquery/2.1.1/jquery.min.js"></script>
<script src="/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/jqueryui/1.12.1/jquery-ui.min.css">
<script>
$(function(){
$('#slider').slider({
min: 0,
max: 100,
value: 0,
slide: function(event, ui){
$('#val').val(ui.value);
}
});
});
</script>
Результат:
Выбор от минимума
Параметр range: 'min'
– выводит заполнение от минимума.
<div id="slider"></div>
<input type="text" id="val" value="">
<script src="/jquery/2.1.1/jquery.min.js"></script>
<script src="/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/jqueryui/1.12.1/jquery-ui.min.css">
<script>
$(function(){
$('#slider').slider({
range: 'min',
min: 0,
max: 100,
value: 50,
slide: function(event, ui){
$('#val').val(ui.value);
}
});
});
</script>
Результат:
Выбор от максимума
Параметр range: 'max'
– выводит заполнение от максимума.
<div id="slider"></div>
<input type="text" id="val" value="">
<script src="/jquery/2.1.1/jquery.min.js"></script>
<script src="/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/jqueryui/1.12.1/jquery-ui.min.css">
<script>
$(function(){
$('#slider').slider({
range: 'max',
min: 0,
max: 100,
value: 50,
slide: function(event, ui){
$('#val').val(ui.value);
}
});
});
</script>
Результат:
Получить выбранное значение
<div id="slider"></div>
<input type="button" id="button" value="Получить значение">
<script src="/jquery/2.1.1/jquery.min.js"></script>
<script src="/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/jqueryui/1.12.1/jquery-ui.min.css">
<script>
$(function(){
$("#slider").slider({
min: 0,
max: 100,
value: 0
});
$('#button').click(function(){
alert('Текущее значение: ' + $("#slider").slider("value"));
});
});
</script>
Результат:
Установить ползунку новое значение
<div id="slider"></div>
<input type="text" id="val" placeholder="от 0 до 100">
<input type="button" id="button" value="Установить значение">
<script src="/jquery/2.1.1/jquery.min.js"></script>
<script src="/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/jqueryui/1.12.1/jquery-ui.min.css">
<script>
$(function(){
$("#slider").slider({
min: 0,
max: 100,
value: 0
});
$('#button').click(function(){
$("#slider").slider({'value': $('#val').val()});
});
});
</script>
Результат:
Виджет позволяет вывести выбранное значение в ползунке с помощью методов create
и slide
.
<div id="slider">
<div id="custom-handle" class="ui-slider-handle"></div>
</div>
<script src="/jquery/2.1.1/jquery.min.js"></script>
<script src="/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/jqueryui/1.12.1/jquery-ui.min.css">
<script>
$(function(){
var handle = $("#custom-handle");
$("#slider").slider({
create: function() {
handle.text($(this).slider("value"));
},
slide: function(event, ui) {
handle.text( ui.value );
}
});
});
</script>
CSS:
#custom-handle {
width: 44px;
height: 24px;
top: 50%;
margin-top: -14px;
text-align: center;
line-height: 24px;
outline: none;
}
Результат:
Параметр step: 10
– задает шаг выбора.
<div id="slider"></div>
<input type="text" id="val" value="">
<script src="/jquery/2.1.1/jquery.min.js"></script>
<script src="/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/jqueryui/1.12.1/jquery-ui.min.css">
<script>
$(function(){
$('#slider').slider({
min: 0,
max: 100,
value: 50,
step: 10,
slide: function(event, ui){
$('#val').val(ui.value);
}
});
});
</script>
Результат:
Задать определенные шаги выбора
В некоторых случаях требуется сделать слайдер с определенным списком значений, например список с геометрической прогрессией.
<div id="slider"></div>
<input type="text" id="val" value="">
<script src="/jquery/2.1.1/jquery.min.js"></script>
<script src="/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/jqueryui/1.12.1/jquery-ui.min.css">
<script>
$(function(){
var prices = [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192];
$('#slider').slider({
min: 0,
max: prices.length - 1,
slide: function(event, ui){
$('#val').val(prices[ui.value]);
}
});
});
</script>
Результат:
Пример адаптивной вёрстки шкалы в виде линейки для UI Slider:
<div id="slider"></div>
<div class="slider-scale" style="counter-reset: section -1;">
<div class="slider-scale-tick slider-scale-big" data-label="0"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick slider-scale-big" data-label="25"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick"></div>
<div class="slider-scale-tick slider-scale-big" data-label="50"></div>
</div>
<script src="/jquery/2.1.1/jquery.min.js"></script>
<script src="/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/jqueryui/1.12.1/jquery-ui.min.css">
<script>
$(function(){
$('#slider').slider({
min: 0,
max: 50,
value: 0
});
});
</script>
CSS:
.slider-scale {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
width: 100%;
height: 80px;
position: relative;
}
.slider-scale-tick {
position: relative;
}
.slider-scale-tick:before {
content: "";
border-left: 1px solid #677680;
display: block;
position: absolute;
height: 5px;
}
.slider-scale-big:before {
height: 10px;
}
.slider-scale-tick:after {
top: 10px;
counter-increment: section;
content: attr(data-label);
transform: translateX(-50%);
text-align: center;
position: absolute;
}
Результат:
Пример верстки фильтра для поиска товаров по цене:
<div id="slider"></div>
<div id="slider-range">
<input type="text" id="min" value="1000">
<input type="text" id="max" value="9000">
</div>
<script src="/jquery/2.1.1/jquery.min.js"></script>
<script src="/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/jqueryui/1.12.1/jquery-ui.min.css">
<script>
$(function(){
$('#slider').slider({
range: true,
min: 0,
max: 9999,
values: ['1000', '9000'],
slide: function(event, ui) {
$('#min').val(ui.values[0]);
$('#max').val(ui.values[1]);
}
});
});
</script>