微信小程序自定义navbar
自定义导航栏
项目中需求: 导航栏在
插画
上, 这时需要采用自定义导航栏
实现.在json配置中把
navigationStyle
设置为custom
, 这时只会保留右上角胶囊按钮
.公共的导航栏编写一个自定义组件调用.
欢迎大神们指教…
文章目录
- 自定义导航栏
- 效果图
- 创建组件
- json
- wxml
- wxss
- js
- 组件使用步骤:
- app.json
- app.js
- page.js
- page.wxml
- page.json
- 图二插画背景使用
- wxml
- wxss
效果图
创建组件
类似于页面,一个自定义组件由
json
wxml
wxss
js
4个文件组成.首先需要在
json
文件中进行自定义组件声明, 将component
字段设为true
custom-component
Component
- 新建文件夹
components
- 在
components
新建组件navbar
- 在
navbar
组件对应文件上写code
json
首先在
json
文件中, 将component
字段设为true
可这一组文件设为自定义组件
{"component": true
}
wxml
<!--components/navbar/navbar.wxml-->
<view><view class='nav bg' style='height:{{navH}}px'><view class='nav-title'>{{pageName}}<image src='/libs/assets/images/goBack.png' mode='aspectFit' class='back' bindtap='navBack'></image></view></view>
</view>
wxss
/* components/navbar/navbar.wxss */.nav {width: 100%;overflow: hidden;position: fixed;top: 0;left: 0;z-index: 10;
}.nav-title {width: 100%;height: 45px;line-height: 45px;text-align: center;position: absolute;bottom: 0;left: 0;z-index: 10;font-family: PingFang-SC-Medium;font-size: 34rpx;color: #fff;letter-spacing: 1px;
}.nav .back {width: 20px;height: 20px;position: absolute;bottom: 0;left: 0;padding: 10px 15px;
}.bg {background-color: #345098;
}
js
// components/navbar/navbar.jsconst app = getApp();Component({/*** 组件的属性列表*/properties: {pageName: String,},/*** 组件的初始数据*/data: {navH: 0,navbarData: {showCapsule: 1}},lifetimes: {attached: function () {this.setData({navH: app.globalData.navHeight})}},/*** 组件的方法列表*/methods: {//回退navBack: function () {wx.navigateBack({delta: 1})}}
})
组件使用步骤:
- 需在
app
全局中进行相关操作, 2. 在需要中page中使用该组件
app.json
在
app.json
下的window
配置navigationStyle
为custom
"window": {"navigationStyle": "custom"
},
app.js
注意: 在
app.js
中全局定义
导航高度navHeight
, 否则有可能遇到navHeight
为undefined
/*** 获取手机系统信息*/
wx.getSystemInfo({let that = this;success: res => {//导航高度 状态栏高度 + 导航栏高度44(这时写46)that.globalData.navHeight = res.statusBarHeight + 46;}, fail(err) {console.log(err);}
})/**
* 全局变量
*/
globalData: {navHeight: 0,
}
page.js
在需要的页面
.js
中获取导航栏高度
const app = getApp();Page({/*** 生命周期函数--监听页面加载*/onLoad: function (options) {this.setData({navH: app.globalData.navHeight})},
})
page.wxml
在需要的页面.
wxml
中 使用navbar
组件
注意:
默认会给导航栏覆盖, 需设置属性等margin-top
或height:calc(100vh - {{navH}}
各所需
<view class='indexWrap'><!-- navbar组件 --><navbar page-name="当前title"></navbar><!--内容--><view class='content' style='margin-top: {{navH}}px'></view>
</view>
page.json
引入
navbar
组件, 注意路径
"usingComponents": {"nav-bar": "/commpents/navbar/navbar",
}
图二插画背景使用
图二有插画, 这时不能引入公共的组件直接使用了. 需进行修改如下
wxml
使用
wx.getSystemInfoSync()['statusBarHeight']
则能获取到顶部状态栏的高度
,单位为px
.
iPhonex、xr、max等状态栏高度为90px
, 其他小屏iPhone设备为66px
。
<view class='userWrap'><!-- 背景插画 --><view class='userBg'><!-- 导航栏 style='height:{{navH}}px' --><view class='customNav' style='padding-top:{{navH}}px'><view class='nav-title'>我的<image src='/libs/assets/images/goBack.png' mode='aspectFit' class='back' bindtap='navBack'></image></view></view><!-- 内容同样距离顶部状态栏的高度--><view class="headBox" style='padding-top:{{navH}}px'></view></view>
</view>
wxss
.userBg {margin: 0 auto;@include wh(100%, 300rpx);@include bis("背景图片");
}/** 自定义导航栏 */
.customNav {width: 100%;overflow: hidden;position: fixed;top: 0;left: 0;z-index: 10;display: flex;align-items: center;.nav-title {width: 100%;height: 45px;line-height: 45px;text-align: center;position: absolute;bottom: 0;left: 0;z-index: 10;font-family: PingFang-SC-Medium;font-size: 36rpx;color: #fff;letter-spacing: 1px;}.back {width: 20px;height: 20px;position: absolute;bottom: 0;left: 0;top: 50%;transform: translateY(-50%);padding: 0px 30rpx;display: flex;align-self: center;align-items: center;}
}
感谢大神们
参考一
参考二
微信小程序自定义navbar相关推荐
- 微信小程序-自定义NavBar组件
组件化 组件化本身是一个可以讲的很大,也可以浓缩为 封装可复用的,模版组件 基于mvvm的微信小程序当然也支持这一特性,我们做项目的时候也可以把注入公用的header footer之类的封一封(其实工 ...
- 微信小程序自定义导航栏(带汉堡包菜单)
微信小程序自定义导航栏(带汉堡包菜单) 1.在app.json中 window配置navigationStyle (如果单独页面使用,可在页面的json文件配置) 2.计算相关值 整个导航栏的高度: ...
- 微信小程序自定义导航栏 navigation bar 返回键 首页
微信小程序自定义导航栏(wx_custom_navigation_bar) 自定义返回键.首页键,动态设置标题,响应式组件 版本号:2.0.0 作者:chen-yt github: https://g ...
- 微信小程序自定义navigationbar与下拉刷新思考
第一次开发小程序,产品提出要求导航栏字体样式,然后系统的未提供修改的接口. 那么只能自定义导航栏才行呀. 迅速的自定义了一个导航栏 app.json中添加 "navigationStyle& ...
- 微信小程序自定义导航栏返回和标题
1.新建组件 index.json {"component": true } navbar.wxss //navbar.wxss .navbar{width: 100%;//设置导 ...
- (转载)微信小程序自定义头部导航栏
本文转载自微信小程序自定义头部导航栏 微信小程序自定义头部导航栏 先看下demo的效果: 最终要实现的效果: 在tabbar页面不显示左侧按钮: 分享出去的页面进入后不显示左侧返回按钮: 点击返回按钮 ...
- 微信小程序-自定义导航栏
微信小程序-自定义导航栏 第一步 添加属性 "navigationStyle": "custom" 第二步 自定义导航栏 第二步 自定义组件 第四步 使用组件 ...
- 微信小程序自定义导航栏组件
效果图 首先要先在 json文件里加上 "navigationStyle":"custom", 这句,去掉原生的自定义导航栏 一.子组件-wxml <vi ...
- 微信小程序自定义授权弹框
微信小程序自定义授权弹框 最近微信获取用户信息的接口有调整,就是这货:wx.getUserInfo(OBJECT),文档描述如下: 此接口有调整,使用该接口将不再出现授权弹窗,请使用 <butt ...
最新文章
- 刻意练习:Python基础 -- Task12. 模块
- Python 包管理工具解惑
- 微信小程序函数调用监控
- EMS server Tibco
- python自动化数据报告_如何:使用Python将实时数据自动化到您的网站
- 服务器上的Linux中Tomcat有时会挂掉的问题及方法
- 【面向对象】面向对象程序设计测试题8-对象之间one-to-many关系测试题
- (06)VHDL实现计数器
- python资料-大牛分享python资料
- 一张图学会python应用到excel-Python应用之------Excel操作
- c++工程模式+配置文件+动态调用类
- android判断正确密码,Android 监听EditText输入框 ,判断输入的密码是什么格式
- 从纯技术到技术管理,那些跌宕起伏的转型经历
- 软件开发项目管理经验总结
- 关系型数据库和主键外键
- 鼠标右键没有新建选项怎么办
- Linux Stress测压工具安装与使用详解
- php5.6 oracle11,解决ORA-16055: FAL request rejected
- font color=red[置顶]/font
- 数论学习四之——威尔逊定理