Skip to content

Slider 滑块

用于在连续或离散区间内拖拽选择数值,适合音量、进度、筛选区间、评分调节等场景。

交互式调试

🔧调试模式Playground

基础用法

vue
<script setup lang="ts">
import { ref } from 'vue'

const value = ref(30)
</script>

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

显示当前值

vue
<lk-slider v-model="value" show-value />

步长与刻度点

showStops 适合离散选择场景;当步数过多时,组件会自动隐藏刻度点以避免界面过密。

vue
<lk-slider v-model="value" :min="10" :max="40" :step="5" show-stops show-value />

双滑块范围选择

范围模式下,v-model 绑定值为数组。

vue
<script setup lang="ts">
import { ref } from 'vue'

const range = ref([20, 60])
</script>

<template>
  <lk-slider v-model="range" range :max="100" show-value />
</template>

自定义样式

vue
<lk-slider
  v-model="value"
  active-color="#ff4d4f"
  inactive-color="#ffe4e6"
  block-color="#ff4d4f"
  block-size="36rpx"
  bar-height="8rpx"
/>

与表单联动

传入 prop 后,滑块在拖拽结束或点击轨道提交值时会触发表单字段变更校验。

vue
<lk-slider v-model="form.score" prop="score" />

事件监听

vue
<template>
  <lk-slider
    v-model="value"
    show-value
    @input="value => console.log('input:', value)"
    @change="value => console.log('change:', value)"
    @dragstart="(value, index) => console.log('start:', value, index)"
    @dragend="(value, index) => console.log('end:', value, index)"
    @click="value => console.log('track click:', value)"
  />
</template>

推荐示例

1) 直接复用项目 Demo(推荐)

vue
<script setup lang="ts">
import SliderDemo from '@/components/demos/slider-demo.vue'
</script>

<template>
  <SliderDemo />
</template>

2) 在业务页中按需组合

vue
<template>
  <view class="page-demo">
    <lk-slider />
  </view>
</template>

API

Props

参数说明类型可选值默认值
modelValue当前值;范围模式下为数组number / number[]0
range是否开启双滑块范围选择booleanfalse
min最小值number0
max最大值number100
step步长number1
showStops是否显示间断点booleanfalse
disabled是否禁用booleanfalse
showValue是否显示当前值booleanfalse
size尺寸stringsmall / default / largedefault
activeColor激活条颜色string''
inactiveColor背景轨道颜色string''
blockSize滑块大小string''
blockColor滑块颜色string''
barHeight轨道高度string''
prop表单字段名,配合 lk-form 联动校验string''
validateEvent值提交时是否触发表单校验booleantrue
id根节点 idstring''
customClass自定义类名string / object / array''
customStyle自定义样式string / object''

Events

事件名说明回调参数
update:modelValue当前值变化(value: number | number[])
input拖动过程或点击轨道时的实时值(value: number | number[])
change拖动结束或点击轨道提交后的最终值(value: number | number[])
dragstart开始拖拽(value: number | number[], index: number, event: Event)
dragend结束拖拽(value: number | number[], index: number, event: Event)
drag-release拖拽释放后触发(value: number | number[])
click点击轨道时触发(value: number | number[], event: Event)

Slots

插槽名说明作用域参数
button自定义滑块按钮内容{ value }

使用建议

TIP

如果用于价格区间、年龄区间等筛选,优先使用 range 模式,并在业务层展示格式化后的说明文案。

WARNING

范围模式下组件内部会自动排序最终值,因此提交给后端前不需要再手动保证 [min, max] 顺序。

基于 MIT 协议开源 · 粤ICP备2022114240号-3

Slider 滑块

正在连接预览服务...

请先运行 pnpm run dev:h5