网站客服:zx81024163 |

微信小程序——自定义顶部菜单navigationBar方式(可详细了!)

2023-12-06 05:00:43发布    浏览892次    信息编号:86846

友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。

微信小程序——自定义顶部菜单navigationBar方式(可详细了!)

前言:

在开发过程中,设计师也想出了奇思妙想。 他把小程序顶部的默认菜单改成了自己认为好看的样式,还改变了返回图标的样式,添加了返回首页、收藏夹什么的各种按钮,甚至还改了胶囊按钮全部改了~~~,好吧,我们就按照设计师的审美去改吧(胶囊按钮除外)(这篇文章文字量比较多,因为我把每一步都分得很详细,都写下来了,望客官方精品,用心产品)

要点总结:(帮助童鞋更好理解)

默认情况下,小程序占据手机顶部区域。 小程序页面内容的显示区域从底部开始,如下图。 红框圈出的是小程序的默认区域,下面灰色的是页面区域。

无法修改小程序的默认样式,例如返回按钮、标题样式。 尽管无法修改它们,但可以隐藏默认值。 通过在app.json的属性中设置:"",可以隐藏默认的。 隐藏(解决方案中有详细解释)

编写一个通用的顶部导航组件。 这个组件完全是我们自己控制的,然后我们就可以根据设计妹子的图来写布局和风格了。

引用页面中的导航组件,自定义顶部导航就完成了。

Notch 兼容调试。 我们定制的顶部导航在有刘海的手机中需要进行一些特殊的处理,否则刘海区域会遮挡导航区域(解决方案中有图片有证据)

不用了~~~,完成了!

老套路,重要解决来了↓

解决方案:

通过上面的概述,我们已经了解了小程序和页面的默认区域。 因为默认是无法修改的,所以我们首先要做的就是通过app.json中的属性来隐藏小程序的默认设置:“”,只需要在属性中保留以下两个属性即可。 le是控制右侧胶囊按钮的颜色。 您只能设置黑色/白色两个可选值。 如果不需要修改,则不需要le(注:只能在app.json中设置,并且对全局所有小程序页面生效,不能在单独的页面中设置)

{
  "pages": [
    "pages/index/index",
    "pages/test/index"
  ],
  "window": {
    "navigationBarTextStyle": "black",
	"navigationStyle":"custom"
  },
  "sitemapLocation": "sitemap.json"
}

设置好之后,我们来看看现在的小程序是什么样子的:

整个页面区域在手机上全屏显示(提示:童鞋们也发现了为什么右边的胶囊按钮没有隐藏~~是的,这个胶囊按钮无法修改或隐藏)

让我们开发一个头部组件。 在这个组件中,我们根据设计图的效果来编写布局样式。 在H5中,如果我们要开发一个顶部公共导航栏,通常我们会将顶部导航栏区域的css样式设置为:fixed;,只需将导航栏定位并浮动在浏览器顶部即可。 我们也是利用这个思路来开发小程序的。 开发通用组件的目的是为了能够在所有页面中引用一套统一的代码,这样以后需要维护和修改的时候也方便。 您还可以在不同页面引用不同的自定义顶部导航,以满足您自己的需求。

<view class="head">
	我是自定义的顶部导航
view>

.head{
	position: fixed;
	width: 100%;
	height: 30px;  //高度设置为30是因为胶囊按钮的高度就是固定的30px,所以咱们也设置成30px
	line-height: 30px;
	background: #fff;
	top: 0;
	left: 0;
}

Component({
	data: {}
})

{
  "component": true
}

{
  "pages": [
    "pages/index/index",
    "pages/test/index"
  ],
  "window": {
    "navigationBarTextStyle": "black",
	"navigationStyle":"custom"
  },
  "usingComponents":{
	  "head": "../../components/head/index"
  },
  "sitemapLocation": "sitemap.json"
}

一切都准备好了,只需要参考。 我们现在可以在页面中引用我们刚刚开发的 head 组件。 app.json中声明的名称是head,所以我们引用的时候也需要使用head,即名称可以自定义,但是引用必须一致


<head>head>

<view>
	页面内容
view>

我们先看一下目前小程序的代码布局:

head——index.js代码

Component({
	data: {
		paddingTopNum: wx.getSystemInfoSync().statusBarHeight+7  //这里为啥要+7,是因为小程序的胶囊按钮距离手机浏览器之间还有7个像素的间距,所以是为了让导航能够和胶囊按钮齐平
	}
})

head——index.wxml代码

<view class="head" style="padding-top: {{paddingTopNum}}px;">
	我是自定义的顶部导航
view>

我们看一下现在的效果:

现在有刘海的和无刘海的都有了,而且都可以与胶囊按钮齐平,这样我们的顶部导航兼容就基本完成了。

测试——index.wxml代码


<head>head>

<view class="page" style="padding-top: {{pageTopHeight}}px;">
	页面内容
view>

测试——index.js代码

Page({
  data: {
	pageTopHeight: wx.getSystemInfoSync().statusBarHeight+30+7
  },
})

我们再看一下当前页面效果:

兼职做完了,键盘坏了……你就完了! 页面上的建议也可以放在app.js中,这样以后如果有变化,直接改这个地方就可以了。

总结:

我把所有的步骤都写出来了,大家可以按照我的步骤从上到下一步步练习。 你一定能掌握它!

↓请在下面给我点个赞——写代码不容易~谢谢客官

提醒:请联系我时一定说明是从星空网上看到的!