国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

微信小程序swiper-dot中的點(diǎn)如何改成滑塊詳解

發(fā)布時(shí)間:2021-08-17 12:16 來(lái)源: 閱讀:0 作者:Winder 欄目: JavaScript 歡迎投稿:712375056

目錄

    本文主要介紹如何基于已有的組件(比如微信小程序的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)如下:

    • 滑塊需要有一個(gè)自然的滑動(dòng)效果。
    • 滑塊需要跟著(zhù)滑動(dòng)方向滑動(dòng)。

    思路

    經(jīng)過(guò)整理,實(shí)現方案如下:

    • 在滑動(dòng)swiper的content的時(shí)候,我們可以獲取當前頁(yè)面的curPage(一般情況下組件都會(huì )提供當前頁(yè)),接著(zhù)我們可以在滑動(dòng)結束之后設置上一個(gè)頁(yè)面的prePage,這個(gè)prePage其實(shí)就是本次的curPage。通過(guò)這個(gè)page我們可以得到滑塊滑動(dòng)的起始位置以及結束位置。
    • 滑動(dòng)我們可以通過(guò)transform來(lái)實(shí)現。
    • 因為用了transform,所以我們需要小程序支持自定義style,但目前來(lái)看小程序提供了一套this.animate的方法。

    實(shí)現

    swiper監聽(tīng)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,也就是我們的滑塊區域,代碼如下:

    <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);
    

    change事件中的邏輯

    模板已經(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)單的挺不錯的😒。

    寫(xiě)在最后

    說(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í)歡迎投稿傳遞力量。

    国产精品亚洲片夜色在线| 无码区A∨视频体验区30秒| 中文字幕人妻无码一夲道| 国产在线无码AV完整版在线观看| 国产丶欧美丶日本不卡视频| 日韩三级|