微信小程序-自定义单页面导航栏

自定义背景图片:
在需要自定义的页面 .json 文件中设置:“navigationStyle”: “custom”

{
  "usingComponents": {},
  "navigationStyle": "custom"
}

效果图:
在这里插入图片描述
首先,需要在app.js文件中配置:

App({
  globalData: {
   
  },
  onLaunch: function () {
    let menuButtonObject = wx.getMenuButtonBoundingClientRect();
    // console.log(menuButtonObject);
    wx.getSystemInfo({
      success: res => {
        //导航高度
        let statusBarHeight = res.statusBarHeight,
          navTop = menuButtonObject.top,//胶囊按钮与顶部的距离
          navHeight = statusBarHeight + menuButtonObject.height + (menuButtonObject.top - statusBarHeight)*2;
          
        this.globalData.navHeight = navHeight;
        this.globalData.navTop = navTop;
        this.globalData.windowHeight = res.windowHeight;
      },
      fail(err) {
        console.log(err);
      }
    })
  }
})

1、wxml 部分:

<view class="content">
  <!-- 背景图片部分 -->
  <image class="nav-bg" src="/img/my-header-bg.png"></image>
  <!-- 导航部分 -->
  <view class="navbar" style="height:{{navHeight}}px">
    <view class="navTop" style="height:{{navTop}}px"></view>
    <view class="navTitle" style="line-height:{{navTitle}}px">
      <view class="icon-box">箭头</view>
      <view class="title">标题</view>
    </view>
  </view>
  <!-- 内容部分 -->
  <view class="con-main" style="top:{{navHeight}}px">
    内容部分
  </view>
</view>

2、js 部分:

const app =getApp()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    navTop:'',
    navHeight:'',
    navTitle:""
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      navTop:app.globalData.navTop,
      navHeight:app.globalData.navHeight,
      navTitle:app.globalData.navHeight-app.globalData.navTop
    })
  },
})

3、wxss 部分:

.nav-bg {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  width: 100%;
  height: 600rpx;
}

.navbar {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
}
.navTitle{
  text-align: center;
  color: #fff;
  position: relative;
}
.navTitle .icon-box{
  position: absolute;
  left: 30rpx;
}
.con-main {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  border: 1px solid red;
}

详细解释可以参考:参考

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值