Skip to content

xtf-slider

组件说明

xtf-slider 是数值与范围选择控件,适用于音量、预算、阈值和进度配置。支持单值/双滑块、垂直方向、刻度、气泡、格式化及主题预设。


基础用法

1. 单值双向绑定

vue
<template><xtf-slider v-model="value" show-value unit="%" @change="changed" /></template>
<script>
export default {
  data() {
    return { value: 40 }
  },
  methods: {
    changed(value) {
      console.log('change', value)
    }
  }
}
</script>

2. 范围与刻度

vue
<template>
  <xtf-slider
    v-model="range"
    range
    :step="5"
    :marks="marks"
    mark-clickable
    show-bubble
    @change="changed"
  />
</template>
<script>
export default {
  data() {
    return { range: [20, 80], marks: [0, 25, 50, 75, 100] }
  },
  methods: {
    changed(value) {
      console.log('range', value)
    }
  }
}
</script>

3. 垂直气泡

vue
<template>
  <view style="height: 360rpx">
    <xtf-slider
      v-model="value"
      vertical
      theme="success"
      show-value
      show-bubble
      bubble-visible-mode="drag"
  /></view>
</template>
<script>
export default {
  data() {
    return { value: 60 }
  }
}
</script>

4. 格式化与视觉变体

vue
<template>
  <xtf-slider
    v-model="temperature"
    :min="-10"
    :max="20"
    variant="glow"
    theme="info"
    title="冷藏温度"
    :format="format"
    :bubble-format="bubble"
    value-placement="both"
    show-bubble
  />
</template>
<script>
export default {
  data() {
    return { temperature: 4 }
  },
  methods: {
    format(v) {
      return v + ' °C'
    },
    bubble(v) {
      return v + '°'
    }
  }
}
</script>

全部属性

属性类型默认值作用描述适用范围
modelValueString | Number | Arrayundefined受控值v-model
valueString | Number | Array0modelValue 模式的值单向传值
rangeBooleanfalse双滑块范围模式值为 [min,max]
verticalBooleanfalse垂直轨道垂直控制
min / max / stepString | Number0 / 100 / 1数值边界与步长数值约束
nameString''原生 slider 名称表单
sizeString''sm/md/lg 尺寸尺寸控制
themeString'primary'primary/success/warning/danger/info主题色
variantString'default'default/glass/glow/neon 样式视觉变体
presetString''内置预设neon-pulse
disabled / readonlyBooleanfalse / false禁用或只读状态控制
showValue / showBubble / showRangeBooleanfalse / false / false显示数值、气泡、两端标签信息展示
bubbleVisibleModeString'auto'auto/always/drag气泡显示
title / desc / note / unitString''标题、说明、备注和单位文案
marksArray[]刻度数组见下表
markClickableBooleanfalse点击刻度更新值刻度交互
minLabel / maxLabelString''两端标签showRange
backgroundColor / trackColorString'' / ''轨道颜色颜色定制
activeColor / color / progressColorString''进度颜色,按该优先级解析颜色定制
progressGradientString | Array''进度渐变渐变进度
progressStartColor / progressEndColorString''渐变起止色渐变进度
progressGradientAngleString | Number90渐变角度渐变进度
blockColorString''拇指颜色外观
blockSize / thumbSizeString | Number'' / ''拇指尺寸外观
hideThumb / dragAnywhereBooleanfalse / true隐藏拇指、允许轨道任意位置拖动交互
valuePlacementString'auto'auto/top/meta/both/none数值位置
bubbleGapString | Number10气泡间距气泡
bubbleStyleString'pill'pill/indicator气泡
bubbleUsePopoverBooleanfalse是否将内置数值气泡替换为 xtf-popover 锚定浮层;默认保持原气泡兼容。需要复用 Popover 的位置与动画能力时。
bubblePopoverPlacementString''Popover 气泡位置;为空时横向 Slider 使用 top,垂直 Slider 使用 right需要指定数值浮泡位置时。
bubblePopoverAnimationString'scale'Popover 气泡动画:none/fade/scale/zoom/slide-up/slide-down/slide-left/slide-right调整数值浮泡的显示与隐藏节奏。
bubblePopoverGapString | Number40Popover 浮泡与拇指锚点的间距,数字按 rpx 处理;默认比内置 bubbleGap 更大。需要增加或缩小 Popover 浮泡与滑动轨道的距离时。
trackHeight / widthString | Number10 / ''轨道高度、容器宽度布局
trackRadius / progressRadiusString | Number''轨道和进度圆角外观
progressRadiusTopLeft / progressRadiusTopRight / progressRadiusBottomRight / progressRadiusBottomLeftString | Number''进度四角圆角精细外观
formatFunctionnull(value: Number) => String数值文本
bubbleFormatFunctionnull(value: Number) => String气泡文本
customClass / customStyleString / String | Object'' / ''根节点样式覆盖样式定制

marks 每项支持的字段

字段类型默认值说明
valueNumber-刻度数值
labelStringvalue + unit刻度文案

事件

事件名称触发时机回调参数参数说明
input / update:modelValue / update:value值实时更新(value: Number | Array)当前单值或范围值
changing拖动过程中(value: Number | Array)实时值
change拖动结束、原生 change 或点击刻度(value: Number | Array)最终值

事件使用示例

vue
<template><xtf-slider v-model="value" @changing="changing" @change="changed" /></template>
<script>
export default {
  data() {
    return { value: 20 }
  },
  methods: {
    changing(v) {
      console.log('changing', v)
    },
    changed(v) {
      uni.showToast({ title: '已设为 ' + v, icon: 'none' })
    }
  }
}
</script>

插槽

插槽名作用域参数说明
thumb-leftrange 为真时,插入在左侧内置滑块之后。
thumb-rightrange 为真时,插入在右侧内置滑块之后。

范围滑块插槽示例

vue
<template>
  <xtf-slider v-model="range" range :min="0" :max="100" @change="changed">
    <template #thumb-left><view class="range-thumb-marker">起</view></template>
    <template #thumb-right><view class="range-thumb-marker">止</view></template>
  </xtf-slider>
</template>
<script>
export default {
  data() {
    return { range: [20, 80] }
  },
  methods: {
    changed(value) {
      console.log('range', value)
    }
  }
}
</script>

主题说明

  • 强调色使用 --xtf-slider-accent,由 theme 映射到 --xtf-color-*
  • 轨道默认使用 --xtf-color-surface-muted,拇指边框使用 --xtf-color-surface
  • CSS 变量 --xtf-slider-track-height--xtf-slider-thumb-size 控制核心尺寸。
  • glassglowneon 变体分别提供玻璃、发光和深色霓虹效果。

如需全局调整主题,请在 xtf-config-provider 或主题配置中覆盖相关变量。

MIT Licensed