前言
纵向选项卡(vtabs)用于让用户在不同的视图中进行切换。
以下讲解的是weui版,相关的还有antd-mini版本
一、纵向选项卡(weui版)
vtabs
属性名 | 类型 | 默认值 | 必选 | 描述 |
---|---|---|---|---|
vtabs | Array | [] | yes | 数据项格式为{title} |
active-tab | Number | 0 | no | 激活选项卡索引 |
tab-bar-class | String | no | 选项卡样式 | |
active-class | String | no | 行为样式 | |
tab-bar-line-color | String | #ff0000 | no | 选定项目带下划线的一面的颜色 |
tab-inactive-text-color | String | #000000 | no | 未选中的字体颜色 |
tab-bar-active-text-color | String | #ff0000 | no | 检查字体颜色 |
tab-inactive-bg-color | String | #eeeeee | no | 未选中的背景色 |
tab-active-bg-color | String | #ffffff | no | 检查背景颜色 |
animation | Boolean | true | no | 打开动画 |
Bindtablick | eventhandle | no | 触发时点击选项卡,e.detail={index} | |
bindchange | eventhandle | no | 内容区域滚动原因选项卡更改时触发,以及.detail={index} |
vtab-content
属性名 | 类型 | 默认值 | 必选 | 描述 |
---|---|---|---|---|
tab-index | Number | 0 | yes | vtabs 数据索引(基于 0) |
1.安装包
代码语言:javascript复制npm i @miniprogram-component-plus/vtabs
npm i @miniprogram-component-plus/vtabs-content
2.使用
引用组件
代码语言:javascript复制"usingComponents": {
"mp-vtabs": "@miniprogram-component-plus/vtabs/index",
"mp-vtabs-content": "@miniprogram-component-plus/vtabs-content/index"
}
代码语言:javascript复制Page({
data: {
vtabs: [],
activeTab: 0,
},
onLoad() {
const titles = ['热搜推荐', '手机数码', '家用电器',
'生鲜果蔬', '酒水饮料', '生活美食',
'美妆护肤', '个护清洁', '女装内衣',
'男装内衣', '鞋靴箱包', '运动户外',
'生活充值', '母婴童装', '玩具乐器',
'家居建材', '计生情趣', '医药保健',
'时尚钟表', '珠宝饰品', '礼品鲜花',
'图书音像', '房产', '电脑办公']
const vtabs = titles.map(item => ({title: item}))
this.setData({vtabs})
},
onTabCLick(e) {
const index = e.detail.index
console.log('tabClick', index)
},
onChange(e) {
const index = e.detail.index
console.log('change', index)
}
})
代码语言:javascript复制<mp-vtabs
vtabs="{{vtabs}}"
activeTab="{{activeTab}}"
bindtabclick="onTabCLick"
bindchange="onChange"
class="test"
>
<block wx:for="{{vtabs}}" wx:key="title" >
<mp-vtabs-content tabIndex="{{index}}">
<view class="vtabs-content-item">我是第{{index 1}}项: {{item.title}}</view>
</mp-vtabs-content>
</block>
</mp-vtabs>
代码语言:javascript复制.vtabs-content-item {
width: 100%;
height: 300px;
box-sizing: border-box;
border-bottom: 1px solid #ccc;
padding-bottom: 20px;
}
二、横向选项卡(weui版)
属性名 | 类型 | 默认值 | 必选 | 描述 |
---|---|---|---|---|
tabs | Array | [] | yes | 数据项格式为{title} |
tab-class | String | no | 选项卡样式 | |
swiper-class | String | no | 内容区域刷卡器样式 | |
active-class | String | no | 行为样式 | |
tab-underline-color | String | #07c160 | no | 所选项目的下划线颜色 |
tab-active-text-color | String | #000000 | no | 检查字体颜色 |
tab-inactive-text-color | String | #000000 | no | 未选中的字体颜色 |
tab-background-color | String | #ffffff | no | 选项卡背景色 |
active-tab | Number | 0 | no | 激活选项卡索引 |
duration | Number | 500 | no | 内容区交接持续时间 |
Bindtablick | eventhandle | no | 触发时点击选项卡,e.detail={index} | |
bindchange | eventhandle | no | 内容区域滚动原因选项卡更改时触发,以及.detail={index} |
1.安装包
代码语言:javascript复制npm install @ miniprogram-component-plus/tabs
2.使用
引用组件
代码语言:javascript复制"usingComponents": {
"mp-tabs": "@miniprogram-component-plus/tabs/index"
}
代码语言:javascript复制Page({
/**
* 页面的初始数据
*/
data: {
active: 1,
arr:['1','2','3','4'],
tabs: [],
arr2: [],
activeTab: 0,
},
onLoad() {
const titles = ['首页', '外卖', '商超生鲜', '购物', '美食饮品', '生活服务', '休闲娱乐', '出行']
const tabs = titles.map(item => ({ title: item }))
this.setData({ tabs })
this.setData({ arr2: ['11', '22', '33', '44'] })
},
onTabCLick(e) {
const index = e.detail.index
console.log('----------' index);
this.setData({ activeTab: index })
},
onChange(e) {
const index = e.detail.index
console.log('----------' index);
this.setData({ activeTab: index })
}
})
代码语言:javascript复制 <mp-tabs
tabs="{{tabs}}"
activeTab="{{activeTab}}"
swiperClass="weui-tabs-swiper"
bindtabclick="onTabCLick"
bindchange="onChange"
activeClass="tab-bar-title__selected"
>
<block wx:for="{{tabs}}" wx:key="title">
<view class="tab-content" slot="tab-content-{{index}}" > {{item.title}} </view>
</block>
</mp-tabs>
代码语言:javascript复制.bgView {
/* background-color: orange; */
height: 500px;
width: 100%;
}
.bg {
/* background: red; */
/* position: fixed;
top: 0;
height: 40px; */
}
page {
height: 100%;
}
/* ------------ weui -------------- */
.weui-tabs-bar__wrp {
border-bottom: 1px solid #eee;
position: fixed;
top: 0;
height: 30px;
z-index:9999;
}
.weui-tabs-swiper {
margin-top: 30px;
width: 100%;
height: 500px;
}
.tab-content {
width: 100%;
height: 500px;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
/* padding: 40rpx; */
}
.weui-tabs-bar__title {
margin: 0px 10px;
}
.tab-bar-title__selected {
font-size: 20px;
font-weight: bold;
}