最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 微信小程序 之 自定义头部导航栏

    正文概述 掘金(Allshadow)   2020-12-20   822

    简介

    微信小程序自定义头部导航栏也是一个常见的需求。于是,记录一下,方便查阅复习。

    基础准备工作

    现在以小程序的一个页面 detail 目录为例,来进行配置

      detail
            -| index.wxml
            -| index.js
            -| index.wxss
            -| index.json

    设置 ’navigationStyle’

    将 index.json 中的 ‘navigationStyle’ 设置为 ‘custom’,若想要全局都自定义,则需要设置全局的 app.json

     {
        "navigationStyle": "custom"
     }

    计算状态栏高度

    在 app.js 中计算相应的高度,代码如下

    App({
      onLaunch: function () {
        //获取胶囊按钮的信息  {高度,距离头部高度,距离底部高度}
        const {height, top} = wx.getMenuButtonBoundingClientRect()

        // 获取手机系统信息
        wx.getSystemInfo({
          success: res => {
            //手机状态栏高度
            const statusBarHeight = res.statusBarHeight;
            //导航高度
            this.globalData.navHeight = statusBarHeight + height + (top - statusBarHeight)*2;
            this.globalData.navTop = top;
            this.globalData.navButtonHeight = height;
          }, fail(err) {
            console.log(err);
          }
        })
      },
      globalDate:{ //设置全局变量
          navHeight: 0, //导航栏高度
          navTop: 0, //胶囊距顶部的高度
          navButtonHeight: 0, //胶囊的高度
      }
    }) 

    编写自定义组件

    新建一个 custom-header 文件夹,代码如下

    index.wxml

    <view class="nav" style="height: {{navHeight}}px;">
      <view 
        class="back-btn" 
        style="top: {{navTop}}px;height: {{navButtonHeight}}px;"
        bindtap="onTap"
      >
        <image src="{{imgSrc}}"></image>
      </view>
      <view 
        class="text" 
        style="top: {{navTop}}px;height: {{navButtonHeight}}px; line-height: {{navButtonHeight}}px"
      >{{title}}
      </view>
    </view>

    index.js

    let app = getApp();


    Component({
      /**
       * 组件的属性列表
       */
      properties: {
        title: String,
        imgSrc: String
      },

      /**
       * 组件的初始数据
       */
      data: {
        navHeight: app.globalData.navHeight,
        navTop: app.globalData.navTop,
        navButtonHeight: app.globalData.navButtonHeight
      },

      /**
       * 组件的方法列表
       */
      methods: {
        onTap: function () {//返回上一页
          wx.navigateBack({
            delta: 1
          })  
        }
      }
    })

    index.scss (此处我是用 scss 来写的,所以直接贴 scss 代码)

    .nav{
      position: fixed;
      width: 100%;
      z-index: 1000000000;
      .back-btn{
        position: absolute;
        left: 40rpx;
        display: flex;
        align-items: center;
        z-index: 10000000001;
        image{
          width: 32rpx;
          height: 36rpx;
        }
      }
      .text{
        text-align: center;
        position: absolute;
        width: 100%;
      }
    }

    index.json (json 文件未做改变)

    {
      "component": true,
      "usingComponents": {}
    }

    引用组件

    在 index.json 文件中引入所编写的组件

    {
      "usingComponents": {
        "custom-header": "/components/custom-header/index" //定义组件名称,路径根据自己文件夹配置
      }
    }

    页面中使用组件

    只是简单的封装了一下,仅供基础使用

    <custom-header 
      img-src="/image/mine/left-arrow.png"
    >
    </custom-header>

    参考

    参考以下博客:博客


    起源地下载网 » 微信小程序 之 自定义头部导航栏

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元