微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例


Posted in Javascript onMay 14, 2019

本文实例讲述了微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能。分享给大家供大家参考,具体如下:

微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例

顶部滚动选项卡

话不多说,直接上代码

pages/home/home.wxml

<scroll-view scroll-x="true" style='width: 100%; white-space:nowrap; '>
<!-- tab -->
<view class="tab">
<view class="tab-nav" style='font-size:12px'>
<view wx:for="{{tabnav.tabitem}}" bindtap="setTab" data-tabindex="{{index}}" style="min-width:20%;max-width:20%;text-align:center;height: 80rpx;background: #fff;border-bottom:{{index>4?'1rpx solid #ddd;':''}}">{{item.text}}</view>
<view>
<view class="tab-line" style="width:{{100/tabnav.tabnum}}%;transform:translateX({{100*showtab}}%);"></view>
</view>
</view>
</view>
</scroll-view>
<swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:150rpx" bindchange="bindChange">
<swiper-item>
<view>分类1</view>
</swiper-item>
<swiper-item>
<view>分类2</view>
</swiper-item>
<swiper-item>
<view>分类3</view>
</swiper-item>
<swiper-item>
<view>分类4</view>
</swiper-item>
<swiper-item>
<view>分类5</view>
</swiper-item>
<swiper-item>
<view>分类6</view>
</swiper-item>
</swiper>

pages/home/home.wxss

.tab {
display: flex;
flex-direction: column;
}
.tab-nav {
border-bottom: 1rpx solid #ddd;
width: 100%;
height: 80rpx;
display: flex;
line-height: 79rpx;
position: relative;
}
.tab-line {
position: absolute;
left: 0;
bottom: -1rpx;
height: 4rpx;
background: #f7982a;
transition: all 0.3s;
}
.tab-content {
flex: 1;
overflow-y: auto;
overflow-x: hidden;
}
/*选项卡页面联动切换*/
.swiper-tab {
width: 100%;
border-bottom: 2rpx solid #777;
text-align: center;
line-height: 80rpx;
}
.swiper-tab-list {
font-size: 30rpx;
display: inline-block;
width: 33.33%;
color: #777;
}
.on {
color: #da7c0c;
border-bottom: 1rpx solid #da7c0c;
}
.swiper-box {
display: block;
height: 100%;
width: 100%;
overflow: hidden;
}
.swiper-box view {
text-align: center;
}

pages/home/home.js

Page({
data: {
showtab: 0, //顶部选项卡索引
tabnav: {
tabnum: 5,
tabitem: [
{
"id": 0,
"text": "分类1"
},
{
"id": 1,
"text": "分类2"
},
{
"id": 2,
"text": "分类3"
},
{
"id": 3,
"text": "分类4"
},
{
"id": 4,
"text": "分类5"
},
{
"id": 5,
"text": "分类6"
}
]
},
productList: [],
// tab切换
currentTab: 0,
},
onLoad: function () {
},
setTab: function (e) {
var that = this
that.setData({
showtab: e.currentTarget.dataset.tabindex
})
if (this.data.currentTab === e.currentTarget.dataset.tabindex) {
return false;
} else {
that.setData({
currentTab: e.currentTarget.dataset.tabindex
})
}
},
/**
* 滑动切换tab
*/
bindChange: function (e) {
var that = this;
that.setData({ currentTab: e.detail.current,
showtab: e.detail.current});
}
})

该代码实现基于两个大神的代码,(链接: https://3water.com/article/161227.htm 和https://3water.com/article/155522.htm),在两位大神的基础上衍生出的可滚动的顶部选项卡,在此致谢。代码缺陷:当向右滑动到第6个页面的时候选项卡没有自动滑动。

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
JavaScript面向对象程序设计三 原型模式(上)
Dec 21 Javascript
javascript中有趣的反柯里化深入分析
Dec 05 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
JavaScript 学习笔记之数据类型
Jan 14 Javascript
初步使用bootstrap快速创建页面
Mar 03 Javascript
详解JavaScript for循环中发送AJAX请求问题
Jun 23 Javascript
Node.js学习之地址解析模块URL的使用详解
Sep 28 Javascript
在 Angular中 使用 Lodash 的方法
Feb 11 Javascript
jquery获取元素到屏幕四周可视距离的方法
Sep 05 jQuery
基于Vue插入视频的2种方法小结
Apr 02 Javascript
vue+element 实现商城主题开发的示例代码
Mar 26 Javascript
angular中的post请求处理示例详解
Jun 30 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
May 14 #Javascript
详解jenkins自动化部署vue
May 14 #Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 #Javascript
JavaScript如何实现元素全排列实例代码
May 14 #Javascript
微信小程序实现多选框全选与取消全选功能示例
May 14 #Javascript
js中arguments对象的深入理解
May 14 #Javascript
ios中视频的最后一桢问题解决
May 14 #Javascript
You might like
PHP MySql增删改查的简单实例
2016/06/21 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
Python中集合类型(set)学习小结
2015/01/28 Python
详解Python编程中包的概念与管理
2015/10/16 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
Python中new方法的详解
2019/01/15 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
python中metaclass原理与用法详解
2019/06/25 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
网络技术专业求职信
2014/07/13 职场文书
史上最牛的辞职信
2015/02/28 职场文书
公司慰问信范文
2015/03/23 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
zabbix配置nginx监控的实现
2022/05/25 Servers
python数字图像处理实现图像的形变与缩放
2022/06/28 Python