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

属性

名称类型默认值描述
uistring-

预设样式。

描述
small小尺寸样式。
tiny特小尺寸样式。
value*|Array<*>-

值。

默认值类型为 number,经过 parse 函数处理后值大小范围应在 minmax 之间。 当值为 Array<number> 形式时,组件则渲染多个滑块与值一一对应。

当提供 parseformat 时,值可以为任意类型,但 parse 需要把传入值解析为 number 类型并返回;format 需要把传出值格式化成原始形式。parseformat 的实现只需要处理单值,组件内部会给多值的每一项分别依次调用这两个函数。

secondary-progressnumber|Array<number>0次要条。
minnumber0value 经过 parse 函数处理后允许的最小值。
maxnumber1value 经过 parse 函数处理后允许的最大值。
stepnumber0value 经过 parse 函数处理后的步进值。
markbooleanfalse是否显示步进标记。
parsefunctionval => val传入值处理函数。
formatfunctionval => val输出值处理函数。

插槽

名称描述
track滑轨。默认内容:横线。
tip-label浮动提示文本。默认内容:当前 value 值。
thumb

滑块。

默认内容:圆形按钮。

名称类型描述
indexnumber滑块索引。
focusboolean滑块是否聚焦。
hoverboolean鼠标是否悬浮。
draggingboolean滑块是否正在被拖动。
tip

浮动提示。

默认内容:内容为 value 的 Tooltip 组件。

名称类型描述
targetHTMLElement滑块元素。
openboolean是否存在激活的滑块。
active-indexboolean激活的滑块索引。

事件

名称描述
input

v-model

修改后触发,回调参数为 (value: *)value 为改变后经 format 函数处理过的新值。