Инструкция по установке и компонентам Vue slider

13 августа 2026
Автор

Олег Марков

Введение

Vue slider — это удобный и гибко настраиваемый компонент для Vue.js, который позволяет быстро добавить настраиваемый слайдер (ползунок) в ваш проект. Такие слайдеры часто используются для выбора числовых значений или диапазонов (например, для фильтрации товаров по цене). Компонент легко интегрируется, обладает хорошей документацией и богатым набором опций для кастомизации интерфейса. Здесь я покажу, как пошагово установить Vue slider, подключить его к проекту, рассмотреть основные компоненты, их пропсы, методы и события с примером использования для каждой важной части.

Создание интерактивных слайдеров — отличный способ улучшить визуальное восприятие контента на вашем сайте. Vue slider позволяет легко интегрировать такие компоненты, предоставляя пользователям удобный интерфейс навигации. Если вы хотите детальнее погрузиться в Vue.js, изучить основы, компоненты, свойства и события, реактивность, жизненный цикл, а также научиться работать с Vue Router и Pinia, приходите на наш большой курс Vue.js 3, Vue Router и Pinia. На курсе 173 уроков и 21 упражнение, AI-тренажеры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.

Курс по теме

Курс Vue 3 и Pinia с нуля

40 000+ студентов · рейтинг 4.8 · гарантия возврата 30 дней

Установка Vue slider

Подключение через npm

Если вы используете Vue CLI или любой сборщик модулей, оптимальным будет подключение через npm или yarn. Самым популярным слайдером считается пакет vue-slider-component, который поддерживает Vue 2 и 3.

Выполните команду для установки через npm:

npm install vue-slider-component --save

Или через yarn:

yarn add vue-slider-component

Подключение через CDN

Если вам нужен быстрый прототип либо нет сборщика модулей, можно использовать CDN:

<script src="https://unpkg.com/vue@next"></script>
<script src="https://unpkg.com/vue-slider-component@latest/dist/vue-slider-component.umd.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/vue-slider-component/theme/default.css">

Такой подход удобен для примерами на CodePen или JSFiddle.

Импорт компонента

Теперь добавьте импорт и регистрацию компонента в своем файле.

Vue 2 (Options API):

import VueSlider from 'vue-slider-component'
import 'vue-slider-component/theme/default.css'

export default {
  components: {
    VueSlider
  }
}

Vue 3 (Composition API):

import { defineComponent } from 'vue'
import VueSlider from 'vue-slider-component'
import 'vue-slider-component/theme/default.css'

export default defineComponent({
  components: { VueSlider }
})

Использование основного компонента

Теперь давайте разберем основной синтаксис вставки слайдера.

<template>
  <vue-slider v-model="value"></vue-slider>
</template>

<script>
export default {
  data() {
    return {
      value: 45 // начальное значение
    }
  }
}
</script>

Здесь мы привязываем значение слайдера к переменной value через v-model. Любое смещение ползунка будет менять значение этой переменной.


Основные пропсы Vue slider

Слайдер обладает широким списком опций. Давайте разберём самые важные:

Пропс min и max

Определяет минимальное и максимальное значение ползунка.

<vue-slider v-model="value" :min="0" :max="100"></vue-slider>

Пропс step

Шаг изменения значения.

<vue-slider v-model="value" :step="5"></vue-slider>

Теперь значение изменяется с шагом в 5.

Пропс dot-size и height

Позволяют настраивать размер ползунка (dot) и высоту полосы.

<vue-slider v-model="value" :dot-size="20" :height="8"></vue-slider>

Пропс disabled

Делает слайдер неактивным.

<vue-slider v-model="value" :disabled="true"></vue-slider>

Теперь слайдер не реагирует на действия пользователя.

Пропс marks (отметки на ползунке)

Можно добавить визуальные отметки для ориентира пользователя.

<vue-slider v-model="value" :marks="{0: 'Низко', 50: 'Средне', 100: 'Высоко'}"></vue-slider>

Отметки появятся под соответствующими значениями.

Пропс tooltip (всплывающая подсказка)

Показывает/прячет подсказку при наведении/перемещении.

  • show: всегда показывать
  • none: не показывать
  • hover: показывать при наведении (по умолчанию)
<vue-slider v-model="value" tooltip="show"></vue-slider>

Диапазонные значения и множественные ползунки

Слайдер отлично работает с диапазонами — это когда пользователь может выбрать не одну, а две границы (например, от какой суммы до какой).

<vue-slider v-model="range" :min="0" :max="100" :interval="true"></vue-slider>
data() {
  return {
    range: [20, 80]
  }
}

Если вы хотите реализовать два и более ползунка, достаточно передать массив значений в v-model.

Кастомизация внешнего вида

Vue slider позволяет настраивать внешний вид под дизайн проекта:

Тема оформления

По умолчанию компонент подключается с дефолтной темой, вы можете создать свой собственный стиль, изменяя параметры SCSS или CSS.

К примеру:

.vue-slider-dot {
  background: #007bff; /* Синий цвет ползунка */
}
.vue-slider-rail {
  background: #e9ecef; /* Цвет полосы */
}

Кастомные классы можно найти в документации по теме.

Использование слотов

Один из мощных инструментов — named slots, дающие полный контроль над рендерингом элементов:

<vue-slider v-model="value">
  <template #dot="{ value }">
    <div class="my-dot">{{ value }}</div>
  </template>
</vue-slider>

Теперь вы видите в ползунке не точку, а собственный шаблон.

Работа с событиями

Компонент генерирует ряд событий для контроля и обработки пользовательских действий.

  • drag-start: начало перемещения
  • drag-end: окончание перемещения
  • change: изменение значения (по завершению)
  • input: при любом изменении (аналог input)

Покажу пример обработки:

<vue-slider
  v-model="value"
  @drag-start="onStart"
  @change="onChange"
></vue-slider>
methods: {
  onStart(val) {
    // val - текущее значение
    console.log('Начало движения', val)
  },
  onChange(val) {
    console.log('Значение изменилось', val)
  }
}

Как видите, вы в любой момент можете отследить или модифицировать поведение слайдера, интегрируя его в более сложную бизнес-логику.

Валидация и обработка ошибок

В процессе разработки иногда нужно валидировать выбранное значение. Обычно проверки делают внутри родительского компонента, в котором хранится значение (v-model):

<vue-slider v-model="value"></vue-slider>
<span v-if="value < 20" class="error">Минимум 20</span>

Или наблюдайте за ползунком через watch:

watch: {
  value(newVal) {
    if (newVal < 10) {
      // Предотвращаем неправильные значения
      this.value = 10;
    }
  }
}

Так вы минимизируете ошибочные значения.

Расширенные настройки

Показать значения с помощью лейблов

Вы можете явно отобразить текущие значения, если tooltip выключен или нужен собственный способ:

<div>
  <vue-slider v-model="value"></vue-slider>
  <span>Текущее значение: {{ value }}</span>
</div>

Форматирование отображаемых значений

Иногда необходимо отображать форматированные значения, например, добавить знак валюты:

<vue-slider
  v-model="value"
  :formatter="value => value + ' ₽'"
></vue-slider>

Несколько независимых слайдеров

Можно размещать несколько ползунков на странице:

<div>
  <vue-slider v-model="volume"></vue-slider>
  <vue-slider v-model="brightness" :max="200"></vue-slider>
</div>

Вертикальный слайдер

Сделать слайдер вертикальным просто:

<vue-slider v-model="value" direction="vertical"></vue-slider>

Интеграция с формами

Один из частых сценариев — работа Vue slider внутри формы для отправки данных на сервер:

<template>
  <form @submit.prevent="submitForm">
    <vue-slider v-model="priceRange" :interval="true" :min="100" :max="5000"></vue-slider>
    <button type="submit">Применить</button>
  </form>
</template>

<script>
export default {
  data() {
    return { priceRange: [800, 3000] }
  },
  methods: {
    submitForm() {
      // Отправляется массив priceRange: [от, до]
      console.log('Выбранный диапазон:', this.priceRange)
    }
  }
}
</script>

Такой подход отлично подходит для фильтрации товаров, подбора параметров и т.д.

Адаптация и отзывчивый дизайн

Слайдер адаптивен по умолчанию. Для более сложной вёрстки (например, использование внутри flex-контейнера или грид-сетке) полезно указать ширину явно:

<vue-slider style="width: 70%"></vue-slider>

Или сделать ширину 100% для мобильных экранов:

.vue-slider {
  width: 100%;
  min-width: 200px;
}

Пользовательский опыт остается отличным даже на мобильных устройствах.

Ленивая инициализация и SSR

Для серверного рендеринга или динамической подгрузки компонентов слайдер работает без проблем. Можно только учесть момент, что стили предварительно должны быть загружены через <link> или импорт в css.

Если компонент инициализируется в <keep-alive> или по условию, используйте <client-only> для Nuxt.js.

Лучшие практики и советы по использованию

  • Для числа с большим количеством знаков используйте кастомный форматтер.
  • Для диапазонных фильтров всегда указывайте interval.
  • Используйте свой кастомный dot через slot для брендинга.
  • Используйте событие change для триггера тяжелых операций, а не input.
  • Не забывайте об accessibility: давайте aria-лейблы и подписи.

Понимание того, как эффективно устанавливать и использовать Vue slider, является важным навыком для любого разработчика. Изучение компонентов, работы с жизненным циклом, Vue Router и Pinia поможет вам создать более функциональные и удобные веб-приложения. В первых 3 модулях курса Vue.js 3, Vue Router и Pinia уже доступно бесплатное содержание — начните погружаться в мир Vue.js и слайдеров прямо сейчас.

Частозадаваемые технические вопросы по теме статьи и ответы на них

1. Как сбросить значение слайдера к начальному через кнопку?

<button @click="value = startValue">Сбросить</button>
<vue-slider v-model="value"></vue-slider>

Значение сбросится на startValue (любое дефолтное).


2. Можно ли сделать слайдер только с дискретными заданными значениями (например, только 10, 30, 50)?

Используйте проп marks и обработайте значения:

<vue-slider
  v-model="value"
  :marks="{10:'10', 30:'30', 50:'50'}"
  :step="null"
  :data="[10,30,50]"
></vue-slider>

3. Как реализовать асинхронное обновление минимального и максимального значений?

Можно привязать значения min/max к переменным и менять их:

<vue-slider v-model="val" :min="dynamicMin" :max="dynamicMax"></vue-slider>

Меняйте dynamicMin и dynamicMax после загрузки данных.


4. Почему не работает v-model внутри v-for?

Если создаёте массив слайдеров циклом, используйте уникальный ключ:

<vue-slider v-for="item in items" :key="item.id" v-model="item.value"></vue-slider>

Тогда значения не будут конфликтовать.


5. Как контролировать точность ограниченного количества знаков после запятой?

Используйте форматтер:

<vue-slider
  v-model="value"
  :formatter="val => val.toFixed(2) + ' м'"
></vue-slider>

Два знака после запятой обеспечены.

Стрелочка влевоРабота с таблицами во Vue через TanStackУправление пакетами Vue js с помощью npmСтрелочка вправо

Постройте личный план изучения Vue до уровня Middle — бесплатно!

Vue — часть карты развития Frontend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Vue

Руководство по валидации форм во Vue.jsИнтеграция Tiptap для создания редакторов на VueРабота с таблицами во Vue через TanStackИнструкция по установке и компонентам Vue sliderУправление пакетами Vue js с помощью npmУправление пакетами и node modules в Vue проектахКак использовать meta для улучшения SEO на VueПолный гайд по компоненту messages во Vuejs5 правил использования Inertia с Vue и LaravelРабота с модулями и пакетами в VueИнструкция по работе с grid на VueGithub для Vue проектов - подробная инструкция по хранению и совместной работеНастройка ESLint для Vue проектов и поддержка качества кодаИспользование Vue Devtools для отладки и мониторинга приложенийОбработка ошибок и отладка в Vue.jsРабота с конфигурационными файлами и скриптами VueСоздание и настройка проектов Vue с помощью Vue CLI3 способа интеграции Chart.js с Vue для создания графиковРабота с Canvas во VueИнструкция по реализации календаря во VueРабота с Ant Design Vue для создания UI на Vue
Vuex - полное руководство по управлению состоянием во Vue приложенияхРеактивные ссылки ref - полный разбор для разработчиковРеактивные объекты reactive-objects - подробное руководство с примерамиРеактивные переменные - концепция reactive и практические примерыМеханизм Provide Inject - как он работает и когда применятьPinia современный менеджер состояния для VueЛокальное состояние local state в веб разработкеГлобальное состояние в приложениях - global state
Обзор и использование утилит Vue для удобной разработкиРабота с обновлениями компонента и жизненным циклом updateРазрешение конфликтов и ошибок с помощью Vue resolveИспользование query-параметров и их обработка в маршрутах VueЗагрузка и управление состоянием загрузки в VueИспользование библиотек Vue для расширения функционалаРабота с JSON данными в приложениях VueКак работать с экземплярами компонента Instance во VueПолучение данных и API-запросы во Vue.jsЭкспорт и импорт данных и компонентов в VueОбработка событий и их передача между компонентами VuejsГайд по defineEmits на Vue 3Понимание core функционала Vue и его применениеПонимание и применение Composition API в Vue 3Понимание и работа с компилятором VueКогда и как использовать $emit и call во VueВзаимодействие с внешними API через Axios в Vue
Веб приложения на Vue архитектура и лучшие практикиИспользование Vite для быстрого старта и сборки проектов на Vue 3Работа с URL и ссылками в приложениях на VueРабота с пользовательскими интерфейсами и UI библиотеками во VueОрганизация и структура исходных файлов в проектах VueИспользование Quasar Framework для разработки на Vue с готовыми UI-компонентамиОбзор популярных шаблонов и стартовых проектов на VueИнтеграция Vue с PHP для создания динамичных веб-приложенийКак организовать страницы и маршруты в проекте на VueNuxt JS и Vue 3 для SSR приложенийСоздание серверных приложений на Vue с помощью Nuxt jsИспользование Vue Native для разработки мобильных приложенийОрганизация и управление индексной страницей в проектах VueИспользование Docker для контейнеризации приложений на VueИнтеграция Vue.js с Django для создания полноценных веб-приложенийСоздание и работа с дистрибутивом build dist Vue приложенийРабота со стилями и CSS в Vue js для красивых интерфейсовСоздание и структурирование Vue.js приложенияКак исправить ошибку cannot find module vueНастройка и сборка проектов Vue с использованием современных инструментовИнтеграция Vue с Bitrix для корпоративных решенийРазработка административных панелей на Vue js
Функция append в Go GolangОтображение компонента mounted - практическое руководствоХуки жизненного цикла компонентов - полное руководство для разработчиковУничтожение компонента destroyed - как правильно очищать ресурсы и подпискиИнициализация данных в состоянии created - как и когда подготавливать данные в приложенииОбновление компонента beforeUpdate во VueМонтирование компонента - хук beforeMount в VueРазрушение компонента во Vue - beforeDestroy и beforeUnmountСоздание экземпляра beforeCreate - полный разбор жизненного цикла
5 библиотек для создания tree view во VueИнтеграция Tailwind CSS с Vue для современных интерфейсовИнтеграция Vue с серверной частью и HTTPS настройкамиКак обрабатывать async операции с Promise во VueИнтеграция Node.js и Vue.js для разработки приложенийРуководство по интеграции Vue js в NET проектыПримеры использования JSX во VueГайд по импорту и регистрации компонентов на VueМногоязычные приложения на Vue с i18nИнтеграция FLIR данных с Vue5 примеров использования filter во Vue для упрощения разработки3 примера реализации drag-and-drop во Vue
Слоты компонента - концепция и практическое использованиеРегистрация компонентов component-registration в приложениях с внедрением зависимостейProps компонента в React - полный разбор с примерамиFullstack-приложение на Nuxt: от страниц до APIФункциональные компоненты в React - функциональный подход к построению интерфейсовСобытия компонента - events в современных интерфейсахДинамические компоненты - dynamic-componentsСоздание компонента component - практическое руководствоАсинхронные компоненты async-components - практическое руководство
Наблюдатели watchers - от паттерна до практических реализацийУправление переменными и реактивными свойствами во VueИспользование v for и slot в VueПрименение v-bind для динамической привязки атрибутов в VueСоздание и использование UI Kit для Vue приложенийУправление пользователями и их данными в Vue приложенияхТипизация и использование TypeScript в VuejsШаблоны Vue templates - практическое руководство для разработчиковИспользование шаблонов в Vue js для построения интерфейсовИспользование Swiper для создания слайдеров в VueРабота со стилями и стилизацией в VueСтруктура и особенности Single File Components SFC в VueРабота со SCSS в проектах на Vue для стилизацииРабота со скроллингом и прокруткой в Vue приложенияхПрименение script setup синтаксиса в Vue 3 для упрощения компонентовИспользование scoped стилей для изоляции CSS в компонентах Vue3 способа улучшить навигацию Vue с push()Обработка запросов и асинхронных операций в VueРеактивность Vue reactivity - как это работает под капотом и как этим пользоватьсяПонимание и использование provide inject для передачи данных между компонентамиПередача и использование props в Vue 3 для взаимодействия компонентовПередача данных между компонентами с помощью props в Vue jsУправление property и функциями во Vue.jsРабота со свойствами компонентов VueУправление параметрами и динамическими данными во VueОпции компонента в Go - паттерн component-optionsРабота с lifecycle-хуком onMounted во VueОсновы работы с объектами в VueПонимание жизненного цикла компонента Vue js на примере mountedИспользование модальных окон modal в Vue приложенияхИспользование методов в компонентах Vue для обработки логикиИспользование метода map в Vue для обработки массивовИспользование хуков жизненного цикла Vue для управления состоянием компонентаРабота с ключами key в списках и компонентах VueОбработка пользовательского ввода в Vue.jsРабота с изображениями и их оптимизация в VueИспользование хуков жизненного цикла в VueОрганизация сеток и гридов для верстки интерфейсов на VueСоздание и управление формами в VueОрганизация файлов и структура проекта Vue.jsКомпоненты Vue создание передача данных события и emitРабота с динамическими компонентами и данными в Vue3 способа манипулирования DOM на VueРуководство по div во VueИспользование директив в Vue и их расширенные возможностиОсновы и применение директив в VueИспользование директив и их особенности на Vue с помощью defineИспользование компонентов datepicker в Vue для выбора датОрганизация циклов и итераций во VueКак работает компиляция Vue CoreВычисляемые свойства computed во Vue.jsСоздание и использование компонентов в Vue JSОбработка кликов и пользовательских событий в VueИспользование классов в Vue для организации кода и компонентовИспользование директивы checked для управления состоянием чекбоксов в VueГайд на checkbox компонент во VueОтображение данных в виде графиков с помощью Vue ChartСоздание и настройка кнопок в VueСоздание и настройка кнопок в Vue приложенияхРабота с lifecycle-хуками beforeCreate и beforeMount во VueОсновы Vue - vue-basics для уверенного стартаИспользование массивов и методов их обработки в VueИспользование массивов и их обработка в Vue
Использование Vuetify для создания современных интерфейсов на VueИспользование transition во VueТестирование компонентов и приложений на VueТелепортация - архитектура и реализация в серверных приложенияхРабота с teleport для управления DOM во VueSuspense в React - управление асинхронными данными и ленивой загрузкойПять шагов по настройке SSR в VuejsИспользование Shadcn UI компонентов с Vue для продвинутых интерфейсовИспользование router-link для навигации в Vue RouterКак использовать require в Vue для динамического импорта модулейРабота с динамическим рендерингом и виртуальным DOM на Vue.jsИспользование ref для управления ссылками и реактивностью в Vue 3Использование Vue Pro и его преимущества для профессиональной разработкиПлагины Vue vue-plugins - полное практическое руководствоРуководство по nextTick для работы с DOMМиксины - mixins в современном программированииJSX в Vue с использованием плагина vue-jsxСоздание и использование компонентов с помощью Vue js и CУправление состоянием и реактивностью через inject и provideДинамическое обновление компонентов и данных на VueГлубокое изучение документации Vue и как эффективно её использоватьКастомные элементы - Custom Elements в современном JavaScriptИспользование Crystal с Vue для разработкиИспользование вычисляемых свойств для динамического отображения данных на Vue jsОптимизация производительности и предупреждения в Vue
Открыть базу знаний

Лучшие курсы по теме

изображение курса

Vue 3 и Pinia

Антон Ларичев
AI-тренажерыAI-тренажеры
Практика в студииПрактика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

TypeScript с нуля

Антон Ларичев
AI-тренажерыAI-тренажеры
Практика в студииПрактика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Next.js - с нуля

Антон Ларичев
AI-тренажерыAI-тренажеры
Практика в студииПрактика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее

Отправить комментарий