小程序自定義組件 slider

承接上一篇progress,slider才是主角
微信官方提供的slider功能有限,無法滿足音頻播放所需要用到的全部功能,所以這里寫了一個自定義slider組件滿足業(yè)務開發(fā)中的需求。寫的很粗糙,不足之處請指正!

改組件主要提供以下功能
1、可自定義滑塊(圖片或自定義視圖),默認為和官方一樣的白色圓形
2、劃出緩沖范圍自動回滾
3、漸變前景色

下面主要講講這幾個功能的實現(xiàn)用法和注意事項,其他功能請下載文末的demo查看

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

1、實現(xiàn)滑塊的點擊滑動,主要用到下面五個方法

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

在js文件中將這五個方法拋出,讓使用該組件的頁面可以監(jiān)聽到這些方法

自定義組件觸發(fā)事件時,需要使用 triggerEvent 方法,指定事件名、detail對象和事件選項:

以上五個方法都要使用triggerEvent 監(jiān)聽
sliderStart: function (e) {
      if (!this.data.disabled) {
        let detail = e.changedTouches;
        let option = {};
        this.triggerEvent('sliderStart', detail, option);
      }
},

2、在這個組件中把默認滑塊的大小規(guī)定在[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、參數(shù)釋義:
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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容