微信小程序自定义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 相关文章推荐
js性能优化 如何更快速加载你的JavaScript页面
Mar 17 Javascript
JS截取字符串常用方法详细整理
Oct 28 Javascript
浅析jquery的作用与优势
Dec 02 Javascript
javascript多行字符串的简单实现方式
May 04 Javascript
JavaScript中的acos()方法使用详解
Jun 14 Javascript
JQuery和PHP结合实现动态进度条上传显示
Nov 23 Javascript
JS实现HTML标签转义及反转义
Apr 14 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
Aug 03 Javascript
详解vue 单页应用(spa)前端路由实现原理
Apr 04 Javascript
vue+axios+mock.js环境搭建的方法步骤
Aug 28 Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 Javascript
Vue+Spring Boot简单用户登录(附Demo)
Nov 12 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编程快速实现数组去重的方法详解
2017/07/22 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
react-router实现按需加载
2017/05/09 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
Python 解析XML文件
2009/04/15 Python
更改Python命令行交互提示符的方法
2015/01/14 Python
Python Socket传输文件示例
2017/01/16 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
python opencv实现图像边缘检测
2019/04/29 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
大学生简历中个人的自我评价
2013/10/06 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
留学经费担保书
2014/05/12 职场文书
完美的中文自荐信
2014/05/24 职场文书
售房委托书
2014/08/30 职场文书
单位单身证明样本
2014/10/11 职场文书
超市收银员岗位职责
2015/04/07 职场文书
新学期感想
2015/08/10 职场文书
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript