微信小程序自定义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 相关文章推荐
滚动经典最新话题[prototype框架]下编写
Oct 03 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
Jun 20 Javascript
php is_numberic函数造成的SQL注入漏洞
Mar 10 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
May 12 Javascript
JS获取屏幕高度的简单实现代码
May 24 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
Aug 10 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
Feb 08 Javascript
详解node HTTP请求客户端 - Request
May 05 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
Jul 07 Javascript
简单了解JavaScript异步
May 23 Javascript
echarts多条折线图动态分层的实现方法
May 24 Javascript
微信小程序组件生命周期的踩坑记录
Mar 03 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中Smarty模板初体验
2011/08/08 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
python 自定义对象的打印方法
2019/01/12 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
python socket 聊天室实例代码详解
2019/11/14 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
Linux Interview Questions For software testers
2013/05/17 面试题
1亿有多大教学反思
2014/05/01 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
忠诚教育心得体会
2014/09/03 职场文书
前台文员岗位职责
2015/02/04 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
python脚本框架webpy模板赋值实现
2021/11/20 Python