- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > JavaScript >
- 微信小程序swiper-dot中的點(diǎn)如何改成滑塊詳解
本文主要介紹如何基于已有的組件(比如微信小程序的swiper,還有我們平時(shí)h5用的比較多的swiper.js等),實(shí)現一個(gè)滑塊樣式的指示面板。demo基于小程序,但是邏輯通用。
最近要做一個(gè)新的小程序,在首頁(yè)部分有一個(gè)swiper模塊,因為設計同學(xué)的出色發(fā)揮😭,讓我在枯燥的開(kāi)發(fā)中得到了些許快樂(lè )。他們將swiper中指示面板中的點(diǎn),改成了一個(gè)滑塊,說(shuō)實(shí)話(huà),老老實(shí)實(shí)整成一排點(diǎn)它不香么,哈哈哈哈。但是我寵他~
整體來(lái)看很簡(jiǎn)單。主要是下邊的滑塊需要花一些功夫。整理需求之后需要實(shí)現的功能點(diǎn)如下:
經(jīng)過(guò)整理,實(shí)現方案如下:
首先我們需要使用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的DOM,也就是我們的滑塊區域,代碼如下:
<view class="dot"> <view class="dot-bar" style="width: {{dotBarWidth}}rpx"></view> </view>
這其中需要給我們的滑塊一個(gè)初始化的大小,不然滑動(dòng)之后會(huì )有一個(gè)寬度變換的抖動(dòng),也就是dotBarWidth。
這個(gè)滑塊的大小是基于滑道的長(cháng)度,以及swiper-item的數量來(lái)計算的。這樣子得到寬度之后我們只要偏移滑塊寬度的倍數即可。
let dotWidth = 100; let dotBarWidth = Math.round(dotWidth/popular_zone_list.length);
模板已經(jīng)寫(xiě)完了,那我們就開(kāi)始寫(xiě)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的回調 self.prePage = curPage; self.clearAnimation('.container', { translateX: true, transformOrigin: true }); }); }, // 如果不是小程序,那么this.animate這個(gè)換成動(dòng)態(tài)綁定style,或者其他的DOM操作即可。
到此功能已經(jīng)實(shí)現了,是不是發(fā)現這個(gè)功能還是很簡(jiǎn)單的挺不錯的😒。
說(shuō)實(shí)話(huà),在實(shí)現的過(guò)程中,我有一些比較智障的行為,和當時(shí)的狀態(tài)有關(guān)吧,不知怎么就過(guò)于關(guān)注在如何判斷滑塊是左滑還是右滑,導致繞了個(gè)路。但是其實(shí)基于結果去考慮發(fā)現,我們只要計算起始和結束位置即可,左滑必定是開(kāi)始位置大于結束位置的。希望以上方案能給大家一些參考吧~🎉
到此這篇關(guān)于微信小程序swiper-dot中的點(diǎn)如何改成滑塊的文章就介紹到這了,更多相關(guān)微信小程序swiper-dot點(diǎn)改滑塊內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站