一、頁面佈局
首先我們需要佈局出標籤切換的頁面,下面不多描述直接上程式碼
1、html部分
<!-- 標籤頁標題 -->
<view class="tob">
<view class="tab-item">音樂推薦器</view>
<view class="tab-item">播放器</view>
<view class="tab-item">播放列表</view>
</view>
<!-- 內容區域 -->
<view class="content">
<swiper>
<swiper-item>
<include src="info.wxml" />
</swiper-item>
<swiper-item>
<include src="play.wxml" />
</swiper-item>
<swiper-item>
<include src="playlist.wxml" />
</swiper-item>
</swiper>
</view>
<!-- 底部播放器 -->
<view class="player"></view>
下面是三個標籤頁面設定
(1)info.html
<view style="background: #ccc; color: #000; height: 100%;">
info
</view>
(2)play.wxml
<view style="background: #ddd; color: #000; height: 100%;">
play
</view>
(3)playlist.wxml
<view style="background: #eee; color: #000; height: 100%;">
playlist
</view>
2、css部分
page {
display: flex;
flex-direction: column;
background: #17181a;
color: #ccc;
height: 100%;
}
.tab{
display: flex;
}
.tab-item{
flex: 1;
font-size: 10pt;
text-align: center;
line-height: 72rpx;
border-bottom: 6rpx solid #eeeeee;
}
.content{
flex: 1;
}
.content > swiper{
height: 100%;
}
.player{
background: #222;
border-top: 1px solid #252525;
height: 112rpx;
}
下面是我們的頁面效果圖
二、實現效果
修改pages/index/index.wxml檔案中的tab區域,為3個tab-item繫結事件並設定data-item屬性
<view class="tab-item" bindtab="changeItem" data-item="0">音樂推薦器</view>
<view class="tab-item" bindtab="changeItem" data-item="1">播放器</view>
<view class="tab-item" bindtab="changeItem" data-item="2">播放列表</view>
在上述程式碼中,data-item的值表示swiper元件中對應的swiper-item索引
接下來修改content區域,為swiper元件中的current屬性繫結變數item
<!-- 內容區域 -->
<view class="content">
<swiper current="{{item}}">
完成上面程式碼後,在tab-item的changeItem事件中,將item的值設為data-item的值即可實現切換到對應的標籤頁。修改page/index/index.js檔案,將item和changeItem增加到程式碼中
Page({
data:{
item:0,
},
changeItem:function(e){
this.setData({
item:e.target.dataset.item
})
}
})
切換標籤頁後還需要改變當前標籤頁對應的tab-item的樣式,將文字顏色和底部的線條顏色設為紅色,表示當前標籤頁處於活躍狀態。下面透過判斷變數tab的值,來為當前活躍的data-item增加一個active樣式,具體程式碼如下
<view class="tab-item {{tab==0?'active':''}}" bindtap="changeItem" data-item="0">音樂推薦器</view>
<view class="tab-item {{tab==1?'active':''}}" bindtap="changeItem" data-item="1">播放器</view>
<view class="tab-item {{tab==2?'active':''}}" bindtap="changeItem" data-item="2">播放列表</view>
接下來在pages/index/index.wxss中編輯active樣式,具體程式碼如下
.tab-item.active{
color: #c25b5b;
border-bottom-color:#c25b5b ;
}
為了更改tab值,下面為swiper元件繫結改變事件,具體程式碼如下
<view class="content">
<swiper current="{{item}}" bindchange="changeTab">
在上述程式碼中,changeTab事件處理函式會在swiper元件發生切換時呼叫。下面修改page/index/index.js檔案,在頁面資料中增加tab變數
data:{
item:0,
tab:0
},
然後編輯changeTab事件處理函式,實現當該函式被呼叫後,tab的值更改為當前標籤頁的索引
changeTab:function(e){
this.setData({
tab:e.detail.current
})
}