首页 > 编程语言 >小程序简单 tab 切换实现

小程序简单 tab 切换实现

时间:2023-04-05 22:01:34浏览次数:33  
标签:tab 程序 content 切换 background hidden display wx

也是终于找到了数据可视化的最佳载体, 用小程序来做可视化简直完美. 尤其对于像我这种搞数据的, 数据分析, 数据报表, 可视化一直是一个巨大难题, 当我认识的最终的方案还是要用前端的时候, 感觉还有麻烦, 前端也太卷了, 我就做个图表, 竟然要学各种框架和语法, js, vue, 页面布局等都要学, 还要搞一个后端服务, 还要部署等...确实有点劝退, 但市面上主流的低代码BI产品也都不太行 (不能定制化), 最终想到也许小程序, 是最佳选择.

这里也是对一个常用的 tab 切换功能简单实现, 应用于一些页面报表切换等.

简单实现

  • 通过小程序的 "data-tab" 给每个 tab 块绑定一个标示
  • 再给每个 tab 绑定一个名为 "switchTab" 的 bindtap 事件
  • 当点击触发的时候就能通过 e.currentTarget.dataset.tab 获取到是哪个 tab 被触发
  • 通过 wx:if 或 hidden 结合数据驱动对该内容做一个显示和隐藏(移除)

具体代码如下:

结构部分:

<view>
    <view class="tab-container">
			<view 
				class="tab {{currentTab == 'day'? 'active': ''}}"
				data-tab="day"
				bindtap="switchTab"
			>
				日度
			</view>
			<view 
				class="tab {{currentTab == 'month'? 'active': ''}}"
				data-tab="month"
				bindtap="switchTab"
			>
				月度
			</view>
			<view 
				class="tab {{currentTab == 'quarter'? 'active': ''}}"
				data-tab="quarter"
				bindtap="switchTab"
			>
				季度
			</view>
			<view 
				class="tab {{currentTab == 'year'? 'active': ''}}"
				data-tab="year"
				bindtap="switchTab"
			>
				年度
			</view>
		</view>
		<view class="tab-content">
			<view class="tab-item" wx:if="{{currentTab == 'day'}}">日度数据</view>
			<view class="tab-item bg-pink" wx:elif="{{currentTab == 'month'}}">月度数据</view>
			<view class="tab-item bg-orange" wx:elif="{{currentTab == 'quarter'}}">季度数据</view>
			<view class="tab-item bg-green" wx:else="{{currentTab == 'year'}}">年度数据</view>
		</view>
		<view class="father">
			<view class="son">其他内容区</view>
		</view>
</view>

逻辑部分:

Page({
  data: {
      currentTab: 'day'
	},
	
  switchTab(e) {
		// console.log('当前点的是: ', e.currentTarget.dataset.tab)
		this.setData({
			currentTab: e.currentTarget.dataset.tab
		})
	}
	
})

样式部分:

.tab-container {
    margin: 30rpx;
    padding-left: 160rpx;
    display: flex;
    justify-content: center;
}
.tab {
    flex: 1;
}

.active {
    color: #ff7806;
    font-weight: 700;
}

.tab-content {
    background: skyblue;
}
.tab-item {
    height: 400rpx;
}
.bg-pink {
    background: pink;
}
.bg-orange {
    background: orange;
}
.bg-green {
    background: greenyellow;
}

.father {
  display: flex;
  justify-content: center;
}
.son {
  margin-top: 20rpx;
  height: 400rpx;
  width: 700rpx;
  background: #1ee3cf;
  display: flex;
  align-items: center;
  justify-content: center;

}

补充

这里在控制切换的时候, 我用的是 wx:if -> wx:elif -> wx:else . 其实也可以用 hidden 属性, 写法如下:

<view class="tab-item" hidden ="{{currentTab !== 'day'}}">日度数据</view>

wx:if 和 hidden 这两种写法的区别就是就是 display: none 和 display: hidden 而已. 一个是干掉dom不保留, 一个是加载了但隐藏不可见.

对于要频繁切换的建议用 hidden, 但首次加载耗时多; 不咋频繁使用的建议用 wx:if 即可.

在实现方法上, 其实也可以用小程序自带的 swiper 和 scroll-view 组件来实现各种, 看需求, 哪种方便用哪都行.

标签:tab,程序,content,切换,background,hidden,display,wx
From: https://www.cnblogs.com/chenjieyouge/p/17291046.html

相关文章

  • Rust编程语言入门之项目实例:- 命令行程序
    项目实例:-命令行程序一、实例:接收命令行参数本章内容12.1接收命令行参数12.2读取文件12.3重构:改进模块和错误处理12.4使用TDD(测试驱动开发)开发库功能12.5使用环境变量12.6将错误消息写入标准错误而不是标准输出创建项目~/rust➜cargonewminigrepCre......
  • 微信小程序Server端环境配置
    源码地址:https://github.com/Tinywan/PHP_Experience主要内容:1.SSL免费证书申请步骤2.NginxHTTPS配置3.TLS1.2升级过程 微信小程序要求使用 https 发送请求,那么Web服务器就要配置成支持 https,需要先申请SSL证书小程序也要求 TLS(传输层安全协议)的版本至少为 1.2,在配置......
  • 微信小程序入门教程(一)API接口数据记录
    今天测试用小程序调用API接口,发现有些数据打印都是对象,怎么全部打印详细点来小程序代码:httpsearch:function(name,offset,type,cb){wx.request({url:'https://www.tinywan.com/api/wechat/songsSearch',data:{name:name,offset:o......
  • Linux的shell脚本编写技巧和crontab计划任务的结合(沙漠一样干的干货)
    Shell脚本的重要性我想应该不需要我在重复了,本文的目的是向读者介绍Shell编程的一些固定套路,当然,也可以称之为技巧,而crontab计划任务又和Shell脚本密切相关(一般简单任务当然是写一条命令啦,如果比较复杂的场景还是脚本比较合事宜,并且,脚本更为灵活,拓展性更强啦)。一,脚本的结构就是第一......
  • 第二十届浙大城市学院程序设计竞赛 I.Magic Tree DFS序线段树
    传送门大致思路:  我们知道dfs序上的整颗子树dfs序编号连续,因为每次删除一个点或者新增一个点都导致子树上所有点的深度加一或者减一。由于是区间修改所以我们考虑dfs序上建线段树。  #include<iostream>#include<cstring>#include<iomanip>#include<algorithm>#in......
  • 【win10】本地化部署stable diffusion AI绘图
    一、环境本地化部署运行虽然很好,但是也有一些基本要求(1)需要拥有NVIDIA显卡,GT1060起,显存4G以上(2)操作系统需要win10(3)电脑内存16G或者以上。(4)有些网页打不开,有时下载很慢。 二、安装miniconda1.安装miniconda这个是用来管理python版本的,他可以实现python的多版本切换。下......
  • Ubuntu切换glibc版本
    Ubuntu切换glibc版本glibc是GNU发布的C语言标准库,不同版本的glibc中函数实现不同,可能导致程序运行结果不同。这里介绍如何切换不同版本的glibc来运行程序首先,要安装patchelf,这是给elf文件打补丁(修改elf文件属性,包括使用的glibc版本)的工具gitclonehttps://github.com/NixOS/pa......
  • uni-app:tabbar自定义中间凸起按钮的tabbar(hbuilderx 3.7.3)
    一,官方文档地址:https://uniapp.dcloud.net.cn/collocation/pages.html#tabbarhttps://uniapp.dcloud.net.cn/api/ui/tabbar.html#ontabbarmidbuttontap二,代码1,pages.json"tabBar":{"color":"#7A7E83",//字体颜色"sel......
  • 网络防火墙iptables
    防火墙简单介绍概念:是一种能够限制所转发的流量类型的路由器类型:1.代理防火墙本质上是运行一个或多个应用层网关的主机1.1HTTP代理防火墙只能用于HTTP和HTTPS协议(Web)。可以提供web缓存功能,加速防火墙内用户加载网页的速度提供黑名单功能,阻止用户访问某些web网站1.2......
  • 28 岁字节程序员退休,财务自由
    阅读本文大概需要2.9分钟。今天互联网热议最大的一个话题,莫过于字节跳动一28岁程序员大佬,实现财务自由退休了,准备旅居日本经营温泉酒店,让无数人羡慕嫉妒恨啊。这个程序员大佬的名字就不说了,给大家简单说下他的经历吧。1、深圳中学(05-08),高考之后,开始学习写代码;2、暨南大学(08-......