小程序自定义tabbar,中间凸起

news/2024/7/20 3:10:36 标签: 小程序

微信小程序自带tabbar,但无法实现中间按钮凸起样式和功能,因此按照设计重新自定义一个tabbar

1、创建tabbar文件,与pages同级创建一个文件夹,custom-tab-bar,里面按照设计图将底部tabbar样式编写

<view class="tab-bar">
  <view class="tab-bar-border"></view>
  <block wx:for="{{list}}" wx:key="index">
    <view wx:if="{{item.isSpecial}}" class="tab-bar-item" data-name="{{item.text}}" data-path="{{item.pagePath}}" data-click="{{ item.isSpecial || false }}" data-index="{{index}}" bindtap="switchTab">
      <view class="special-image">
        <image class="special-image-pic" mode="widthFix" src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></image>
      </view>
      <view style="color: {{selected === index ? selectedColor : color}}" class="special-text tab-text">{{item.text}}</view>
      
    </view>
    <view wx:else class="tab-bar-item" data-name="{{item.text}}" data-path="{{item.pagePath}}" data-click="{{ item.isSpecial }}" data-index="{{index}}" bindtap="switchTab">
      <image class="item-image" mode="widthFix" src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></image>
      <view class="tab-text" style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</view>
      <view class="num" wx:if="{{item.text == '消息' && message_num != 0}}">{{message_num}}</view>
    </view>
  </block>
</view>

2、在app.js中添加点击事件

  /* 自定义底部按钮切换 */
  getCurrentTabbar(selected, that) {
    if (typeof that.getTabBar === 'function' &&
      that.getTabBar()) {
      if (wx.getStorageSync('openid')) {
        msg_unread().then(res => {
          that.getTabBar().setData({
            selected: selected,
            message_num: res.data.data
          })
        })
      } else {
        that.getTabBar().setData({
          selected: selected
        })
      }
    }
  },

3、在app.json中修改默认tabbar数据结构

  "tabBar": {
    "custom": true,
    "list": [
        {
            "pagePath": "pages/index/index",
            "text": "首页"
        },
        {
            "pagePath": "pages/contact/index",
            "text": "通讯录"
        },
        {
            "pagePath": "pages/release/index",
            "text": "发布"
        },
        {
            "pagePath": "pages/news/index",
            "text": "消息"
        },
        {
            "pagePath": "pages/personal/index",
            "text": "我的"
        }
    ]
},

4、在对应的页面中执行点击事件

  app.getCurrentTabbar(index,this);
  /* index:tabbar对应的index */

如需源码,请点击下载源码,或点击顶部下载按钮


http://www.niftyadmin.cn/n/5028001.html

相关文章

新能源汽车驱动电机的基本知识

学习目标:了解电机的基本知识。能力目标:培养学生搜集和整理相关资料的能力。素质目标:培养学生良好的职业素养。额定电店.在夫见定条件下电池工作的*于佳 电压知识准备术语和定义。 (1)驱动电机系统 通过有效的控制策略将动力蓄电池提供的直流电转化为交流实现电机的正转以及反…

Challenges and Applications of Large Language Models

本文是LLM系列文章&#xff0c;针对《Challenges and Applications of Large Language Models》的翻译。 大语言模型的挑战与应用 摘要1 引言2 挑战3 应用3.1 聊天机器人3.2 计算生物学3.3 计算机程序3.4 创造性工作3.5 知识工作3.6 法律3.7 医学3.8 推理3.9 机器人和嵌入式代…

R语言用逻辑回归预测BRFSS中风数据、方差分析anova、ROC曲线AUC、可视化探索

全文链接&#xff1a;https://tecdat.cn/?p33659 行为风险因素监测系统&#xff08;BRFSS&#xff09;是一项年度电话调查。BRFSS旨在确定成年人口中的风险因素并报告新兴趋势&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 例如&#xff0c;调查对…

【毕设选题】flink大数据淘宝用户行为数据实时分析与可视化

文章目录 0 前言1、环境准备1.1 flink 下载相关 jar 包1.2 生成 kafka 数据1.3 开发前的三个小 tip 2、flink-sql 客户端编写运行 sql2.1 创建 kafka 数据源表2.2 指标统计&#xff1a;每小时成交量2.2.1 创建 es 结果表&#xff0c; 存放每小时的成交量2.2.2 执行 sql &#x…

基于自定义表编写认证类、django-jwt源码分析、权限介绍、simpleui的使用

扩写auth的user表 1 基于自定义表编写认证类 1.1 认证类 1.2 登录接口 1.3 路由 1.4 视图类 2 django-jwt源码分析 2.1 签发 2.2 认证 3 权限介绍 4 simpleui的使用 4.1 安装simpleui 4.2 修改django后台模块默认的模板 4.3 字符集及时区设置 扩写auth的user表范 # 1 基于自…

坦克车机器人操作学习总结开始篇

目的&#xff1a;了解机器人的运动控制&#xff0c;掌握控制要点&#xff0c;分析控制难点&#xff0c;间接引入相应的传感器 方向介绍&#xff1a; 一、了解相关的单元驱动&#xff0c;并设计相应的硬件&#xff0c;解决调试的效率问题&#xff1b; 二、采用RT-thread 单片机级…

vue.js scss >>> 失效的问题

vue中&#xff0c;使用scss后&#xff0c;样式穿透失效的问题 如题&#xff0c;vue项目中样式使用scss时&#xff0c;对于需要穿透的样式&#xff0c;使用 >>> 穿透可能会不生效&#xff0c;解决办法也很简单&#xff1a; 将样式由&#xff1a; <style lang"s…

勒索病毒最新变种.Elbie勒索病毒来袭,如何恢复受感染的数据?

引言&#xff1a; 随着数字化的快速发展&#xff0c;网络安全威胁也变得越来越严重。其中&#xff0c;.Elbie勒索病毒是一种备受恶意分子钟爱的危险工具&#xff0c;它可以加密您的数据文件&#xff0c;然后勒索高额赎金。本文将深入探讨.Elbie勒索病毒的威胁&#xff0c;包括…