微信小程序自定义导航栏及其封装的全过程

 更新时间:2022年12月02日 10:09:51   作者:东非不开森  
在小程序项目开发过程中常遇到自定义导航栏的需求,所以下面这篇文章主要给大家介绍了关于微信小程序自定义导航栏及其封装的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

应用场景:我们在小程序中想要自定义导航栏(当然组件库更方便哈哈)

一、导航栏适配

1.1.在json文件里更改页面配置项

⭐⭐⭐

官方文档介绍的有:

"navigationStyle": "custom"
这样原本默认的导航栏就会消失了 

PS: 如果是单页面需要就写在对应页面的json内,如果全局需要就写在app.josn内

1.2.导航栏适配每种机型

⭐⭐⭐

app.js 里面获取statusbarHeight(这个就是每种机型的导航高度,我们需要获取并且动态的展示)

wx.getSystemInfo获取。

 我们要在对应该导航组件的js文件里面进行获取

  • data中定义一个数据
  • 在动态从app.js中获取
  • 将获取到的statusBarHeight,存储到data

wxml里面动态的使用该数据

这样机型适配就完成啦o( ̄︶ ̄)o

二、封装导航栏组件

⭐⭐⭐⭐⭐

2.1.wxml

这里我们使用了插槽(可以看看插槽的内容)

<!--components/nav-bar/nav-bar.wxml-->
<view class="nav-bar">
  <view class="status" style="height: {{statusHeight}}px;"></view>
    <view class="nav">
      <view class="left">
        <view class="slot">
          <slot name="left"></slot>
        </view>
        <view class="default">
          <image class="icon" src="/assets/images/icons/arrow-left.png"></image>
        </view>
      </view>
      <view class="center">
        <view class="slot">
          <slot name="center"></slot>
        </view>
        <view class="default">
          {{title}}
        </view>
      </view>
      <view class="right"></view>
    </view>
  </view>

2.2.wxss

⭐⭐⭐

  • 这里主要控制导航栏显示的位置
  • 还有默认插槽用通过css3的伪类:empty,class="default"的view盒子默认的样式是display: none隐藏的,如果class="slot"的view盒子为空时,那么就会将class="default"的view盒子的样式设为display: flex(因为小程序是默认不显示默认插槽的)
/* components/nav-bar/nav-bar.wxss */
/* 自定义导航 */
.nav {
  display: flex;
  height: 44px;
  color: #fff;
}

.left, .right, .center {
  display: flex;
  justify-content: center;
  align-items: center;
}

.nav .left, .nav .right {
  width: 120rpx;
}

.nav .center {
  flex: 1;
}

/* 控制内容显示 */
.left .icon {
  width: 40rpx;
  height: 40rpx;
}

.default {
  display: none;
}

.slot:empty + .default {
  display: flex;
}

2.3.js

  • 在properties下设置标题
  • 在options开启多个插槽
// components/nav-bar/nav-bar.js

const app = getApp()
Component({
  options: {
    multipleSlots: true
  },
  properties:{
    title: {
      type: String,
      value: "导航标签"
    }
  },
  data:{
    statusHeight:20
  },
  lifetimes: {
    attached(){
      this.setData({statusHeight: app.globalData.statusHeight})
    }
  }
})

2.4.在页面中使用导航栏组件

⭐⭐⭐

因为插槽的使用,这里就很方便了,如果添加内容,那么就会显示默认插槽

2.5.效果图

 这就是大概的效果了,当然文字箭头这里都是可以自定义的hh

总结

到此这篇关于微信小程序自定义导航栏及其封装的文章就介绍到这了,更多相关微信小程序自定义导航栏封装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS实现中文汉字按拼音排序的方法

    JS实现中文汉字按拼音排序的方法

    这篇文章主要介绍了JS实现中文汉字按拼音排序的方法,涉及javascript针对中文字符串的转换、遍历、排序等相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • easyui给某一个单元格的内容增加下划线的操作方法

    easyui给某一个单元格的内容增加下划线的操作方法

    在EasyUI的DataGrid组件中,你可以通过自定义单元格的渲染方式来实现给某一个单元格的内容增加下划线的效果,本文给大家介绍easyui如何给某一个单元格的内容增加下划线,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • JavaScript校验Number(4,1)格式的数字实例代码

    JavaScript校验Number(4,1)格式的数字实例代码

    这篇文章主要介绍了JavaScript校验Number(4,1)格式的数字实例代码,本文实现思路明确代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • js继承的6种方式详解

    js继承的6种方式详解

    这篇文章主要给大家介绍了关于js继承的6种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 使用TS来编写express服务器的方法步骤

    使用TS来编写express服务器的方法步骤

    这篇文章主要介绍了使用TS来编写express服务器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • js实现跨域的几种方法汇总(图片ping、JSONP和CORS)

    js实现跨域的几种方法汇总(图片ping、JSONP和CORS)

    平时用惯了jQuery.ajax之类的方法,却时常忽略了它背后的实现,本文是学习了AJAX基础及几种跨域解决方案之后的一些收获。
    2015-10-10
  • js实现自定义右键菜单

    js实现自定义右键菜单

    这篇文章主要为大家详细介绍了js实现自定义右键菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 深入浅析JavaScript中的作用域和上下文

    深入浅析JavaScript中的作用域和上下文

    javascript中的作用域(scope)和上下文(context)是这门语言的独到之处,这部分归功于他们带来的灵活性。本文给大家介绍JavaScript中的作用域和上下文,感兴趣的朋友一起学习
    2016-03-03
  • 详解JavaScript基于面向对象之创建对象(2)

    详解JavaScript基于面向对象之创建对象(2)

    这篇文章主要介绍了JavaScript基于面向对象之创建对象,详细的分析面向对象的原型方式以及其他综合的方式,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 使用非html5实现js板连连看游戏示例代码

    使用非html5实现js板连连看游戏示例代码

    连连看游戏通常情况下都是使用html5来实现的,不过从现在开始就可以使用js来实现了,具体的代码如下,喜欢的朋友可以参考下,希望对大家有所帮助
    2013-09-09

最新评论