微信小程序自定义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中setTimeout()的用法详解
Apr 14 Javascript
Tab切换组件(选项卡功能)实例代码
Nov 21 Javascript
Javascript基础教程之定义和调用函数
Jan 18 Javascript
javascript检测移动设备横竖屏
May 21 Javascript
深入浅析JavaScript中的scrollTop
Jul 11 Javascript
Vue表单验证插件的制作过程
Apr 01 Javascript
javascript 中事件冒泡和事件捕获机制的详解
Sep 01 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
JavaScript常见继承模式实例小结
Jan 11 Javascript
three.js 制作动态二维码的示例代码
Jul 31 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
Aug 27 Javascript
解决element-ui的下拉框有值却无法选中的情况
Nov 07 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创建PDF中文文档
2006/10/09 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
PHP实现的购物车类实例
2015/06/17 PHP
PHP 微信支付类 demo
2015/11/30 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
PHP类的特性实例分析
2016/09/28 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
Python中的__init__作用是什么
2020/06/09 Python
统计员岗位职责
2013/11/14 职场文书
会计专业的自荐信
2013/12/12 职场文书
中层干部岗位职责
2013/12/18 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
感谢师恩主题班会
2015/08/17 职场文书
超市主管竞聘书
2015/09/15 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers