律师微信小程序自定义导航栏

来源:律品科技 发布时间:2018-09-20 浏览:125

小程序自定义导航栏开发注意点与参考文档

微信官方设计指导中关于胶囊按钮的描述 由此推测胶囊宽度87pt=116px,设置之后,的确能产生较好的兼容性效果

[2018-07-06]根据测试截图发现微信胶囊宽度应该在96px左右,还有待研究

社区相关Q&A:自定义标题栏高度计算

使用时注意方法与属性版本兼容性

完善之路:

开一个项目采集设备的screenHeight,windowHeight,pixelRatio等信息到一个数据库中

微信提供这样一个数据库便于计算,或者微信优化自定义标题栏(譬如通知栏可以改变颜色但不要算在自定义范围内,给出胶囊宽高到通知栏距离到右侧屏幕边框距离等相关参数)

非自定义导航栏高度怎么计算?

wx.getSystemInfo 和 wx.getSystemInfoSync 获取机器信息

screenHeight - windowHeight 计算标题栏高度

标题栏高度

'iPhone': 64,

'iPhone X': 88,

'android': 68

—— 不完全统计(ip6 , ip5 , ip6p , ipx , 小米mix2 , 小米5等综合了开发工具提供的数据和真机数据)所得

有了这些从网上找到的资料,还有名叫猫圈的小程序的例子。开始代码实现了。

配置

"window": {

"navigationBarBackgroundColor": "#fff",

"navigationBarTextStyle": "black",

"backgroundColor": "#fff",

"navigationStyle": "custom"

},

这里navigationStyle 配置修改之后就只剩一个胶囊按钮,也就意味着所有页面的导航都的自定义实现,你可以选择模版或者组件来开发,这里我是选择用的组件开发。

然后定义导航的各个数值,我是在app。js 里面定义的

title_height: "64",

statusbarHeight: "24",

titleIcon_height: "32",

titleIcon_width: "87",

title_top: "24",

title_text: "xxx", // iphone X + 24

prefix: 24

组件

wxml的代码

{{title_text}}

wxss的代码

.title { width: 100%; background-color: #175dc6; box-sizing: border-box; position: fixed; transform: translateZ(0); z-index: 999990;}

.title_text { text-align: center; font-size: 37rpx; color: #fff; line-height: 44px;}

.title_icon { background-color: #175dc6; position: fixed; top: 54rpx; left: 16rpx; border-radius: 64rpx; box-sizing: border-box; border: 0.5px solid #ebe48e; display: flex;}

.title_icon image { height: 20px; width: 20px; padding-top: 5px; display: inline-block; overflow: hidden;}

.title_icon view { height: 18px; border-left: 1px solid #bfb973; margin-top: 6px;}

.floatL { float: left;}

.title_icon image:nth-of-type(1), .title_icon image:nth-of-type(2) { padding-right: 10px; padding-bottom: 10px; padding-left: 10px;}复制代码

js的代码

const app = getApp();

Component({

properties: {

isShow: { // 是否显示后退按钮

type: String,

value: "1"

},

isIndex: { // 是否主页

type: Boolean,

value: false,

},

title_height: { //

type: String,

value: app.config.title_height,

},

titleIcon_height: {

type: String,

value: app.config.titleIcon_height,

},

titleIcon_width: {

type: String,

value: app.config.titleIcon_width,

},

statusbarHeight: {

type: String,

value: app.config.statusbarHeight,

},

title_top: {

type: String,

value: app.config.title_top,

},

title_text: {

type: String,

value: app.config.title_text,

},

},

methods: {

_goBack: function() {

wx.navigateBack({

delta: 1

});

},

_goHome: function() {

wx.switchTab({

url: "/pages/index/index"

});

}

}

})复制代码

这样组件就写好了 只需要在你每个页面里面用这个组件传不同的值就可以了。

应用

 在首页的wxml应用。

json 文件里面的配置

"navigationBarTitleText": "啦啦啦",

"navigationBarBackgroundColor": "#175dc6",

"usingComponents": {

"header": "/components/layout/header/header"

}复制代码

效果如图

适配上可能会有点问题,希望大神有更好的解决方案,告诉我哟。

作者:Jiyr

来源:https://juejin.im/post/5b7d5f5551882542e32a99c6

联系方式

电话:152-0832-9147

邮箱:105991110@qq.com

Q Q:105991110

地址:成都市人民南路四段27号商鼎国际2栋1单元2705

蜀ICP备18025242号-1

微信联系我们