当前位置: 首页 > news >正文

【愚公系列】2022年08月 微信小程序-纵向和横向选项卡功能实现

文章目录

  • 前言
  • 一、纵向选项卡(weui版)
    • 1.安装包
    • 2.使用
  • 二、横向选项卡(weui版)
    • 1.安装包
    • 2.使用


前言

纵向选项卡(vtabs)用于让用户在不同的视图中进行切换。

以下讲解的是weui版,相关的还有antd-mini版本:https://help.aliyun.com/document_detail/438087.html
在这里插入图片描述

一、纵向选项卡(weui版)

vtabs

属性名类型默认值必选描述
vtabsArray[]yes数据项格式为{title}
active-tabNumber0no激活选项卡索引
tab-bar-classStringno选项卡样式
active-classStringno行为样式
tab-bar-line-colorString#ff0000no选定项目带下划线的一面的颜色
tab-inactive-text-colorString#000000no未选中的字体颜色
tab-bar-active-text-colorString#ff0000no检查字体颜色
tab-inactive-bg-colorString#eeeeeeno未选中的背景色
tab-active-bg-colorString#ffffffno检查背景颜色
animationBooleantrueno打开动画
Bindtablickeventhandleno触发时点击选项卡,e.detail={index}
bindchangeeventhandleno内容区域滚动原因选项卡更改时触发,以及.detail={index}

vtab-content

属性名类型默认值必选描述
tab-indexNumber0yesvtabs 数据索引(基于 0)

1.安装包

npm i @miniprogram-component-plus/vtabs
npm i @miniprogram-component-plus/vtabs-content 

2.使用

引用组件

"usingComponents": {
  "mp-vtabs": "@miniprogram-component-plus/vtabs/index",
  "mp-vtabs-content": "@miniprogram-component-plus/vtabs-content/index"
}
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)
  }

})

<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>
.vtabs-content-item {
    width: 100%;
    height: 300px;
    box-sizing: border-box;
    border-bottom: 1px solid #ccc;
    padding-bottom: 20px;
}

在这里插入图片描述

二、横向选项卡(weui版)

属性名类型默认值必选描述
tabsArray[]yes数据项格式为{title}
tab-classStringno选项卡样式
swiper-classStringno内容区域刷卡器样式
active-classStringno行为样式
tab-underline-colorString#07c160no所选项目的下划线颜色
tab-active-text-colorString#000000no检查字体颜色
tab-inactive-text-colorString#000000no未选中的字体颜色
tab-background-colorString#ffffffno选项卡背景色
active-tabNumber0no激活选项卡索引
durationNumber500no内容区交接持续时间
Bindtablickeventhandleno触发时点击选项卡,e.detail={index}
bindchangeeventhandleno内容区域滚动原因选项卡更改时触发,以及.detail={index}

1.安装包

npm install @ miniprogram-component-plus/tabs

2.使用

引用组件

"usingComponents": {
  "mp-tabs": "@miniprogram-component-plus/tabs/index"
}
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 })
  }
})


 <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>


.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;
}

在这里插入图片描述

相关文章:

  • 猿创征文|Java实现自定义注解
  • 全网唯一OpenCyphal/UAVCAN教程(8)libcanard介绍
  • Redis的主从复制搭建
  • java毕业设计物资租赁管理系统mybatis+源码+调试部署+系统+数据库+lw
  • java计算机毕业设计评标专家管理信息系统源码+数据库+系统+lw文档+mybatis+运行部署
  • java毕业设计希望酒店信息管理系统mybatis+源码+调试部署+系统+数据库+lw
  • 数仓项目拉链表
  • 如何写砸一本小说
  • java计算机毕业设计企业运营管理系统的设计与实现源码+数据库+系统+lw文档+mybatis+运行部署
  • AWS灾难恢复的重要参考指标
  • java基于springboot+vue的课程资源在线学习网站
  • 998. 最大二叉树 II(难度:中等)
  • 【原创】基于SSM的快递代取管理系统(快递代取系统毕设源代码)
  • 最长上升子序列
  • python毕业设计题目推荐飞机票销售订票系统
  • 2019.2.20 c++ 知识梳理
  • android图片蒙层
  • ECS应用管理最佳实践
  • ES6--对象的扩展
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • maven工程打包jar以及java jar命令的classpath使用
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • SpiderData 2019年2月25日 DApp数据排行榜
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Vue UI框架库开发介绍
  • web标准化(下)
  • 闭包,sync使用细节
  • 大数据与云计算学习:数据分析(二)
  • 后端_ThinkPHP5
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 力扣(LeetCode)357
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 使用权重正则化较少模型过拟合
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 提醒我喝水chrome插件开发指南
  • 我看到的前端
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 异常机制详解
  • 在Mac OS X上安装 Ruby运行环境
  • RDS-Mysql 物理备份恢复到本地数据库上
  • #git 撤消对文件的更改
  • (2)MFC+openGL单文档框架glFrame
  • (day 12)JavaScript学习笔记(数组3)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)Linux——Linux常用指令
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十) 初识 Docker file
  • (译)2019年前端性能优化清单 — 下篇
  • (转)http-server应用
  • (转)Windows2003安全设置/维护
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .cfg\.dat\.mak(持续补充)
  • .net core 依赖注入的基本用发