小程序自定义组件 slider

作者: 杰铭的博客 | 来源:发表于2018-03-22 20:24 被阅读568次

    承接上一篇progress,slider才是主角
    微信官方提供的slider功能有限,无法满足音频播放所需要用到的全部功能,所以这里写了一个自定义slider组件满足业务开发中的需求。写的很粗糙,不足之处请指正!

    改组件主要提供以下功能
    1、可自定义滑块(图片或自定义视图),默认为和官方一样的白色圆形
    2、划出缓冲范围自动回滚
    3、渐变前景色

    下面主要讲讲这几个功能的实现用法和注意事项,其他功能请下载文末的demo查看

    不知道怎么使用自定义组件的同学,可以查看我的上一篇文章progress

    1、实现滑块的点击滑动,主要用到下面五个方法

    bindtap='sliderTap'
    bindtouchstart='sliderStart' 
    bindtouchmove='sliderChange'
    bindtouchend='sliderEnd' 
    bindtouchcancel='sliderCancel'
    

    在js文件中将这五个方法抛出,让使用该组件的页面可以监听到这些方法

    自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail对象和事件选项:

    以上五个方法都要使用triggerEvent 监听
    sliderStart: function (e) {
          if (!this.data.disabled) {
            let detail = e.changedTouches;
            let option = {};
            this.triggerEvent('sliderStart', detail, option);
          }
    },
    

    2、在这个组件中把默认滑块的大小规定在[20, 40]rpx之间。有两个地方需要作出限制
    2.1、css文件 设置滑块的上下限

    max-width: 40rpx;
    max-height: 40rpx;
    min-width: 20rpx;
    min-height: 20rpx;
    

    2.2、js文件 在attached方法中对滑块大小作出限制

        let blockSize = this.data.blockSize;
        if (blockSize > 40) {
          this.setData({
            blockSize: 40
          })
        } else if (blockSize < 20) {
          this.setData({
            blockSize: 20
          })
        }
    

    3、还有一个值得注意的地方是,在使用该组件的时候要设置slider距离屏幕左边的距离,这个距离填写你项目中的实际距离即可

     slider-left='75'
    

    4、该组件所用到的单位均为rpx

    5、参数释义:
    width: slider和progress 长度
    strokeWidth: slider和progress 宽度
    radius: slider和progress圆角
    bufferColor: 缓冲条颜色
    percent: 缓冲条百分比
    backgroundColor: progress背景色
    activeColor: slider前景色
    value: 当前值
    max: 最大值
    blockSrc: 图片滑块地址
    blockImageWidth: 图片滑块宽
    blockImageHeight: 图片滑块高
    blockSize: 默认滑块大小
    blockColor: 默认滑块颜色
    isCustom: 是否自定义滑块 自定义滑块必须设置isCustom为true

    6、下面放一些该组件实例图文


    设置value 和 max 设置滑块大小 设置滑块颜色 图片滑块

    7、没有写时间组件,所以时间要自己加哦

    8、下一篇文章audio是一个音频播放实例

    下载地址: demo

    相关文章

      网友评论

      • 朝夕情话:有没有类似于slider中step(步长)的参数可以设置呢?
      • 施瓦辛格777:确实不错,我在基于你的代码上添加 垂直方向的 slider。

      本文标题:小程序自定义组件 slider

      本文链接:https://www.haomeiwen.com/subject/oxynqftx.html