微信小程序封装自定义导航栏

  1. 在 app.json 文件中设置导航栏的样式:
"window": {"navigationStyle": "custom"
},
"usingComponents": {"nav-bar": "/components/navbar/navbar"}
  1. 在app.js中获取设备顶部窗口的高度
App({onLaunch: function (options) {var _this = this;//自定义导航栏 获取设备顶部窗口的高度(不同设备窗口高度不一样,根据这个来设置自定义导航栏的高度)wx.getSystemInfo({success: (res) => {// 基础库 2.1.0 开始支持wx.getMenuButtonBoundingClientRect(),低版本需要适配let custom = wx.getMenuButtonBoundingClientRect()_this.globalData.statusBarHeight = res.statusBarHeight_this.globalData.navBarHeight = custom.height + (custom.top - res.statusBarHeight) * 2}})},globalData: { // 全局数据statusBarHeight: 0,navBarHeight: 0},
})
  1. 创建navbar组件
  • wxml文件中
<view class='nav-wrap nav-bgc-class' style='height: {{statusBarHeight + navBarHeight}}px;'><!--  左上角的返回按钮 其中wx:if='{{navbarData.showCapsule}}' 是控制左上角按钮的显示隐藏,1为显示,0为隐藏 --><view class='nav-capsule' style='margin-top: {{statusBarHeight}}px; height: {{navBarHeight}}px;' wx:if='{{navbarData.showCapsule}}' bindtap='_navback'><image class='back-pre ex-back-pre' src='{{navbarData.backSrc || "/assets/arrow.png"}}' mode='aspectFill'></image></view><!--  中间的标题 --><view class='nav-title nav-title-class' style='margin-top: {{statusBarHeight}}px; height: {{navBarHeight}}px;' wx:if='{{navbarData.title&&!navbarData.titleHide}}'>{{navbarData.title}}</view><view class='nav-title nav-title-class' style='margin-top: {{statusBarHeight}}px; height: {{navBarHeight}}px;' wx:if="{{!navbarData.titleHide&&!navbarData.title}}"><image src="/assets/logo.png" alt="" class="nav-logo"/></view>
</view>
  • js文件中
const app = getApp()
Component({// multipleSlots 为组件开启多插槽模式options: {multipleSlots: true,},// properties 组件用来储存外部数据properties: {navbarData: { //navbarData   由父页面传递的数据,变量名字自命名type: Object,value: {},observer: function (newVal, oldVal) {}},},// 组件用来储存内部私有数据data: {// 自定义导航栏的高度statusBarHeight: app.globalData.statusBarHeight,navBarHeight: app.globalData.navBarHeight},// attached函数 当组件进入页面节点树时触发,可以使用setData,绝大多数初始化工作在这个时机进行attached: function () {},methods: {// 返回键,触发自定义事件,将返回的事件交给父级页面来分情况定义_navback() {this.triggerEvent('goBack')}}
})
  • json文件
{"usingComponents": {},"component": true
}
  • wxss文件
/* 顶部固定定位   标题要居中   自定义按钮和标题要和右边微信原生的胶囊上下对齐 */
.nav-wrap {position: fixed;width: 100%;top: 0;left: 0;right: 0;background: #F0F0F0;z-index: 9999;transform: translate3d(0, 0, 0);
}/* 返回键 */
.nav-capsule {width: 140rpx;display: flex;align-items: center;position: absolute;left: 20rpx;top: 0;bottom: 0;margin: auto;
}.back-pre {width: 40rpx;height: 40rpx;
}/* 标题 */
.nav-title {position: absolute;left: 0;right: 0;bottom: 0;max-width: 360rpx;margin: auto;display: flex;align-items: center;justify-content: space-around;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;color: #45494D;font-size: 24rpx;font-weight: 600;
}
.nav-title .nav-logo {width: 99rpx;height: 41rpx;
}
  1. 页面引用
  • wxml文件
<view>
<nav-bar bind:goBack="_goBack" navbar-data='{{nvabarData}}'></nav-bar>
</view>
  • js文件

import {request
} from '../../utils/request'
const app = getApp()
let pageIndex = 1
Page({/*** 页面的初始数据*/data: {nvabarData: {showCapsule: 1,//是否显示左上角图标   1表示显示    0表示不显示title: '首页',backSrc:'' //如果传入左上角使用传入的图片否则使用返回图标},},_goBack() {let pages = getCurrentPages(); //获取当前页面pages里的所有信息。console.log(pages, "pages")let prevPage = pages[pages.length - 2]; //prevPage 是获取上一个页面的js里面的pages的所有信息。 -2 是上一个页面,-3是上上个页面以此类推。prevPage.setData({ // 将我们想要传递的参数在这里直接setData。上个页面就会执行这里的操作。chooseValue: this.data.chooseValue})//上一个页面内执行setData操作,将我们想要的信息保存住。当我们返回去的时候,页面已经处理完毕。//最后就是返回上一个页面。wx.navigateBack({delta: 1 // 返回上一级页面。})}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/222617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AUTOSAR从入门到精通-面向服务的中间件SOME/IP(五)

目录 前言 几个高频面试题目 SOME/IP与SOA的关系 some/ip、http、ftp、dns、rpc区别

Java服务网关的实现与应用:Spring Cloud Gateway、Zuul和Kong比较

引言&#xff1a; 随着微服务架构的兴起&#xff0c;服务网关作为系统的入口和出口&#xff0c;扮演着至关重要的角色。它能够集中处理请求、路由和过滤&#xff0c;提供统一的访问接口&#xff0c;简化了系统的复杂性。在Java领域&#xff0c;有多种服务网关的实现方案可供选择…

【超图】SuperMap iClient3D for WebGL/WebGPU ——暴雪

作者&#xff1a;taco 时隔多年北京又开始降下了特大暴雪。身为打工人的你有没有居家办公呢&#xff1f;反正小编我是没有。既然没有借着暴雪的功劳居家办公&#xff0c;那就接着雪来输出一篇博客好了。基于SuperMap iClient3D for WebGL/WebGPU 实现暴雪仿真效果。 先来看下效…

threejs ShapeGeometry 自定义贴图的uv坐标

问题描述&#xff1a; 由于一些原因&#xff0c;要绘制一个长方形&#xff0c;但是这个长方形并不是 PlaneGeometry&#xff0c;而是一个ShapeGeometry。但是同样的贴图&#xff0c;同样的形状&#xff0c;贴图贴在PlaneGeometry上时可以正常显示&#xff0c;但是贴在ShapeGeo…

了解如何在linux使用podman管理容器

本章主要介绍使用 podman 管理容器。 了解什么是容器&#xff0c;容器和镜像的关系 安装和配置podman 拉取和删除镜像 给镜像打标签 导出和导入镜像 创建和删除镜像 数据卷的使用 管理容器的命令 使用普通用户管理容器 使用普通用户管理容器 对于初学者来说&#xff0c;不太容…

squid SSL https

在 Squid 服务中配置 SSL Bumping 建议在 Squid 服务中配置 SSL Bumping 以处理加密连接。如果未配置 SSL Bumping&#xff0c;则代理服务器无法干预加密连接建立过程。在这种情况下&#xff0c;Kaspersky Web Traffic Security&#xff08;反病毒和反网络钓鱼&#xff09;的保…

pytorch:to()、device()、cuda()将Tensor或模型移动到指定的设备上

将Tensor或模型移动到指定的设备上&#xff1a;tensor.to(‘cuda:0’) 最开始读取数据时的tensor变量copy一份到device所指定的GPU上去&#xff0c;之后的运算都在GPU上进行在做高维特征运算的时候&#xff0c;采用GPU无疑是比用CPU效率更高&#xff0c;如果两个数据中一个加了…

word四级目录序号不随上级目录序号变化问题解决方法

一、word中的几个元素简介 1、word中的列表 如下图所示&#xff0c;代表word的列表&#xff1a; 2、word中的标题 如下图所示&#xff0c;代表word的标题&#xff1a; 3、word中的编号/序号 如下图所示&#xff0c;代表word的编号/序号&#xff1a; 4、word中的目录 如下图…

Stable diffusion 简介

Stable diffusion 是 CompVis、Stability AI、LAION、Runway 等公司研发的一个文生图模型&#xff0c;将 AI 图像生成提高到了全新高度&#xff0c;其效果和影响不亚于 Open AI 发布 ChatGPT。Stable diffusion 没有单独发布论文&#xff0c;而是基于 CVPR 2022 Oral —— 潜扩…

面试经典150题(20)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第八天&#xff09;完成了1道(20)150&#xff1a; 这个题花了我快 2个小时。。。 20&#xff1a;&#xff08;6. N 字形变换&#xff09;题目描述&#xff1a; 将一个给定字符串 s 根据给定的行数 numRow…

Linux 之 性能优化

uptime $ uptime -p up 1 week, 1 day, 21 hours, 27 minutes$ uptime12:04:11 up 8 days, 21:27, 1 user, load average: 0.54, 0.32, 0.23“12:04:11” 表示当前时间“up 8 days, 21:27,” 表示运行了多长时间“load average: 0.54, 0.32, 0.23”“1 user” 表示 正在登录…

cfa一级考生复习经验分享系列(二)

本人学历背景&#xff1a;毕业于普通二本学校&#xff0c;本科专业为金融学&#xff0c;所以还算是有一定的基础&#xff0c;今年19年6月份参加了cfa一级的考试&#xff0c;最终通过了一级的考试&#xff0c;虽然成绩一般&#xff0c;但是已经知足了&#xff0c;因为自己复习的…

在接口实现类中,加不加@Override的区别

最近的软件构造实验经常需要设计接口&#xff0c;我们知道Override注解是告诉编译器&#xff0c;下面的方法是重写父类的方法&#xff0c;那么单纯实现接口的方法需不需要加Override呢&#xff1f; 定义一个类实现接口&#xff0c;使用idea时&#xff0c;声明implements之后会…

cfa一级考生复习经验分享系列(三)

从总成绩可以看出&#xff0c;位于90%水平之上&#xff0c;且置信区间全体均高于90%线。 从各科目成绩可以看出&#xff0c;所有科目均位于90%线上或高于90%线&#xff0c;其中&#xff0c;另类与衍生、公司金额、经济学、权益投资、固定收益、财报分析表现较好&#xff0c;目测…

芯知识 | 什么是可重复擦写(Flash型)语音芯片?

什么是可重复擦写&#xff08;Flash型&#xff09;语音芯片&#xff1f; 可重复擦写&#xff08;Flash型&#xff09;语音芯片是一种嵌入式语音存储解决方案&#xff0c;采用了Flash存储技术&#xff0c;使得语音内容能够被多次擦写、更新&#xff0c;为各种嵌入式系统提供了灵…

QEMU源码全解析 —— virtio(1)

接前一篇文章&#xff1a; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 特此致谢&#xff01; virtio简介 对于一台虚拟机而言&#xff0c;除了要虚拟化CPU和内存&…

.360勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 在数字化时代&#xff0c;.360勒索病毒如影随形&#xff0c;威胁个人和组织的数据安全。本文将深入介绍.360病毒的特征、威胁&#xff0c;以及如何有效地恢复被加密的数据文件&#xff0c;同时提供预防措施&#xff0c;助您更好地保护数字资产。如不幸感染这…

原生小程序中对特定数据进行计算(wxml中wxs的使用)

背景&#xff1a;商品详情页对好评数进行统计&#xff0c;但是现在只有商品数据 使用wxs编写方法&#xff0c;module.exports导出&#xff0c;wxml中使用module名进行获取{{goodsRate.getRate(goodsInfoList)}} <wxs module"goodsRate">module.exports {get…

一站式查询热门小程序排名,助力小程序运营决策

如今小程序数量激增,竞争日益激烈,如何能在众多同类小程序中脱颖而出,提高曝光度与下载量,是每一个小程序运营者都极为关心的问题。对此,及时准确地查询自己小程序的热门排名,分析强劲对手,找出自己的短板,都是提高小程序竞争力的重要一环。那我们该如何方便快捷地查询到这些关…

Java通过documents4j和libreoffice把word转为pdf

文章目录 word转pdf的相关第三方jar说明Linux系统安装LibreOffice在线安装离线安装word转pdf验证 Java工具类代码 word转pdf的相关第三方jar说明 docx4j 免费开源、稍微复杂点的word&#xff0c;样式完全乱了&#xff0c;且xalan升级为2.7.3后会报错。poi 免费开源、官方文档少…