# slider

组件类型:UniSliderElement

滑动选择器

# 兼容性

Web Android iOS
4.0 3.9 4.11

# 属性

名称 类型 默认值 兼容性 描述
name string -
表单的控件名称,作为键值对的一部分与表单(form组件)一同提交
disabled boolean -
是否禁用
min number 0
slider 最小值
max number 100
slider 最大值
step number 1
slider 步长,取值必须大于 0,并且可被(max - min)整除
value number 0
radio当前取值
activeBackgroundColor string(string.ColorString) "#007aff"
slider 滑块左侧已选择部分的线条颜色
backgroundColor string(string.ColorString) "#e9e9e9"
radio背景条的颜色
block-size number 28
radio滑块的大小,取值范围为 12 - 28
foreColor string(string.ColorString) -
slider 的滑块背景颜色
show-value boolean false
是否显示当前 value
@change (event: UniSliderChangeEvent) => void -
完成一次拖动后触发的事件,event.detail = {value: value}
@changing (event: UniSliderChangeEvent) => void -
拖动过程中触发的事件,event.detail = {value: value}
block-color string(string.ColorString) "#ffffff"
滑块颜色 (使用foreColor替代)
activeColor string(string.ColorString) "#007aff"
slider 滑块左侧已选择部分的线条颜色

# 事件

# UniSliderChangeEvent

# UniSliderChangeEventDetail
# UniSliderChangeEventDetail 的属性值
名称 类型 必填 默认值 兼容性 描述
value number - - -

# tips

show-value属性设为true后,会在横条右侧显示一个数字。

但注意app-uvue中,value显示区的默认宽度是4位数字。超出宽度后,后面的数字无法显示。即最大9999。(其他平台不限制)

如您需要5位或更多数字,请将show-value设为false或不设,自行写一个text组件,绑定value的数值来显示。

  • uni-app x 的 App 和 web 平台的样式效果和 W3C 的效果一致,球的左边距/右边距和轨道是对齐的,app-vue/web/小程序 平台会溢出球半径
  • 在 uni-app x 的 App 和 web 平台高度为 block-size(28px) 大小 + 阴影(4px * 2),默认 margin: 1px 0;,暂不支持设置 padding,实际占用高度为 38px
  • 在 app-vue/web/小程序 平台高度为 18px, 默认 margin: 10px 18px;,实际占用高度为 38px
  • 默认占用高度是一致的,调整样式后会出现差异
  • 4.18+ App-Android 平台,优化了在滚动容器中的行为,当水平拖动 slider 超过 4 * dpi 时将阻止默认行为,避免滚动过程中触发 slider 变动
  • 平台差异:当 max 值不能整除 step 值时,app-android/web 平台滑块不能滑动到最末端,最大滑动值为 max 值整除 step 值的位置,app-ios/微信小程序平台滑块可以滑动到最末端,返回值会四舍五入到 step 的精度值,app-ios 平台 4.33 版本调整为和 app-android/web 平台一致,示例如下:
<template>
  <view>
    <!-- app/web 平台滑块不能滑动到最末端,最大滑动值为10  -->
    <!-- 微信小程序 滑块可以滑动到最末端,取值会四舍五入为 11 -->
    <slider :min="0" :max="10.5" :step="1" :show-value="true" />
  </view>
</template>

# 示例

hello uni-app x

扫码体验(手机浏览器跳转到App直达页)

Template

Script



<template>
  <view class="main">
    <slider :disabled="disabled_boolean" :min="min_input" :max="max_input" :step="step_input" :value="value_input"
      :activeColor="activeColor_input" :backgroundColor="backgroundColor_input" :block-size="block_size_input"
      :block-color="block_color_input" :show-value="show_value_boolean" :valueColor="valueColor" @click="slider_click"
      @touchstart="slider_touchstart" @touchmove="slider_touchmove" @touchcancel="slider_touchcancel"
      @touchend="slider_touchend" @tap="slider_tap" @longpress="slider_longpress" @change="slider_change"
      @changing="slider_changing" style="width: 90%"><text>uni-app-x</text></slider>
  </view>

  <scroll-view style="flex: 1">
    <view class="content">
      <page-head title="组件属性"></page-head>
      <boolean-data :defaultValue="false" title="是否显示当前 value" @change="change_show_value_boolean"></boolean-data>
      <boolean-data :defaultValue="false" title="是否禁用" @change="change_disabled_boolean"></boolean-data>
      <input-data defaultValue="0" title="最小值(min)" type="number" @confirm="confirm_min_input"></input-data>
      <input-data defaultValue="100" title="最大值(max)" type="number" @confirm="confirm_max_input"></input-data>
      <input-data defaultValue="1" title="步长(step),取值必须大于 0,并且可被(max - min)整除" type="number"
        @confirm="confirm_step_input"></input-data>
      <input-data defaultValue="0" title="当前取值(value)" type="number" @confirm="confirm_value_input"></input-data>
      <input-data defaultValue="#007aff" title="滑块左侧已选择部分的线条颜色(active-color)" type="text"
        @confirm="confirm_activeColor_input"></input-data>
      <input-data defaultValue="#e9e9e9" title="背景条的颜色(background-color)" type="text"
        @confirm="confirm_backgroundColor_input"></input-data>
      <input-data defaultValue="28" title="滑块的大小(block-size),取值范围为 12 - 28" type="number"
        @confirm="confirm_block_size_input"></input-data>
      <input-data defaultValue="#ffffff" title="滑块颜色(block-color)" type="text"
        @confirm="confirm_block_color_input"></input-data>
      <input-data defaultValue="#888888" title="Value颜色(value-color)" type="text"
        @confirm="confirm_value_color_input"></input-data>
    </view>

    <view class="uni-padding-wrap">
      <page-head title="默认及使用"></page-head>
      <view class="uni-title">显示当前value</view>
      <view>
        <slider @change="sliderChange" :value="50" :show-value="true" />
      </view>

      <view class="uni-title">设置步进:step=10跳动</view>
      <view>
        <view class="uni-row">
          <text>0</text>
          <text class="m-l-a">100</text>
        </view>
        <slider @change="sliderChange" :value="60" :step="10" />
      </view>

      <view class="uni-title">浮点步进:step=0.01跳动</view>
      <view>
        <slider :value="0.5" :min="0" :max="1" :step="0.01" :show-value="true" />
      </view>

      <view class="uni-title">设置最小/最大值</view>
      <view>
        <slider @change="sliderChange" :value="100" :min="50" :max="200" :show-value="true" />
      </view>

      <view class="uni-title">不同颜色和大小的滑块</view>
      <view>
        <slider id="slider-custom-color-and-size" @change="sliderChange" :value="sliderValue"
          :backgroundColor="sliderBackgroundColor" :activeColor="sliderActiveColor"
          :activeBackgroundColor="sliderActiveColor" :blockColor="sliderBlockColor" :foreColor="sliderBlockColor"
          :block-size="sliderBlockSize" />
      </view>
      <view class="uni-title">暗黑模式</view>
      <view>
        <slider :show-value="true" backgroundColor="rgba(32,32,32,0.5)" valueColor="#555" />
      </view>

      <navigator url="./slider-in-swiper">
        <button>slider in swiper</button>
      </navigator>
    </view>
  </scroll-view>
</template>

<style>
  .main {
    padding: 5px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    flex-direction: row;
    justify-content: center;
  }

  .main .list-item {
    width: 100%;
    height: 100px;
    border: 1px solid #666;
  }

  .m-l-a {
    margin-left: auto;
  }
</style>

# 参见