微信小程序自定义tabBar组件开发详解


Posted in Javascript onSeptember 24, 2020

本文实例为大家分享了微信小程序自定义tabBar组件的具体代码,供大家参考,具体内容如下

以下代码保存在github地址

先看一看目录

微信小程序自定义tabBar组件开发详解

template文件夹里存放tabbar模板。

template/template.wxml

<template name="tabBar">
<view class="tabBar">
 <block wx:for="{{tabBar}}" wx:for-item="item" wx:key="tabBar">
 <view class="tabBar-item">
 <navigator open-type="redirect" url="{{item.pagePath}}">
 <view><image class="icon" src='{{item.iconPath}}'></image></view>
 <view class="{{item.current== 1 ? 'tabBartext' :''}}">{{item.text}}</view>
 </navigator> 
 </view>
 </block>
</view>
</template>

template.css

.icon{
 width:54rpx;
 height: 54rpx;
}
.tabBar{
 width:100%;
 position: fixed;
 bottom:0;
 padding:10rpx;
 margin-left:-4rpx;
 background:#F7F7FA;
 font-size:20rpx;
 color:#8A8A8A;
 box-shadow: 6rpx 6rpx 6rpx 6rpx #aaa;
}

 .tabBar-item{
 float:left;
 width:25%;
 text-align: center;
 overflow: hidden;
}
/*当前字体颜色*/
.tabBartext{
 color:red;
}

template.js

//初始化数据
function tabbarinit() {
 return [
 { "current":0,
 "pagePath": "/pages/index/index",
 "iconPath": "/imgs/home.png",
 "selectedIconPath": "/imgs/home_on.png",
 "text": "主页"
 },
 {
 "current": 0,
 "pagePath": "/pages/news/news",
 "iconPath": "/imgs/message.png",
 "selectedIconPath": "/imgs/message_on.png",
 "text": "资讯"

 },
 {
 "current": 0,
 "pagePath": "/pages/category/category",
 "iconPath": "/imgs/category.png",
 "selectedIconPath": "/imgs/category_on.png",
 "text": "分类"
 },
 {
 "current": 0,
 "pagePath": "/pages/buy/buy",
 "iconPath": "/imgs/buy.png",
 "selectedIconPath": "/imgs/buy_on.png",
 "text": "购物"
 }
 ]

}
//tabbar 主入口
function tabbarmain(bindName = "tabdata", id, target) {
 var that = target;
 var bindData = {};
 var otabbar = tabbarinit();
 otabbar[id]['iconPath'] = otabbar[id]['selectedIconPath']//换当前的icon
 otabbar[id]['current'] = 1;
 bindData[bindName] = otabbar
 that.setData({ bindData });
}

module.exports = {
 tabbar: tabbarmain
}

到此改组件完成,然后讲解一下使用方法。
我们先把样式载入到app.wxss

@import "/template/template.wxss";

在index文件夹

index.wxml

<import src="../../template/template.wxml"/>
<template is="tabBar" data="{{tabBar:bindData.tabBar}}"/>

index.js

const app = getApp()
var template = require('../../template/template.js');
Page({
 data: {

 },
 onLoad: function () {
 template.tabbar("tabBar", 0, this)//0表示第一个tabbar
 },
})

news.wxml与index.wxml一样
news.js如下

const app = getApp()
var template = require('../../template/template.js');
Page({
 data: { },

 onLoad: function () {
 template.tabbar("tabBar", 1, this)//1表示第二个tabbar
 },

})

效果如图

微信小程序自定义tabBar组件开发详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
Dec 02 Javascript
jQuery使用正则表达式限制文本框只能输入数字
Jun 18 Javascript
node.js中的事件处理机制详解
Nov 26 Javascript
JavaScript插件Tab选项卡效果
Nov 14 Javascript
Angular4学习教程之DOM属性绑定详解
Jan 04 Javascript
JavaScript实现求最大公共子串的方法
Feb 03 Javascript
JavaScript实现微信红包算法及问题解决方法
Apr 26 Javascript
vue组件之间通信实例总结(点赞功能)
Dec 05 Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 Javascript
Vue.extend实现挂载到实例上的方法
May 01 Javascript
基于layui实现高级搜索(筛选)功能
Jul 26 Javascript
JS实现网站吸顶条
Jan 08 Javascript
Vue递归实现树形菜单方法实例
Nov 06 #Javascript
electron中使用bootstrap的示例代码
Nov 06 #Javascript
vue实现自定义日期组件功能的实例代码
Nov 06 #Javascript
浅谈Vue数据响应思路之数组
Nov 06 #Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 #Javascript
详解Vue内部怎样处理props选项的多种写法
Nov 06 #Javascript
微信小程序实现选项卡效果
Nov 06 #Javascript
You might like
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
vue.js中$set与数组更新方法
2018/03/08 Javascript
bootstrap Table实现合并相同行
2019/07/19 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
酒店led欢迎词
2014/01/09 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
2014年项目工作总结
2014/11/24 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android