Slider 滑块
示例
尺寸
<template>
<article>
<veui-slider v-model="value"/>
<veui-slider
v-model="value"
ui="small"
/>
<veui-slider
v-model="value"
ui="tiny"
/>
</article>
</template>
<script>
import { Slider } from 'veui'
export default {
components: {
'veui-slider': Slider
},
data () {
return {
value: 0.5
}
}
}
</script>
只读/禁用
<template>
<article>
<veui-slider v-model="value"/>
<veui-slider
v-model="value"
readonly
/>
<veui-slider
v-model="value"
disabled
/>
</article>
</template>
<script>
import { Slider } from 'veui'
export default {
components: {
'veui-slider': Slider
},
data () {
return {
value: 0.5
}
}
}
</script>
步进
<template>
<article>
<veui-slider
v-model="value"
:min="min"
:max="max"
:step="step"
mark
/>
<veui-slider
v-model="value"
:min="min"
:max="max"
:step="step"
/>
</article>
</template>
<script>
import { Slider } from 'veui'
export default {
components: {
'veui-slider': Slider
},
data () {
return {
value: 55,
min: 0,
max: 100,
step: 8
}
}
}
</script>
范围
<template>
<article>
<veui-slider
v-model="value"
:min="0"
:max="100"
/>
</article>
</template>
<script>
import { Slider } from 'veui'
export default {
components: {
'veui-slider': Slider
},
data () {
return {
value: [22, 66]
}
}
}
</script>
次级条
<template>
<article>
<veui-slider
v-model="videoPlayProgress"
:secondary-progress="videoBufferProgress"
/>
</article>
</template>
<script>
import { Slider } from 'veui'
export default {
components: {
'veui-slider': Slider
},
data () {
return {
videoPlayProgress: 0.11,
videoBufferProgress: 0.57
}
}
}
</script>
定制内容
"hsl(60, 100%, 50%)" , "hsl(120, 100%, 50%)" , "hsl(180, 100%, 50%)" , "hsl(240, 100%, 50%)" , "hsl(300, 100%, 50%)"
<template>
<article>
<veui-slider
v-model="value"
:min="0"
:max="360"
:step="1"
:parse="parseColorHue"
:format="formatColorHue"
>
<div
slot="track"
style="width: 100%; height: 20px;"
:style="{background: colorGradient}"
/>
<div
slot="thumb"
:key="`thumb_${index}`"
slot-scope="{ index }"
style="margin-top: 2px"
>
<div style="width: 16px; height: 12px">
<svg
width="16"
height="12"
viewBox="0 0 16 12"
><polygon points="8,0 16,12 0,12"/></svg>
</div>
</div>
<template
slot="tip"
slot-scope="{ open, activeIndex }"
>
<div
v-show="open"
class="custom-tip"
:style="{
left: `${(activeIndex >= 0 ? parseColorHue(value[activeIndex]) : 0) / 360 * 100}%`,
backgroundColor: value[activeIndex]
}"
/>
</template>
</veui-slider>
<div>
<span
v-for="(val, index) in value"
:key="`color-value-${index}`"
>
"<span :style="{ color: val }">{{ val }}</span>"
<span v-if="index < value.length - 1">,</span>
</span>
</div>
</article>
</template>
<script></script>
API
属性
名称 | 类型 | 默认值 | 描述 | ||||||
---|---|---|---|---|---|---|---|---|---|
ui | string | - | 预设样式。
| ||||||
value | *|Array<*> | - | 值。 默认值类型为 当提供 | ||||||
secondary-progress | number|Array<number> | 0 | 次要条。 | ||||||
min | number | 0 | value 经过 parse 函数处理后允许的最小值。 | ||||||
max | number | 1 | value 经过 parse 函数处理后允许的最大值。 | ||||||
step | number | 0 | value 经过 parse 函数处理后的步进值。 | ||||||
mark | boolean | false | 是否显示步进标记。 | ||||||
parse | function | val => val | 传入值处理函数。 | ||||||
format | function | val => val | 输出值处理函数。 |
插槽
名称 | 描述 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
track | 滑轨。默认内容:横线。 | |||||||||||||||
tip-label | 浮动提示文本。默认内容:当前 value 值。 | |||||||||||||||
thumb | 滑块。 默认内容:圆形按钮。
| |||||||||||||||
tip | 浮动提示。 默认内容:内容为
|
事件
名称 | 描述 |
---|---|
input |
修改后触发,回调参数为 |