Skip to content

Slider 滑块

滑块选择器,支持单值、范围、多点、刻度吸附、垂直/置反等丰富模式。

基础用法

通过 v-model 双向绑定数值。默认模式下绑定 number 类型。

vue
<script setup lang="ts">
import { ref } from 'vue'
const value = ref(40)
</script>

<template>
  <TSlider v-model="value" />
</template>

范围滑块

range 设为 true 开启双滑块模式,v-model 绑定 [number, number] 数组。

vue
<TSlider v-model="value" :range="true" />

刻度标记

marks 接收 { value: label } 格式对象,在指定位置显示刻度点和标签。

vue
<TSlider
  v-model="value"
  :marks="{ 0: '0°C', 50: '50°C', 100: '100°C' }"
/>

吸附到刻度(Dots)

dotstrue 时,滑块只能停靠在已定义的刻度点上。

vue
<TSlider
  v-model="value"
  :marks="{ 0: '低', 50: '中', 100: '高' }"
  :dots="true"
/>

颜色

color 设置主题色,手柄边框和填充区同步变化。可选 Tabler 内置颜色(primary / secondary / success / warning / danger / info)。

vue
<TSlider v-model="value" color="primary" />
<TSlider v-model="value" color="success" />
<TSlider v-model="value" color="danger" />

禁用状态

disabled 使滑块不可交互,视觉呈半透明。

vue
<TSlider v-model="value" disabled />

自定义步长

step 控制每次拖拽的步进粒度。

vue
<TSlider v-model="value" :step="10" />

垂直方向

vertical 将滑块切换为垂直布局。

vue
<TSlider v-model="value" vertical />
<TSlider v-model="value" :range="true" vertical />

置反(Reversed)

reversed 翻转滑块的起点方向:横向从右到左,纵向从上到下。

vue
<TSlider v-model="value" reversed />
<TSlider v-model="value" :range="true" reversed />
<TSlider v-model="value" vertical reversed />

多点滑块

range 可传入数字 34 等,创建任意数量手柄的多点滑块。手柄按相邻约束:arr[0] &lt; arr[1] &lt; arr[2]…。

vue
<TSlider v-model="value" :range="3" />
<TSlider v-model="value" :range="4" vertical />

Tooltip 展示

tooltip 控制提示的展示时机:

  • 'hover'(默认)— 悬停或拖拽时显示
  • 'always' — 始终显示
  • 'never' — 不显示
vue
<TSlider v-model="value" tooltip="always" />

Tooltip 方向

tooltip-placement 控制提示显示位置:水平滑块可选 top(默认)/ bottom;垂直滑块可选 right(默认)/ left

vue
<TSlider v-model="value" tooltip="always" tooltip-placement="bottom" />
<TSlider v-model="value" vertical tooltip="always" tooltip-placement="left" />

自定义格式化

tooltip-formatter 接收自定义函数,返回格式化后的提示文本。

vue
<TSlider
  v-model="value"
  :tooltip-formatter="(v: number) => `${v}%`"
  tooltip="always"
/>

范围拖动

draggable-range(默认 true)允许在范围模式下,拖动两个手柄之间的填充区来整体移动区间。

vue
<TSlider v-model="value" :range="true" />
<!-- 禁用范围拖动 -->
<TSlider v-model="value" :range="true" :draggable-range="false" />

尺码(Size)

size 属性控制滑块整体大小:sm(小)、md(默认)、xl(大)。

vue
<TSlider v-model="value" size="sm" />
<TSlider v-model="value" size="md" />
<TSlider v-model="value" size="xl" />

API

Props

参数说明类型默认值
v-model当前值。单滑块为 number,多滑块为 number[]number | number[]0
min最小值number0
max最大值number100
step步长,设为 null 时仅允许吸附 marksnumber | null1
range多滑块模式。true 为双点,传入数字为 N 点boolean | numberfalse
disabled禁用booleanfalse
vertical垂直方向booleanfalse
reversed置反起点方向booleanfalse
size滑块尺寸'sm' | 'md' | 'xl''md'
draggable-range允许拖动填充区整体移动区间(range ≥2 时生效)booleantrue
marks刻度标记 { value: label }Record<number, string>undefined
dots仅允许拖到刻度点(需配合 marks 使用)booleanfalse
tooltip提示展示方式'always' | 'hover' | 'never''hover'
tooltip-formatter提示内容格式化函数(val: number) => stringString
tooltip-placement提示位置,不传则自动根据方向选默认值'top' | 'bottom' | 'right' | 'left'undefined(自动)
color主题色,控制手柄边框和填充区颜色TablerColor'primary'

Emits

事件名说明回调参数
change拖拽过程中值变化时触发(value: number | number[])
afterChange拖拽结束(mouseup/touchend)时触发(value: number | number[])