微信小程序?qū)崿F(xiàn)點(diǎn)擊導(dǎo)航條切換頁面
本文實(shí)例為大家分享了微信小程序?qū)崿F(xiàn)點(diǎn)擊導(dǎo)航條切換頁面的具體代碼,供大家參考,具體內(nèi)容如下
我錄制了個gif如下,黃色部分是不可以滑動的,藍(lán)色部分可以滑動。
代碼解說:
- 首先我在js自定義了navState參數(shù)用于判斷導(dǎo)航的當(dāng)前狀態(tài),
- 定義了data-index用于js中動態(tài)修改導(dǎo)航的當(dāng)前狀態(tài),
- nav-switch-style為選擇導(dǎo)航條時的樣式,
- 不可滑動視圖切換很簡單,用wx:if判斷狀態(tài)顯示相應(yīng)頁就好了,
- 滑動頁視圖切換要用到swiper和 swiper-item,
- 用bindchang方法監(jiān)聽滑塊,current 改變時會觸發(fā) change 事件(還有個bindanimationfinish方法監(jiān)聽也是可以用的,詳細(xì)請看官方文檔)
- 動態(tài)的綁定了current滑塊的index,這樣就可以實(shí)現(xiàn)點(diǎn)擊導(dǎo)航條滑塊跟著滾動,
- 相反的,當(dāng)滑動滑塊時,就可以根據(jù)current的值來動態(tài)修改導(dǎo)航的狀態(tài)了。
wxml代碼:
<!-- 導(dǎo)航條 --> <view class="nav"> <view bindtap="navSwitch" data-index="0" class="{{navState==0 ? 'nav-switch-style':''}}">頁面一</view> <view bindtap="navSwitch" data-index="1" class="{{navState==1 ? 'nav-switch-style':''}}">頁面二</view> <view bindtap="navSwitch" data-index="2" class="{{navState==2 ? 'nav-switch-style':''}}">頁面三</view> </view> <!-- 不可滑動頁 --> <view> <view wx:if="{{navState==0}}" class="style-default">1</view> <view wx:elif="{{navState==1}}" class="style-default">2</view> <view wx:else="{{navState==2}}" class="style-default">3</view> </view> <!-- 滑動頁 --> <swiper bindchange="bindchange" current="{{navState}}"> <block> <swiper-item> <view class="style-roll"> <text>左右可滑動1</text> </view> </swiper-item> <swiper-item> <view class="style-roll"> <text>左右可滑動2</text> </view> </swiper-item> <swiper-item> <view class="style-roll"> <text>左右可滑動3</text> </view> </swiper-item> </block> </swiper>
js代碼:
Page({ data: { navState: 0,//導(dǎo)航狀態(tài) }, //監(jiān)聽滑塊 bindchange(e) { // console.log(e.detail.current) let index = e.detail.current; this.setData({ navState:index }) }, //點(diǎn)擊導(dǎo)航 navSwitch: function(e) { // console.log(e.currentTarget.dataset.index) let index = e.currentTarget.dataset.index; this.setData({ navState:index }) }, /** * 生命周期函數(shù)--監(jiān)聽頁面加載 */ onLoad: function(options) { }, })
wxss代碼:
.nav{ display: flex; justify-content: space-around; padding: 20rpx; background-color: rgb(129, 241, 55); font-size: 30rpx; } .nav-switch-style{ color: snow; } .style-default{ background-color: rgb(247, 229, 130); padding: 100rpx 0; text-align: center; } .style-roll{ background-color: rgb(130, 177, 247); padding: 100rpx 0; text-align: center; }
為大家推薦現(xiàn)在關(guān)注度比較高的微信小程序教程一篇:《微信小程序開發(fā)教程》小編為大家精心整理的,希望喜歡。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 微信小程序點(diǎn)擊按鈕動態(tài)切換input的disabled禁用/啟用狀態(tài)功能
- 微信小程序點(diǎn)擊頂部導(dǎo)航欄切換樣式代碼實(shí)例
- 微信小程序 點(diǎn)擊切換樣式scroll-view實(shí)現(xiàn)代碼實(shí)例
- 微信小程序開發(fā)之實(shí)現(xiàn)選項卡(窗口頂部TabBar)頁面切換
- 微信小程序?qū)崿F(xiàn)tab左右切換效果
- 微信小程序 Tab頁切換更新數(shù)據(jù)
- 微信小程序 swiper制作tab切換實(shí)現(xiàn)附源碼
- 微信小程序開發(fā)之選項卡(窗口底部TabBar)頁面切換
- 微信小程序?qū)崿F(xiàn)tab切換效果
- 微信小程序?qū)崿F(xiàn)tab點(diǎn)擊切換
相關(guān)文章
在layui中l(wèi)ayer彈出層點(diǎn)擊事件無效的解決方法
今天小編就為大家分享一篇在layui中l(wèi)ayer彈出層點(diǎn)擊事件無效的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09微信端調(diào)取相冊和攝像頭功能,實(shí)現(xiàn)圖片上傳,并上傳到服務(wù)器
這篇文章主要介紹了微信端調(diào)取相冊和攝像頭功能圖片上傳服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05JavaScript中內(nèi)置函數(shù)Map()的使用
Map()是JavaScript中內(nèi)置的一種數(shù)據(jù)結(jié)構(gòu),它允許您將鍵值對映射到任意類型的值,主要介紹了JavaScript中內(nèi)置函數(shù)Map()的使用,感興趣的可以了解一下2023-05-05前端JavaScript處理小數(shù)精度問題的最佳實(shí)踐教程
在JavaScript開發(fā)過程中,小數(shù)精度問題是一個常見的難題,本文介紹了兩種解決小數(shù)精度問題的方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10jquery下onpropertychange事件的綁定方法
用了onchange事件,但是在輸入的時候,用Javascript計算出并填值的那一列并不會響應(yīng)onchange 事件。2010-08-08JavaScript實(shí)現(xiàn)猜數(shù)字游戲
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05