微信小程序自定义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 相关文章推荐
13个绚丽的Jquery 界面设计网站推荐
Sep 28 Javascript
始终在屏幕中间显示Div的代码(css+js)
Mar 10 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
May 29 Javascript
javascript数组去重的六种方法汇总
Aug 16 Javascript
原生JS实现美图瀑布流布局赏析
Sep 07 Javascript
JS实现仿新浪黄色经典滑动门效果代码
Sep 27 Javascript
javascript实现密码验证
Nov 10 Javascript
confirm确认对话框的实现方法总结
Jun 17 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
elemetUi 组件--el-upload实现上传Excel文件的实例
Oct 27 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
Dec 28 Javascript
详解javascript常用工具类的封装
Jan 30 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来处理多个提交任务
2006/10/09 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
php查询ip所在地的方法
2014/12/05 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
用Python编写一个国际象棋AI程序
2014/11/28 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
python字符串的拼接方法总结
2019/11/18 Python
python flask中动态URL规则详解
2019/11/22 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
专业销售业务员求职信
2013/11/18 职场文书
个人求职简历中英文自我评价
2013/12/16 职场文书
思想品德课教学反思
2014/02/10 职场文书
请假条标准格式规范
2014/04/10 职场文书
纪检监察建议书
2014/05/19 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python