1 设置小程序通栏,不展示标题导航

每个页面都有自己的json文件配置,如下index.json文件, 他们会覆盖掉app.json已有的配置项

通栏的设置主要是 “navigationStyle”: “custom”,

{"usingComponents": {},"navigationStyle": "custom","navigationBarBackgroundColor": "#ffffff","navigationBarTextStyle": "black","navigationBarTitleText": "","backgroundColor": "#eeeeee","backgroundTextStyle": "light"
}

效果如下:

2 沉浸式导航

先放效果图:

这里需要注意俩个问题,

  1. 导航的适配是需要计算到各种机型的状态栏高度的,
  2. 上滑时需要给导航栏一个背景色值,否则导航标题(透明的)会和内容区域重叠

navBar.js

// components/navBar/navBar.js
Component({/*** 组件的属性列表*/properties: {title: {           type: String,  value: ''    },scrollTop: {         type: String,    value: '0',     observer: 'update', // 类似于vue的 watch 动态传值}},/*** 组件的初始数据*/data: {navigaTitle:'',ws:true,statusBarHeight: 20,navHeight: 44,opacity: 0,},ready: function() {const res = wx.getSystemInfoSync()this.data.statusBarHeight = res.statusBarHeight // 系统状态栏高度let _res = wx.getMenuButtonBoundingClientRect() // 小程序胶囊按钮let navBarPadding = (_res.top - this.data.statusBarHeight) * 2this.data.navHeight = _res.height + navBarPaddingthis.setData({navigaTitle: this.data.title,statusBarHeight: this.data.statusBarHeight,navHeight: this.data.navHeight,})},/*** 组件的方法列表*/methods: {navigateBack: function(){wx.navigateBack({delta: 1,})},update(newValue) {let op = 0;if (newValue != 0 && newValue <= 40) {op = newValue / 40}if (newValue >= 40) {op = 1;}this.setData({opacity: op})},}
})

navBar.json

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

navBar.wxml

<view class="back-nav-bar" style="position:fixed;top:{{statusBarHeight}}px;height:{{navHeight}}px;left:0;"><div class="bg-op" wx:if="{{title !== ''}}" style="height:{{statusBarHeight+navHeight}}px;opacity:{{opacity}}"></div><div class="left-icon" bindtap="navigateBack"><image src="data:images/back@2x.png" mode='widthFix'></image></div><div class="title">{{title}}</div><div class="icon"></div></view>

navBar.wxss

/* component/navBar/navBar.wxss */
.back-nav-bar {height: 64rpx;width: 100vw;display: flex;flex-direction: row;justify-content: space-between;align-items: center;z-index: 999;position: relative;
}
.bg-op {position: absolute;width: 100%;bottom: 0;left: 0;background: linear-gradient(180deg, #C1CFE5 0%, #DEE4EE 100%);z-index: -1;
}.left-icon {width: 48rpx;height: 48rpx;margin-left: 40rpx;
}
.icon {width: 48rpx;height: 48rpx;margin-right: 40rpx;
}
.left-icon image {display: block;width: 100%;
}

在需要使用的页面中引入组件 usingComponents

{"usingComponents": {"nav-bar": "/components/navBar/navBar"},"navigationStyle": "custom","navigationBarTextStyle": "black","navigationBarTitleText": "冥想","backgroundColor": "#eeeeee","backgroundTextStyle": "dark"
}

在需要使用的wxml文件中引入

<nav-bar title="冥想" scrollTop="{{scrollTop}}"></nav-bar>

在页面的js中给scrollTop赋值

  data: {scrollTop: 0},onPageScroll(t) {this.setData({scrollTop: t.scrollTop})},

至此 大工告成~

【微信小程序开发(二)】自定义导航栏相关推荐

  1. 微信小程序开发错误——底部导航栏没有显示完全

    微信小程序开发错误--底部导航栏没有显示完全 原因:由于在app.json中设置跳转页面时,假设有A.B.C.D四个图标(点击可以跳转),B和C的跳转页面相同,C的图标就会覆盖B的图标,B的图标就相当 ...

  2. Taro编译微信小程序实现顶部自定义导航栏

    [需求] 使用taro开发微信小程序的过程中,涉及到小程序的需要自定义顶部导航栏(导航栏渐变色),微信小程序中只能够设置固定的颜色,渐变颜色以及添加其他按钮的操作就不能够通过小程序自带的api来实现 ...

  3. vue微信小程序开发(二)---页面以及导航

    vue微信小程序开发(二)-菜单以及页面 这里写目录标题 vue微信小程序开发(二)---菜单以及页面 图标的选择 创建并注册页面 底部导航   大家好,我是代码哈士奇,是一名软件学院网络工程的学生, ...

  4. 微信小程序——不同角色的导航栏显示不同

    文章目录 问题描述 解决方法 代码实现 底部导航栏 排查员 存在的问题 问题描述   微信小程序的原生底部导航栏限制了数量(3-5个)且不能根据你的不用用户进行动态的底部导航栏变化,无法适应多种用户从 ...

  5. 《微信小程序开发》 页面导航最强详解 | 如何对小程序页面进行跳转?

    <微信小程序开发> 页面导航最强详解 | 如何对小程序页面进行跳转? 文章目录 <微信小程序开发> 页面导航最强详解 | 如何对小程序页面进行跳转? 一.微信小程序导航 二.命 ...

  6. 微信小程序实现左侧滑动导航栏

    微信小程序实现左侧滑动导航栏 1.左侧滑动导航栏图如下 2.这是我们左侧滚动栏的代码 wxml <view class='under_line'></view><view ...

  7. 微信小程序开发(二)图片上传

    更新2017-08-24 更新七牛SDK只最新7.0.5版本. 在之前的博客<Node.js+express+MySQL使用七牛云实现的用户头像修改>,已经实现了在MUI框架或者< ...

  8. 微信小程序购物车和左侧导航栏

    先上实现图 话不多说,直接上代码 cars.js  // const arr = require("../../utils/data"); // pages/cars/cars.j ...

  9. 微信小程序实现透明渐变导航栏

    最近在微信小程序实现透明渐变的导航栏,刚好有接触wxs,所以尝试着用wxs实现.核心代码: <scroll-view scroll-y style="height: {{pageHei ...

  10. 入门微信小程序开发(二)wxml与wxss

    一.初识WXML 对于每一位前端开发者而言,熟练的编写静态页面是入门的开始,在小程序中这一点也无法避免.在介绍微信小程序功能交互之前,我们先了解在小程序中如何实现页面布局与页面样式,这里先来介绍WXM ...

最新文章

  1. Kafka的生产者优秀架构设计
  2. js转Java的list_JS之JSON字符串到后台用Java转换成List实体类
  3. Centos7设置网络
  4. 使用Apache Spark让MySQL查询速度提升10倍以上
  5. Uboot中start.S源码的指令级的详尽解析 在线版
  6. Duplicate entry ‘211‘ for key ‘PRIMARY‘异常解决
  7. Leet Code OJ 388. Longest Absolute File Path [Difficulty: Medium]
  8. 微信小程序项目实战知识点总结(swiper组件自适应高度,自定义弹出层,悬浮按钮,虚拟键盘)...
  9. mysql getline_getMessage(),getFile,getLine获取异常用法
  10. 类似endnote_求推荐一款文献管理软件?
  11. sql 查询超时已过期_监视来自SQL Server代理作业的查询超时过期消息
  12. 合理利用Java不可变对象,让你的代码更加优雅
  13. jflash添加芯片_Jflash用于烧录
  14. 浏览器的使用方法,如何添加书签|常用网站|扩展程序?
  15. 大数据算法-重复率计算 ICardinality
  16. (报错解决)Exception encountered during context initialization
  17. FPGA电源设计总结
  18. 用户画像,原来是这么用的!看一个生活中的案例
  19. 我终于搞清了啥是 HTTPS 了
  20. 2022骨传导蓝牙耳机哪个最专业、目前最好的骨传导耳机

热门文章

  1. Simulink 环境基础知识(十六)--符号解析
  2. 地产大佬集体看跌2012房价 黄怒波称最高降30%
  3. HDU 4553 约会安排 (区间合并)【线段树】
  4. 能量守恒及概念推导---伯克利物理读书笔记
  5. PDF Shaper Pro v12.8 全能PDF工具箱中文版
  6. 在Windows/Linux下调用API函数实现重启系统
  7. PDF的文件大小怎么压缩,两款高效的PDF压缩软件
  8. iview 级联选择组件_iviewui级联选择 如何自定义?
  9. iqooneo3 如何不用vivo账号下载外部应用_【@海林市民】海林人自己的APP上线运行啦,海林融媒APP如何下载安装?安装指南在这里!...
  10. MongoDB全版本下载地址