uni-app设置全局属性globalStyle

本文详细介绍uni-app中globalStyle的使用方法,包括导航栏、窗口背景色等样式配置,适用于不同平台如小程序、H5和APP。文章还提供了解决颜色取值问题的软件推荐。

uni-app修炼之路(五)

参考官方文档:https://uniapp.dcloud.io/collocation/pages

应用的状态栏、导航条、标题、窗口背景色等这些公共的样式一般情况下都会写在globalStyle里面。这样页面就无需进行单独的配置了。

属性类型默认值描述平台差异说明
navigationBarBackgroundColorHexColor#F7F7F7导航栏背景颜色(同状态栏背景色)APP与H5为#F7F7F7,小程序平台请参考相应小程序文档
navigationBarTextStyleStringwhite导航栏标题颜色及状态栏前景颜色,仅支持 black/white
navigationBarTitleTextString导航栏标题文字内容
navigationStyleStringdefault导航栏样式,仅支持 default/custom。custom即取消默认的原生导航栏,需看使用注意微信小程序 7.0+、百度小程序、H5、App(2.0.3+)
backgroundColorHexColor#ffffff下拉显示出来的窗口的背景色微信小程序
backgroundTextStyleStringdark下拉 loading 的样式,仅支持 dark / light微信小程序
enablePullDownRefreshBooleanfalse是否开启下拉刷新,详见页面生命周期。
onReachBottomDistanceNumber50页面上拉触底事件触发时距页面底部距离,单位只支持px,详见页面生命周期
backgroundColorTopHexColor#ffffff顶部窗口的背景色(bounce回弹区域)仅 iOS 平台
backgroundColorBottomHexColor#ffffff底部窗口的背景色(bounce回弹区域)仅 iOS 平台
titleImageString导航栏图片地址(替换当前文字标题),支付宝小程序内必须使用https的图片链接地址 支付宝小程序、H5、APP
transparentTitleStringnone导航栏整体(前景、背景)透明设置。支持 always 一直透明 / auto 滑动自适应 / none 不透明支付宝小程序、H5、APP
titlePenetrateStringNO导航栏点击穿透支付宝小程序、H5
pageOrientationStringportrait横屏配置,屏幕旋转设置,仅支持 auto / portrait / landscape 详见 响应显示区域变化App 2.4.7+、微信小程序
animationTypeStringpop-in窗口显示的动画效果,详见:窗口动画App
animationDurationNumber300窗口显示动画的持续时间,单位为 msApp
app-plusObject设置编译到 App 平台的特定样式,配置项参考下方 app-plusApp
h5Object设置编译到 H5 平台的特定样式,配置项参考下方 H5H5
mp-alipayObject设置编译到 mp-alipay 平台的特定样式,配置项参考下方 MP-ALIPAY支付宝小程序
mp-weixinObject设置编译到 mp-weixin 平台的特定样式微信小程序
mp-baiduObject设置编译到 mp-baidu 平台的特定样式百度小程序
mp-toutiaoObject设置编译到 mp-toutiao 平台的特定样式字节跳动小程序
mp-qqObject设置编译到 mp-qq 平台的特定样式QQ小程序
usingComponentsObject引用小程序组件,参考 小程序组件
renderingModeString同层渲染,webrtc(实时音视频) 无法正常时尝试配置 seperated 强制关掉同层微信小程序

注意
支付宝小程序使用titleImage时必须使用https的图片链接地址,需要真机调试才能看到效果,支付宝开发者工具内无效果
globalStyle中设置的titleImage也会覆盖掉pages->style内的设置文字标题

page中声明的style是要优先于globalStyle的。
例如下面的pages.json中,在globalStyle中我们设置的"navigationBarTitleText": "社交app",但是在index页面我们的"navigationBarTitleText": "uni-app",所以最终在index页面的导航栏标题为uni-app。

pages.json:

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "uni-app"
			}
		}
	    ,{
            "path" : "pages/ceshi/ceshi",
            "style" : {}
        }
    ],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "社交app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	}
}

在globalStyle中我们经常遇到设置颜色取色的问题,有时候我们看到一个比较好看的颜色,我们想拿过来用,那么首先需要知道他的值,这里推荐使用colos lite这个软件,安装包下载链接:https://pan.baidu.com/s/16AkiaHU1mGPsIwm9aeQdrA
提取码:ihwt
在这里插入图片描述

<think>嗯,用户想知道如何在uni-app中使用globalStyle来配置自定义导航栏的样式和功能。首先,我得回忆一下uni-app的文档和相关资料。记得globalStyle是在pages.json里进行全局配置的,可以设置导航栏的背景颜色、标题文字颜色这些基本样式。 根据引用里的信息,比如引用[2]和引用[3],自定义导航栏需要把navigationStyle设为"custom",这样系统默认的导航栏就不会显示了。这样之后,开发者就可以自己写组件来实现导航栏,比如添加搜索框或者定位功能。不过要注意,设置navigationStyle为custom后,标题和按钮之类的原生组件就失效了,得完全自己处理。 然后,globalStyle里的其他属性比如navigationBarBackgroundColor是设置背景颜色的,navigationBarTextStyle是文字颜色,只能是black或white。这些配置会影响所有页面的导航栏,除非个别页面单独覆盖。比如在某个页面的style里重新设置,就可以覆盖全局的配置,如引用[3]里的例子。 还有,用户可能需要添加定位或者搜索功能,这部分应该是在自定义的导航栏组件里实现的。比如引用[2]里提到的城市定位和搜索框,可能需要调用uni-app的API获取位置信息,或者自己写输入框组件。同时,如果是要修改tabBar的样式,尤其是中间凸起的效果,可能需要用midButton配置,但引用[5]提到小程序不支持midButton,所以可能需要其他方法,比如在页面底部添加一个绝对定位的按钮,覆盖在tabBar上面。 另外,要注意不同平台的兼容性。比如navigationStyle在H5和小程序的表现可能不同,需要测试。还有,自定义导航栏的高度需要动态获取状态栏的高度,引用[3]里的system_info.js可能用到了uni.getSystemInfoSync来获取状态栏信息,调整布局。 总结一下步骤:首先在globalStyle设置navigationStyle为custom,然后配置其他样式属性,接着在页面里使用自定义组件替代原生的导航栏,处理相关功能和样式适配。可能还需要处理不同平台的差异,确保功能正常。</think>### 如何在uni-app中通过`globalStyle`配置自定义导航栏? #### 步骤1:配置`globalStyle`基础属性 在`pages.json`的`globalStyle`字段中定义导航栏基础样式: ```json "globalStyle": { "navigationBarTextStyle": "black", // 标题文字颜色(仅支持black/white) "navigationBarTitleText": "我的应用", // 默认标题文字 "navigationBarBackgroundColor": "#FFFFFF", // 导航栏背景颜色 "navigationStyle": "custom" // 关键配置:启用自定义导航栏[^2][^3] } ``` #### 步骤2:自定义导航栏组件开发 1. **创建组件**:新建`custom-navbar.vue`组件 2. **动态适配**:通过`uni.getSystemInfoSync()`获取状态栏高度: ```javascript const systemInfo = uni.getSystemInfoSync() const statusBarHeight = systemInfo.statusBarHeight + 'px' ``` 3. **布局示例**(带定位和搜索功能): ```html <view :style="{paddingTop: statusBarHeight}"> <view class="nav-content"> <text @click="getLocation">{{ city }}</text> <input placeholder="搜索内容" @confirm="handleSearch"/> </view> </view> ``` #### 步骤3:全局使用自定义导航栏 在页面中引入组件并覆盖原生导航栏空间: ```html <template> <view> <custom-navbar /> <view class="content" :style="{marginTop: navHeight}"> <!-- 页面内容 --> </view> </view> </template> ``` #### 关键注意事项 1. **平台差异**:小程序需在页面级单独设置`"navigationStyle": "custom"` 2. **样式覆盖**:单个页面可通过`pages.json`的`style`字段覆盖全局配置[^4] 3. **功能扩展**:需自行实现返回按钮、标题动态更新等功能 $$navTotalHeight = statusBarHeight + navigationBarHeight$$ 其中标准导航栏高度一般为44px(iOS)/48px(Android)[^3]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值