微信小程序自定义可滑动顶部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 调试利器 Firebug使用详解六
Jul 05 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
Dec 06 Javascript
javascript之学会吝啬 精简代码
Apr 25 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
Oct 21 Javascript
JQuery触发radio或checkbox的change事件
Dec 18 Javascript
jquery load事件(callback/data)使用方法及注意事项
Feb 06 Javascript
jquery ready(fn)事件使用介绍
Aug 21 Javascript
jQuery组件easyui基本布局实现代码
Aug 25 Javascript
JavaScript 数组的深度复制解析
Nov 02 Javascript
js实现加载页面就自动触发超链接的示例
Aug 31 Javascript
浅谈vue中数据双向绑定的实现原理
Sep 14 Javascript
js中split()方法得到的数组长度问题
Jul 19 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上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
Python fileinput模块使用介绍
2014/11/30 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
python开根号实例讲解
2020/08/30 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
介绍一下gcc特性
2015/10/31 面试题
毕业生自我鉴定范文
2013/11/08 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
采购员工作总结范文
2015/08/12 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python
python ansible自动化运维工具执行流程
2021/06/24 Python
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
python内置模块之上下文管理contextlib
2022/06/14 Python
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python