• 微信小程序自定义头部


    1.在对应界面的json文件,将navigationStyle属性设置为“custom”

    "navigationStyle":"custom"

    2. 状态栏的高度可以通过 wx.getSystemInfo() 获取。

    胶囊按钮的信息可以通过 wx.getMenuButtonBoundingClientRect() 获取。

    导航栏高度=状态栏高度+胶囊按钮的高度+(胶囊按钮距离顶部的距离-状态栏的高度)*2。

    由于胶囊按钮是原生组件,为表现一致,其单位在各个系统都为 px,所以自定义导航栏高度的单位都必须是 px,才能完美适配。

    wxml

    1. <view class="header-box">
    2. <view style="height:{{capsuleHeight}}px;top:{{capsuleTop}}px" class='back'>
    3. <van-icon name="arrow-left" color="#333" bindtap='navBack' size="50rpx" />
    4. view>
    5. <view class="nav-title" style="height:{{capsuleHeight}}px;top:{{capsuleTop}}px">物联网数据view>
    6. <image src="/static/images/news.png" mode="scaleToFill">image>
    7. view>

    wxss:

    1. .header-box{
    2. width: 100%;
    3. position:relative;
    4. }
    5. .header-box image {
    6. width: 100%;
    7. }
    8. .other-box{
    9. position: absolute;
    10. top: 370rpx;
    11. }
    12. .back{
    13. position: absolute;
    14. left: 40rpx;
    15. display: flex;
    16. align-items: center;
    17. justify-content: center;
    18. }
    19. .nav-title{
    20. position: absolute;
    21. left: 50%;
    22. transform: translateX(-50%);
    23. font-size: 32rpx;
    24. font-weight: bold;
    25. display: flex;
    26. align-items: center;
    27. justify-content: center;
    28. }

    js

    1. onLoad(){
    2. wx.getSystemInfo({
    3. success: res => {
    4. this.setData({
    5. statusBarHeight:res.statusBarHeight // 获取状态栏的高度
    6. })
    7. }
    8. })
    9. // 获取胶囊信息
    10. this.data.capsule = wx.getMenuButtonBoundingClientRect() // 获取胶囊按钮的信息
    11. this.setData({
    12. capsuleTop:this.data.capsule.top, // 胶囊距离屏幕顶部的距离
    13. capsuleHeight:this.data.capsule.height, // 胶囊高度
    14. })
    15. this.setData({
    16. // 导航栏高度=状态栏高度+胶囊按钮的高度+(胶囊按钮距离顶部的距离-状态栏的高度)*2
    17. navbarHeight:(this.data.capsule.top-this.data.statusBarHeight)*2+this.data.capsule.height+this.data.statusBarHeight // 导航栏高度
    18. })
    19. }

    该页面自定义头部,也支持分享好友,导致分享出去点左上角的返回没有反应

    1. // 自定义导航返回按钮
    2. navBack(){
    3. let pages = getCurrentPages(); //获取所有页面
    4. if (pages.length <= 1){
    5. // 返回首页
    6. wx.switchTab({
    7. url: '/pages/index/index',
    8. });
    9. } else {
    10. // 返回上一页
    11. wx.navigateBack({
    12. delta: 1,
    13. });
    14. }
    15. }

  • 相关阅读:
    Jetson Orin NX 开发指南(5): 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速
    Redis常用数据类型、Redis常用命令
    小程序 wxml2canvas开发文档
    EMI/EMS/EMC有何异同之处?-唯样商城
    [ C++ ] 抽象类 虚函数 虚函数表 -- C++多态(1)
    神经网络常用激活函数详解
    微服务注册中心:Eureka详解
    【计算机网络】网络编程接口 Socket API 解读(8)
    [iOS]-RunLoop
    RabbitMQ spring boot TTL延时消费
  • 原文地址:https://blog.csdn.net/weixin_69670563/article/details/139121330