Slider
基础用法
html
<pa-slider v-model="value" />ts
import { ref } from 'vue'
const value = ref(50)双滑块
html
<pa-slider v-model="value" range />ts
import { ref } from 'vue'
const value = ref([20, 50])指定范围
html
<pa-slider v-model="value" :min="-10" :max="10" />ts
import { ref } from 'vue'
const value = ref(-4)设置步长
html
<pa-slider v-model="value" :step="5" />ts
import { ref } from 'vue'
const value = ref(20)显示范围
html
<pa-slider v-model="value" show-range />ts
import { ref } from 'vue'
const value = ref(25)禁用
html
<pa-slider v-model="value" disabled />ts
import { ref } from 'vue'
const value = ref(20)自定义样式
html
<pa-slider v-model="value" active-color="red" inactive-color="#ccc" />ts
import { ref } from 'vue'
const value = ref(20)自定义按钮
html
<pa-slider v-model="value">
<template #button>
<div class="slider-demo-button">{{ value }}</div>
</template>
</pa-slider>ts
import { ref } from 'vue'
const value = ref(20)刻度标记
html
<pa-slider v-model="value" :marks="marks" />
<pa-slider v-model="value2" :marks="marks" range class="block" style="margin-top: 60px" />ts
import { ref } from 'vue'
const value = ref(52)
const value2 = ref([29, 72])
const marks = {
0: '0',
20: '20',
40: '40',
60: '60',
80: '80',
100: '100',
}Slider Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| modelValue | 当前进度百分比,在双滑块模式下为数组格式 | SliderValue | 单滑块时0,双滑块时[0, 100] |
| range | 是否开启双滑块模式 | boolean | false |
| min | 最小值 | number | 0 |
| max | 最大值 | number | 100 |
| step | 步长 | number | 1 |
| disabled | 是否禁用滑块 | boolean | false |
| showTag | 是否显示当前进度标签 | boolean | false |
| showRange | 是否显示范围值 | boolean | false |
| marks | 是否显示刻度标记 | Record<number,string> | false |
| formatter | 格式化值 | (value:number)=>number|string | - |
| activeColor | 进度条颜色 | string | - |
| inactiveColor | 进度条非激活态颜色 | string | - |
Slider Event
| 事件名 | 参数 |
|---|---|
| update:modelValue | (value: number | number[]) |
| change | (value: number | number[]) |
Slider Slot
| 名称 | 说明 |
|---|---|
| button | - |
样式变量
| 名称 | 默认值 |
|---|---|
| --pa-slider-background-color | #ebedf0 |
| --pa-slider-active-background | var(--pa-color-primary) |
| --pa-slider-height | 4px |
| --pa-slider-tip-font-color | var(--pa-color-black) |
| --pa-slider-tip-font-size | 12px |
| --pa-slider-duration | 0.2s |
| --pa-slider-button-width | 24px |
| --pa-slider-button-height | 24px |
| --pa-slider-button-background | #fff |
| --pa-slider-button-border | 1px solid transparent |
| --pa-slider-button-radius | 50% |
| --pa-slider-button-shadow | 0 1px 2px rgba(0, 0, 0, 0.5 |
| --pa-slider-button-tip-font-color | var(--pa-color-black) |
| --pa-slider-button-tip-font-size | 12px |
| --pa-slider-button-tip-transform | translate3d(0, -100%, 0 |
| --pa-slider-margin | 0 15px |
| --pa-slider-disabled-opacity | 0.5 |