uniapp pages.json介绍及使用

pages.json页面路由,是对uniapp的全局设置,如设置页面路径,页面标题名称,原生导航栏样式,窗口样式等。

配置项

globalStyle

globalStyle设置的是页面默认的窗口表现,也可以说是全局样式,如果在pages里面的style里面没有对页面设置窗口表现的话,默认使用的就是globalStyle的窗口表现样式,主要设置的就是应用的状态栏、导航条、标题、窗口背景色等一系列操作

常用属性

navigationBarBackgroundColor:参数类型:HexColor,默认值:#F8F8F8设置的导航栏的背景颜色,也是状态栏的背景颜色

navigationBarTextStyle:参数类型:String,默认值:black,设置的是导航栏的标题文字颜色,以及状态栏的前景色,只支持设置white和black

navigationBarTitleText:参数类型是:String,设置的是导航栏的标题文字

navigationStyle:参数类型:String,默认值:default,设置的是导航栏的样式,只支持设置default/custom,设置default表示的是使用原生的导航栏,设置custom表示的是取消使用默认的原生导航栏,如果需要使用的话,需要看注意事项:pages.json 页面路由 | uni-app官网

backgroundColor:参数类型:HexColor,默认值:#ffffff,设置的是下拉刷新时显示的窗口背景颜色,它只能在微信小程序有效,其他平台设置这个属性无效

backgroundTextStyle:参数类型:String,默认值:dark,下拉刷新时,loading的样式,只支持设置dark和light

enablePullDownRefresh:参数类型:Boolean,默认值:false,设置此属性表示是否开启下拉刷新

onReachBottomDistance:参数类型:Number,默认值:50,设置的是上拉滚动时触底的事件,通过设置参数,当上拉滚动时,距离页面尾部的距离达到设定的参数时就会触发该事件,通常用于触底时重新从数据库加载数据到页面上显示

更多的属性以及使用介绍见:pages.json 页面路由 | uni-app官网

使用示例

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "首页",
				"navigationBarBackgroundColor": "#09ae1e",
				"navigationBarTextStyle": "white"
			}
		},
		{
			"path" : "pages/index/demo2/demo2"
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "未知页",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#09ae1e"
	},
	"uniIdRouter": {}
}
 页面效果

通过这样的一个示例可以看出来,如果pages里面的style设置了和globalStyle一样的属性,那么style将会覆盖globalStyle的属性,也就是说pages里面的style权重比globalStyle的权重高。

 可以看到我们通过navigationBarBackgroundColor属性进行设置之后状态栏的背景颜色也是跟着一起改变的。

如果设置了"navigationStyle": "custom"属性会发生什么呢?

{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "首页",
				"navigationBarBackgroundColor": "#09ae1e",
				"navigationBarTextStyle": "black",
				"navigationStyle": "custom"
			}
		}

 可以通过这张效果图看到如果我们设置了"navigationStyle": "custom"的话,我们相应的设置导航栏的背景色、标题文字、标题文字颜色等属性都会失效

pages

pages设置的是页面的路径及窗口表现,pages是一个数组,数组中的每一项都是一个对象,这个对象包含的就是我们的一个页面的路径及窗口表现,如果想要一个新建的页面能够显示出来的话就必须再这里添加一个数组项并为其设置页面路径;pages中的属性有:

path:参数类型:String,使用来配置页面路径的

style:参数类型:Object,用来配置具体的窗口表现,其中style中的属性大致和globalStyle相同

needLogin:参数类型:Boolean,默认值是false,用来表示是否需要登录后才能访问此页面

使用示例

"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "首页",
				"navigationBarBackgroundColor": "#09ae1e",
				"navigationBarTextStyle": "black",
				"navigationStyle": "custom"
			}
		}
	]

如果我想要运行demo2页面的话这是是运行不了的,因为pages里面没有注册demo2页面的信息

,我们只需要在pages里面注册demo2页面的信息即可,如:

"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "首页",
				"navigationBarBackgroundColor": "#09ae1e",
				"navigationBarTextStyle": "black",
				"navigationStyle": "custom"
			}
		},{
			"path": "pages/index/demo2/demo2",
			"style": {
				"navigationBarTitleText": "demo2",
			}
		}
	]

如果想要让demo2作为项目首次运行时显示的页面,我们只需要把demo2的注册信息放到数组中的第一项即可,如:

"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/demo2/demo2",
			"style": {
				"navigationBarTitleText": "demo2"
			}
		},{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "首页",
				"navigationBarBackgroundColor": "#09ae1e",
				"navigationBarTextStyle": "black",
				"navigationStyle": "custom"
			}
		}
	]

tabBar

底部导航栏,如果我们的应用时多个tab的应用的话,我们可以通过tabBar设置一级导航栏,以及tab切换时显示的页面

常用属性

color:参数类型:HexColor,tab上的文字默认颜色
selectedColor:参数类型:HexColor,tab选中的时候显示的文字颜色

backgroundColor:参数类型:HexColor,tab的背景颜色

borderStyle:参数类型:String,tabBar的上边框颜色,只支持white和black

list:参数类型:Array,tab的列表,最少要有2个,最多5个

position:参数类型:String,tab显示的位置,可选的值时bottom、top,top值只支持在微信小程序显示

更多的tabBar属性见:pages.json 页面路由 | uni-app官网

 list

接受一个数组值,数组中的每一项都是一个对象

常用属性

pagePath:参数类型:String,点击tab跳转的页面路径,首先得在pages里面注册,且是设置tabBar必填的属性

text:参数类型:String,tab上显示的按钮文字,在App和H5平台是必填的,如果实在不知道放什么字可以放一个没有文字的+号的图标

iconPath:参数类型:String,图标图片路径,图标的大小限制为40kb,且图标的尺寸建议是81px*81px,不能是网络图标,或带字体的图标,如果我们设置了postion的值为top时,这个属性就不起作用了

selectedIconPath:参数类型:String,选中的时候的图标图片路径,要求同上

使用示例

pages.json

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "首页"
			}
		},
		{
			"path" : "pages/classify/classify",
			"style" : 
			{
				"navigationBarTitleText" : "分类"
			}
		},
		{
			"path" : "pages/myInfo/myInfo",
			"style" : 
			{
				"navigationBarTitleText" : "我的"
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	},
	"tabBar": {
		"color": "#ccc",
		"backgroundColor": "#fffdf3",
		"selectedColor": "##00d064",
		"list": [
			{
				"pagePath": "pages/index/index",
				"iconPath": "static/images/tabBar/home.png",
				"selectedIconPath": "static/images/tabBar/home-h.png",
				"text": "首页"
			},
			{
				"pagePath": "pages/classify/classify",
				"iconPath": "static/images/tabBar/classify.png",
				"selectedIconPath": "static/images/tabBar/classify-h.png",
				"text": "分类"
			},
			{
				"pagePath": "pages/myInfo/myInfo",
				"iconPath": "static/images/tabBar/user.png",
				"selectedIconPath": "static/images/tabBar/user-h.png",
				"text": "我的"
			}
		]
	},
	"uniIdRouter": {}
}
页面效果

切换tab效果 

 

加上postion属性值为top后的页面效果

"position": "top",

 

可以看到设置了postion值为top时,我们设置的图标图标就不会起作用了

<think>好的,我现在需要帮助用户解决在UniApppages.json文件中同时设置navigationBarTitleText和导航栏背景图片的问题。首先,我得回顾一下用户提供的引用内容,确保解决方案符合他们的实际情况。 用户提到了引用[2],指出在pages.json中修改导航栏颜色无效,这可能是因为版本更新导致的。另外,引用[3]中提到在app-plus的titleNView里配置自定义图标和背景图片。这说明在HBuilderX的不同版本中,配置方式可能有所变化,可能需要使用特定于平台的配置。 首先,用户想要同时设置标题和背景图片。根据UniApp的文档,navigationBarTitleText是全局或页面样式的常规配置项,可以直接在style里设置。而导航栏背景图片可能需要更高级的配置,比如在app-plus平台下的titleNView中设置。 接下来,我需要确认如何正确设置背景图片。在引用[3]的例子中,背景是通过backgroundImage属性设置的,但例子中使用的是颜色值#2E74EE,而不是图片路径。这可能是一个笔误,或者用户需要知道如何替换为图片路径。正确的做法应该是将backgroundImage的值设为图片的路径,如"/static/nav_bg.png"。 同时,用户可能需要区分不同平台的配置,因为H5和App(iOS/Android)可能有不同的设置方式。例如,在H5中,导航栏的背景图片可能需要使用CSS或者特定的H5配置项,而在App端则使用titleNView。需要检查是否需要在不同平台下分别配置,或者是否有全局配置可用。 另外,用户需要注意图片路径的正确性。引用[3]提到,H5需要绝对路径,如以/开头,而App可能支持相对路径。因此,在设置backgroundImage时,应使用绝对路径以确保所有平台都能正确加载图片。 还需要考虑版本兼容性问题。用户提到引用[2]中按老师的方法修改无效,可能因为新版本的UniApp要求更明确的平台配置,或者某些配置项的位置发生了变化。因此,解决方案需要基于最新的UniApp文档或社区推荐的方法。 最后,整合这些信息,给出一个具体的配置示例,确保同时设置标题和背景图片,并且分平台处理,特别是针对App和H5的可能差异。同时提醒用户检查图片路径和平台配置,避免常见错误。</think>在 UniApp 的 `pages.json` 中同时设置导航栏标题和背景图片,需要通过**分平台配置**实现。以下是具体实现步骤: ### 1. 基础标题配置 在页面 `style` 中直接设置通用属性: ```json { "path": "pages/demo/demo", "style": { "navigationBarTitleText": "我的页面", // 标题文字 "app-plus": { "titleNView": { "backgroundImage": "/static/nav_bg.png", // APP端背景图 "titleSize": "16px" // 标题字号 } } } } ``` ### 2. 多平台适配方案 #### 方案一:APP+H5 兼容写法 ```json { "path": "pages/demo/demo", "style": { "navigationBarTitleText": "我的页面", "app-plus": { "titleNView": { "backgroundImage": "/static/nav_bg.png", "titleColor": "#FFFFFF" // 确保标题可见 } }, "h5": { "titleNView": { "backgroundImage": "url(/static/nav_bg.png)", "textStyle": { "color": "#FFFFFF" } } } } } ``` #### 方案二:条件编译(推荐) ```json { "path": "pages/demo/demo", "style": { "navigationBarTitleText": "我的页面", // APP 专用配置 "app-plus": { "titleNView": { "backgroundImage": "/static/nav_bg_app.png", "titleColor": "#FFFFFF" } }, // H5 专用配置 "h5": { "navigationBarTextStyle": "white", // 强制设置标题颜色[^3] "navigationBarBackgroundColor": "transparent", "navigationStyle": "custom", // 启用自定义导航栏 "backgroundColor": "transparent" } } } ``` ### 关键注意事项: 1. **路径规范**: - APP 端:`/` 开头的绝对路径(如 `/static/img.png`) - H5 端:需要 `url()` 包裹路径(如 `url(/static/img.png)`) 2. **颜色对比**: 当使用深色背景图时,建议通过 `titleColor/textStyle.color` 设置白色标题: ```json "titleColor": "#FFFFFF" // APP端 "textStyle": { "color": "#FFFFFF" } // H5端 ``` 3. **H5适配要点**: - 需要额外设置 `navigationStyle: "custom"` 激活自定义样式 - 通过 `navigationBarBackgroundColor: "transparent"` 隐藏默认背景色 ### 调试建议: 1. 使用 Chrome 开发者工具审查 H5 端导航栏 DOM 结构 2. 在真机上测试 APP 端效果,模拟器可能渲染不准确 3. 检查控制台是否有图片加载错误提示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值