Компонент Slider в библиотеке Element Plus предназначен для выбора числового значения или диапазона значений с помощью ползунка. Он поддерживает как одиночное значение, так и диапазон, а также предоставляет гибкие настройки визуализации и взаимодействия.
<template>
<el-slider v-model="value" :min="0" :max="100"></el-slider>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const value = ref(50)
return { value }
}
}
</script>
В этом примере создается простой слайдер с диапазоном от 0 до 100 и
начальным значением 50. Связь с данными осуществляется через директиву
v-model.
Слайдер позволяет задавать минимальное и максимальное значения через
свойства min и max. Для более точного
управления шагом используется свойство step.
<el-slider v-model="value" :min="10" :max="200" :step="10"></el-slider>
min – минимальное значение.max – максимальное значение.step – шаг изменения значения при перемещении
ползунка.С помощью этих свойств можно создавать слайдеры с фиксированными шагами, например для выбора температуры, громкости или процентов.
Для выбора диапазона значений применяется range-slider, который позволяет одновременно задавать минимум и максимум:
<el-slider
v-model="range"
:min="0"
:max="100"
range
>
</el-slider>
<script>
import { ref } from 'vue'
export default {
setup() {
const range = ref([20, 80])
return { range }
}
}
</script>
range – булевое свойство, включающее режим выбора
диапазона.v-model в этом случае принимает массив
[minValue, maxValue].Слайдер можно расположить вертикально для экономии горизонтального пространства или для специфических интерфейсов:
<el-slider
v-model="verticalValue"
:min="0"
:max="100"
vertical
>
</el-slider>
<script>
import { ref } from 'vue'
export default {
setup() {
const verticalValue = ref(30)
return { verticalValue }
}
}
</script>
vertical – булевое свойство, меняющее ориентацию
слайдера.Слайдер может показывать текущее значение в виде всплывающей
подсказки. Свойство show-tooltip управляет видимостью
подсказки:
<el-slider
v-model="value"
:min="0"
:max="100"
:show-tooltip="true"
>
</el-slider>
show-tooltip – булевое свойство. По умолчанию
включено.format-tooltip:<el-slider
v-model="value"
:format-tooltip="val => val + '%'"
></el-slider>
Для удобства восприятия можно добавить метки на слайдер:
<el-slider
v-model="value"
:min="0"
:max="100"
:marks="marks"
>
</el-slider>
<script>
import { ref } from 'vue'
export default {
setup() {
const value = ref(40)
const marks = {
0: '0%',
25: '25%',
50: '50%',
75: '75%',
100: '100%'
}
return { value, marks }
}
}
</script>
marks задают позицию на шкале.Слайдер можно сделать неактивным для временной блокировки выбора:
<el-slider
v-model="value"
:disabled="true"
></el-slider>
disabled – булевое свойство, блокирующее взаимодействие
с ползунком.Слайдер генерирует несколько событий, полезных для динамического обновления данных:
change – вызывается при завершении изменения
значения.input – вызывается при каждом движении ползунка.<el-slider
v-model="value"
@change="handleChange"
@input="handleInput"
></el-slider>
<script>
export default {
setup() {
const value = ref(50)
const handleChange = val => console.log('Final value:', val)
const handleInput = val => console.log('Current value:', val)
return { value, handleChange, handleInput }
}
}
</script>
Использование этих событий позволяет реализовать динамические интерфейсы, например изменение графика в реальном времени или обновление других компонентов на странице.
Слайдер поддерживает изменение цвета полосы и ползунка через CSS-переменные:
.el-slider__runway {
background-color: #e0e0e0;
}
.el-slider__bar {
background-color: #409eff;
}
.el-slider__button {
border-color: #409eff;
}
.el-slider__runway – фон всей линии слайдера..el-slider__bar – заполненная часть линии..el-slider__button – сам ползунок.Также можно использовать height или width
для адаптации размера слайдера под дизайн.
Слайдер легко интегрируется с компонентами Form и FormItem для валидации:
<el-form :model="form">
<el-form-item label="Уровень громкости">
<el-slider v-model="form.volume" :min="0" :max="100"></el-slider>
</el-form-item>
</el-form>
<script>
import { reactive } from 'vue'
export default {
setup() {
const form = reactive({ volume: 50 })
return { form }
}
}
</script>