Slider 滑动条
滑动条组件,可以通过拖拽控制当前值。
受控组件,需要声明 modelValue
属性
基础用法
可以添加 disabled
属性禁用滑动条。
show code
<template>
<Flex gap="16px" flow="column">
<Slider v-model="value1"></Slider>
<Slider v-model="value2"></Slider>
<Slider v-model="value3" disabled></Slider>
</Flex>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Flex, Slider } from 'comz'
export default defineComponent({
components: {
Flex,
Slider
},
setup() {
return {
value1: ref(0),
value2: ref(50),
value3: ref(30)
}
}
})
</script>
滑动范围
使用 min
和 max
指定滑动条的范围。
show code
<template>
<Flex gap="16px" flow="column">
<Flex flow="column">
<div>value: {{ value1 }}</div>
<Slider v-model="value1" :min="0" :max="50"></Slider>
</Flex>
<Flex flow="column">
<div>value: {{ value2 }}</div>
<Slider v-model="value2" :min="50" :max="100"></Slider>
</Flex>
<Flex flow="column">
<div>value: {{ value3 }}</div>
<Slider v-model="value3" :min="-50" :max="50"></Slider>
</Flex>
</Flex>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Flex, Slider } from 'comz'
export default defineComponent({
components: {
Flex,
Slider
},
setup() {
return {
value1: ref(0),
value2: ref(50),
value3: ref(0)
}
}
})
</script>
步长
设置 step
属性可以控制最小的滑动距离。
需要注意的是,如果 step
的值不能被 max - min
整除的话,滑动条将不能拉满。
show code
<template>
<Flex gap="16px" flow="column">
<Flex flow="column">
<div>value: {{ value1 }}</div>
<Slider v-model="value1" :step="0.1" :min="0" :max="10"></Slider>
</Flex>
<Flex flow="column">
<div>value: {{ value2 }}</div>
<Slider v-model="value2" :step="30"></Slider>
</Flex>
</Flex>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Flex, Slider } from 'comz'
export default defineComponent({
components: {
Flex,
Slider
},
setup() {
return {
value1: ref(0),
value2: ref(0)
}
}
})
</script>
插槽
使用 prepend
和 append
插槽可以在滑动条前后插入内容。
show code
<template>
<Flex gap="16px" flow="column">
<Slider v-model="value1" :min="min" :max="max">
<template #prepend>{{ min }}</template>
<template #append>{{ max }}</template>
</Slider>
<Slider
:modelValue="Number(value2)"
@update:modelValue="(val) => (value2 = val)"
>
<template #append>
<Input
:modelValue="String(value2)"
@update:modelValue="(val) => (value2 = val)"
style="width: 50px"
></Input>
</template>
</Slider>
</Flex>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Flex, Slider, Input } from 'comz'
export default defineComponent({
components: {
Flex,
Slider,
Input
},
setup() {
return {
min: 0,
max: 100,
value1: ref(0),
value2: ref(50)
}
}
})
</script>
API
属性
Attribute | Type | Default | Description |
---|
modelValue | string | '' | 输入值 |
min | number | 0 | 滑动范围的最小值 |
max | number | 100 | 滑动范围的最大值 |
step | number | 1 | 滑动步长 |
disabled | boolean | false | 是否禁用 |
事件
Event | Type | Description |
---|
update:modelValue | (value: number) => void | 监听 modelValue 值变化 |
插槽
Slot | Description |
---|
prepend | 放置在滑动条之前的插槽 |
append | 放置在滑动条之后的插槽 |