1. 程式人生 > 程式設計 >微信小程式實現點選導航條切換頁面

微信小程式實現點選導航條切換頁面

本文例項為大家分享了微信小程式實現點選導航條切換頁面的具體程式碼,供大家參考,具體內容如下

我錄製了個gif如下,黃色部分是不可以滑動的,藍色部分可以滑動。

微信小程式實現點選導航條切換頁面

程式碼解說:

  • 首先我在js自定義了navState引數用於判斷導航的當前狀態,
  • 定義了data-index用於js中動態修改導航的當前狀態,
  • nav-switch-style為選擇導航條時的樣式,
  • 不可滑動檢視切換很簡單,用wx:if判斷狀態顯示相應頁就好了,
  • 滑動頁檢視切換要用到swiper和 swiper-item,
  • 用bindchang方法監聽滑塊,current 改變時會觸發 change 事件(還有個bindanimationfinish方法監聽也是可以用的,詳細請看官方文件)
  • 動態的綁定了current滑塊的index,這樣就可以實現點選導航條滑塊跟著滾動,
  • 相反的,當滑動滑塊時,就可以根據current的值來動態修改導航的狀態了。

wxml程式碼:

<!-- 導航條 -->
<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,//導航狀態
 },//監聽滑塊
 bindchange(e) {
 // console.log(e.detail.current)
 let index = e.detail.current;
 this.setData({
 navState:index
 })
 },//點選導航
 navSwitch: function(e) {
 // console.log(e.currentTarget.dataset.index)
 let index = e.currentTarget.dataset.index;
 this.setData({
 navState:index
 })
 },/**
 * 生命週期函式--監聽頁面載入
 */
 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;
}

為大家推薦現在關注度比較高的微信小程式教程一篇:《微信小程式開發教程》小編為大家精心整理的,希望喜歡。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。