微信小程序tab组件封装
最近在做微信小程序的项目,下面就微信小程序中tab的tab功能封装成一个组件,在项目项需要使用的地方可以随时调取,如果你有vue的基础可以快速的理解和上手,废话不多说,直接上代码
下面是html部分
<!--这是tab.wxml-->
<view class="contain">
<view class="tab" style="position:fixed;left:0;top:{{positionTop}}">
<view wx:for="{{tabTitle}}" wx:key="{{index}}" class="tab-son {{num==index?'active':''}}" bindtip='toggle' data-index={{index}}>{{item}}</view>
</view>
<view class="tab-content" style="padding-top:{{paddingTop}}">
<view wx:for="{{tabTitle}}" wx:key="{{index}}" class="tab-contents {{num==index?'on':''}}">
<slot name="{{index}}"></slot>
</view>
</view>
</view>
下面是css部分
/*这是tab.wxss部分,样式可以根据自己的需求自己改变*/
.contain{
}
.active{
color:#0770EB;
height:74rpx;
border-bottom:3px solid #0770EB;
}
.tab{
width:100%;
display:flex;
align-item:flex-end;
justify-content:space-around;
background-color:#fff;
height:80rpx;
font-size:26rpx;
z-index:999;
text-align:center;
line-height:80rpx;
box-shadow:4px 4px 10px #f2f2f2;
}
.tab-content{
overflow:scroll;
}
.tab-contents{
display:none;
}
.on{
display:block;
}
下面是js部分
//这是tab.js部分
Component({
//下面是组件的属性列表
options:{
multipleSlots:true //在组件定义时的选项中启用多slot支持
},
properties:{
tabTitle:{
type:Object,
value:[]
},
positionTop:{
type:String,
value:"0"
}
paddingTop:{
type:String,
value:"80rpx"
}
},
//组件的初始数据
data:{
num:0
},
//组件的方法列表
methods:{
toggle:function(e){
if(this.data.num===e.currentTarget.dataset.index){
return false;
}else{
this.setData({
num:e.currentTarget.dataset.index;
})
}
}
}
})
下面是tab.json部分
{
"component":true,
"usingComponents":{
}
}
下面就是高潮部分了,同志们要扶好把手
如果需要在index.wxml的页面中使用tab组件,需要在index文件夹中的index.json里面引入,如下:
{
"usingComponent":{
"tabView":"../components/tab/tab" //这是组件所在的路径,前面是自定义的tab的元素名
}
}
在index.wxml中使用自定义的tabView的元素名
<tabView tabTitle="{{tabTitle}}" positionTop="自定义大小,也可以不写,根据自己实际情况" paddingTop="自定义大小,也可以不写,根据自己实际情况">
<view slot="0">
自己的页面
</view>
<view slot="1">
自己的页面
</view>
<view slot="2">
自己的页面
</view>
</tabView>
下面是index.js
Page({
data:{
tabTitle:['tab1','tab2','tab3'] //这个可以写成死的数据,也可以接收后台返回的,写成动态的
}
})
这就是微信小程序完整的tab组件的封装与使用方法