今天早上有人在群里問選項卡這樣的東西怎么實現,很多人給的方案是通過nav去實現,其實我以前不懂這個怎么做的時候也用過nav,現在想起來實在太蠢了。選項卡是web應用中常用的一個組件目前的jquery-ui,bootstrap等主流前端框架都實現了這樣的效果。就是通過點擊一個按鈕顯示對應的內容,其他的內容全部隱藏起來。
使用技術點:
1、使用hidden屬性去控制元素的顯示隱藏(不止這樣一種)。
2、通過點擊按鈕上設置一個data-index來獲取點擊按鈕的索引(不止這樣一種)。
3、使用setData來修改數據,刷新視圖。
代碼直接貼出來吧,樣子比較丑自己修飾。
table.js
-
var app = getApp()
-
Page({
-
data: {
-
hiddenContent_0: false,
-
hiddenContent_1: true,
-
hiddenContent_2: true
-
},
-
-
switch_tab: function (e) {
-
var index = e.currentTarget.dataset.index,
-
hiddenContent_0 = true,
-
hiddenContent_1 = true,
-
hiddenContent_2 = true;
-
switch (index) {
-
case '0':
-
hiddenContent_0 = false;
-
break;
-
-
case '1':
-
hiddenContent_1 = false;
-
break;
-
-
case '2':
-
hiddenContent_2 = false;
-
break;
-
}
-
-
this.setData({
-
hiddenContent_0: hiddenContent_0,
-
hiddenContent_1: hiddenContent_1,
-
hiddenContent_2: hiddenContent_2
-
})
-
}
-
})
table.wxml
-
<view class="contianer">
-
<view class="tab">
-
<view class="t_item" hover-class="t_item_hover" bindtap="switch_tab" data-index="0">選項一</view>
-
<view class="t_item" hover-class="t_item_hover" bindtap="switch_tab" data-index="1">選項二</view>
-
<view class="t_item" hover-class="t_item_hover" bindtap="switch_tab" data-index="2">選項三</view>
-
</view>
-
<view class="content">
-
<view class="conent_inner_0" hidden="{{hiddenContent_0}}">
-
選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一 選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一選項一
-
</view>
-
<view class="conent_inner_1" hidden="{{hiddenContent_1}}">
-
選項二選項二選項二選項二選項二選項二選項二選項二選項二選項二選項二選項二選項二選項二選項二選項二
-
</view>
-
<view class="conent_inner_2" hidden="{{hiddenContent_2}}">
-
選項三 選項三 選項三 選項三 選項三 選項三 選項三
-
</view>
-
</view>
-
</view>
table.wxss
-
-
.tab {
-
overflow: hidden;
-
}
-
-
.t_item {
-
float: left;
-
width: 33.33%;
-
line-height: 34px;
-
border-bottom: 1px solid #999;
-
border-top: 1px solid #999;
-
text-align: center;
-
margin-left: -1px;
-
}
-
-
.t_item_hover {
-
background: #ddd;
-
}
-
-
.t_item + .t_item {
-
border-left: 1px solid #999;
-
}
-
-
.content {
-
border-bottom: 1px solid #999;
-
}
-
-
.conent_inner_0, .conent_inner_1, .conent_inner_2 {
-
padding: 10px;
-
background: #ddd;
-
}
效果圖:

|