微信小程序swiper-dot中的點(diǎn)如何改成滑塊詳解
本文主要介紹如何基于已有的組件(比如微信小程序的swiper,還有我們平時(shí)h5用的比較多的swiper.js等),實(shí)現(xiàn)一個(gè)滑塊樣式的指示面板。demo基于小程序,但是邏輯通用。
背景
最近要做一個(gè)新的小程序,在首頁(yè)部分有一個(gè)swiper模塊,因?yàn)樵O(shè)計(jì)同學(xué)的出色發(fā)揮😭,讓我在枯燥的開發(fā)中得到了些許快樂(lè)。他們將swiper中指示面板中的點(diǎn),改成了一個(gè)滑塊,說(shuō)實(shí)話,老老實(shí)實(shí)整成一排點(diǎn)它不香么,哈哈哈哈。但是我寵他~
目標(biāo)效果
整體來(lái)看很簡(jiǎn)單。主要是下邊的滑塊需要花一些功夫。整理需求之后需要實(shí)現(xiàn)的功能點(diǎn)如下:
- 滑塊需要有一個(gè)自然的滑動(dòng)效果。
- 滑塊需要跟著滑動(dòng)方向滑動(dòng)。

思路
經(jīng)過(guò)整理,實(shí)現(xiàn)方案如下:
- 在滑動(dòng)swiper的content的時(shí)候,我們可以獲取當(dāng)前頁(yè)面的curPage(一般情況下組件都會(huì)提供當(dāng)前頁(yè)),接著我們可以在滑動(dòng)結(jié)束之后設(shè)置上一個(gè)頁(yè)面的prePage,這個(gè)prePage其實(shí)就是本次的curPage。通過(guò)這個(gè)page我們可以得到滑塊滑動(dòng)的起始位置以及結(jié)束位置。
- 滑動(dòng)我們可以通過(guò)transform來(lái)實(shí)現(xiàn)。
- 因?yàn)橛昧藅ransform,所以我們需要小程序支持自定義style,但目前來(lái)看小程序提供了一套this.animate的方法。
實(shí)現(xiàn)
swiper監(jiān)聽change
首先我們需要使用swiper的change事件,代碼如下:
<swiper
class="hot-content-swiper"
indicator-dots="{{indicatorDots}}"
vertical="{{vertical}}"
bindchange="sliderHandler">
<block wx:for="{{popular_zone_list}}" wx:key="*this">
<swiper-item>
<view class="hot-list">
這個(gè)是swiper{{index}}
</view>
</swiper-item>
</block>
</swiper>
自定義dot模塊
其次,我們需要自定dot的DOM,也就是我們的滑塊區(qū)域,代碼如下:
<view class="dot">
<view class="dot-bar" style="width: {{dotBarWidth}}rpx"></view>
</view>
這其中需要給我們的滑塊一個(gè)初始化的大小,不然滑動(dòng)之后會(huì)有一個(gè)寬度變換的抖動(dòng),也就是dotBarWidth。
這個(gè)滑塊的大小是基于滑道的長(zhǎng)度,以及swiper-item的數(shù)量來(lái)計(jì)算的。這樣子得到寬度之后我們只要偏移滑塊寬度的倍數(shù)即可。
let dotWidth = 100; let dotBarWidth = Math.round(dotWidth/popular_zone_list.length);
change事件中的邏輯
模板已經(jīng)寫完了,那我們就開始寫change的事件,代碼如下:
sliderHandler({detail}) {
let curPage = detail.current;
let self = this;
this.animate('.dot-bar', [
{
translateX: self.prePage * 100 + '%',
transformOrigin: 'center',
},
{
translateX: curPage*100 + '%',
transformOrigin: 'center',
},
], 100, function () { //animate的回調(diào)
self.prePage = curPage;
self.clearAnimation('.container', {
translateX: true,
transformOrigin: true
});
});
},
// 如果不是小程序,那么this.animate這個(gè)換成動(dòng)態(tài)綁定style,或者其他的DOM操作即可。
到此功能已經(jīng)實(shí)現(xiàn)了,是不是發(fā)現(xiàn)這個(gè)功能還是很簡(jiǎn)單的挺不錯(cuò)的😒。
寫在最后
說(shuō)實(shí)話,在實(shí)現(xiàn)的過(guò)程中,我有一些比較智障的行為,和當(dāng)時(shí)的狀態(tài)有關(guān)吧,不知怎么就過(guò)于關(guān)注在如何判斷滑塊是左滑還是右滑,導(dǎo)致繞了個(gè)路。但是其實(shí)基于結(jié)果去考慮發(fā)現(xiàn),我們只要計(jì)算起始和結(jié)束位置即可,左滑必定是開始位置大于結(jié)束位置的。希望以上方案能給大家一些參考吧~🎉
到此這篇關(guān)于微信小程序swiper-dot中的點(diǎn)如何改成滑塊的文章就介紹到這了,更多相關(guān)微信小程序swiper-dot點(diǎn)改滑塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 微信小程序?qū)崿F(xiàn)帶滑塊的進(jìn)度條
- 微信小程序?qū)崿F(xiàn)滑塊驗(yàn)證
- 微信小程序?qū)崿F(xiàn)登陸注冊(cè)滑塊驗(yàn)證
- 微信小程序滑塊驗(yàn)證實(shí)現(xiàn)方法
- 微信小程序12行js代碼自己寫個(gè)滑塊功能(推薦)
- 微信小程序之導(dǎo)航滑塊視圖容器功能的實(shí)現(xiàn)代碼(簡(jiǎn)單兩步)
- 微信小程序?qū)崿F(xiàn)帶刻度尺滑塊功能
- 微信小程序 開發(fā)之滑塊視圖容器(swiper)詳解及實(shí)例代碼
- 微信小程序?qū)崿F(xiàn)滑動(dòng)驗(yàn)證拼圖
- 微信小程序?qū)崿F(xiàn)拼圖游戲
- 微信小程序?qū)崿F(xiàn)拼圖小游戲
- 微信小程序?qū)崿F(xiàn)的數(shù)字滑塊拼圖效果
相關(guān)文章
JavaScript中this關(guān)鍵字用法實(shí)例分析
這篇文章主要介紹了JavaScript中this關(guān)鍵字用法,結(jié)合實(shí)例形式總結(jié)分析了javascript中this關(guān)鍵字在不同條件下的指向問(wèn)題與相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
JavaScript實(shí)現(xiàn)的圓形浮動(dòng)標(biāo)簽云效果實(shí)例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的圓形浮動(dòng)標(biāo)簽云效果,涉及javascript字符串與數(shù)組的遍歷、排序操作以及元素樣式動(dòng)態(tài)操作與數(shù)學(xué)運(yùn)算等相關(guān)技巧,是非常實(shí)用的一段代碼,需要的朋友可以參考下2015-08-08
JS基于面向?qū)ο髮?shí)現(xiàn)的拖拽庫(kù)實(shí)例
這篇文章主要介紹了JS基于面向?qū)ο髮?shí)現(xiàn)的拖拽庫(kù),以實(shí)例形式分析了JavaScript設(shè)置水平、垂直拖拽及限制拖拽范圍的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
微信小程序?qū)崿F(xiàn)上傳多個(gè)文件 超過(guò)10個(gè)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)上傳多個(gè)文件,超過(guò)10個(gè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
微信小程序錄音實(shí)現(xiàn)功能并上傳(使用node解析接收)
在我們的日常開發(fā)中經(jīng)常會(huì)遇到錄音功能,并上傳到服務(wù)器,今天小編給大家分享微信小程序錄音功能實(shí)現(xiàn)并上傳錄音文件,使用node解析接收,需要的朋友可以參考下2020-02-02
JavaScript實(shí)現(xiàn)動(dòng)態(tài)表格效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)表格效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
淺析創(chuàng)建javascript對(duì)象的方法
下面小編就為大家?guī)?lái)一篇淺析創(chuàng)建javascript對(duì)象的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05

