Uniapp 自定义导航栏 自定义头部组件

        Uniapp的默认首页头部是一个导航栏,里面包括了一个图标和一个标题,这个导航栏的样式是根据Uniapp的主题颜色进行设置的。虽然这个默认导航栏看起来不错,但是有时候我们需要自定义导航栏的样式,或者在导航栏上加入更多的元素。

  一. 在page.json文件中修改配置

  • navigationStyle修改为custom 开启自定义属性
  • { 
      "navigationStyle": "custom"  
    }
    

二.Uniapp官方自定义导航栏

        uni-nav-bar 自定义导航栏

  • 基本用法
    • <uni-nav-bar title="导航栏组件"></uni-nav-bar>
      
属性名类型默认值说明
titleString-标题文字
leftTextString-左侧按钮文本
rightTextString-右侧按钮文本
leftIconString-左侧按钮图标(图标类型参考 Icon 图标 type 属性)
rightIconString-右侧按钮图标(图标类型参考 Icon 图标 type 属性)
colorString#000000图标和文字颜色
backgroundColorString#FFFFFF导航栏背景颜色
fixedBooleanfalse是否固定顶部
statusBarBooleanfalse是否包含状态栏
shadowBooleanfalse导航栏下是否有阴影
borderBooleantrue导航栏下是否有边框
heightNumber/String44导航栏高度
darkBooleanfalse导航栏开启暗黑模式
leftWidthNumber/String120rpx导航栏左侧插槽宽度
rightWidthNumber/String120rpx导航栏右侧插槽宽度
statBoolean/String120rpx是否开启统计标题功能。注意:只有使用title 属性 ,且开启了统计功能才生效

三.自定义组件

        小程序默认的头部可以选择背景,title 文字和颜色(颜色只支持黑白)。这时候可以自己编写一个自定义顶部导航组件,更加灵活高效。

	<!-- 状态栏高度 -->
	<view style="height: {{statusBarHeight}}px"></view>
	<!-- 标题栏高度 -->
	<view class='nav' style="height: {{toBarHeight}}px;"> 
    	<van-icon class="image" name="arrow-left" bindtap="backClick"/>
		<text style="height: {{toBarHeight}}px;line-height: {{toBarHeight}}px">配网中 
    </text>
	</view>

手机状态栏的高度

 // 手机状态栏的高度
 let sysinfo = wx.getSystemInfoSync();

 样式

 .box {
  background: #FFF;
  font-weight: 500;
  width: 100%;
  position: fixed;
  top: 0;
  right: 0;
  z-index: 999;
}
 
.nav {
  width: 100%;
  font-size: 34rpx;
}
 
.nav .image {
  font-size: 40rpx; 
  font-weight: bold;
  margin-top: 26rpx;
  float: left;
  margin-left: 15rpx;
}
 
.nav text {
  float: left;
  margin-left: 30rpx;
} 

 

### 修改 `uni-nav-bar` 组件文字字体大小 为了调整 `uni-nav-bar` 组件固定顶部时的文字字体大小,可以通过自定义样式来实现。以下是具体的解决方案: #### 方法一:通过 CSS 覆盖默认样式 可以在项目的全局样式文件(通常是 `App.vue` 或者单独的 `.css` 文件)中覆盖 `uni-nav-bar` 的默认样式。 ```css /* App.vue */ .navBar .uni-navbar__header-container-inner { font-size: 18px !important; } ``` 这段代码将应用于所有使用该类名的地方,并强制设置导航栏内文本的字体大小为 18 像素[^1]。 #### 方法二:局部样式修改 如果只想针对特定页面应用不同的字体大小,则可以直接在对应页面的 `<style>` 标签里添加如下样式: ```html <template> <view class="navBar"> <navbar :title="taskName" :autoBack="false" titleStyle="font-weight: bold; font-size: 20px;" leftIconSize="20px" @leftClick="backPage"/> </view> </template> <style scoped> .navBar >>> .uni-navbar__header-container-inner { font-size: 20px !important; } </style> ``` 这里不仅设置了固定的字体大小,还利用了深嵌套选择器 (`>>>`) 来穿透作用域限制,确保样式能够正确生效于子组件内部元素[^2]。 #### 方法三:直接修改组件源码 对于更深入的需求,可以考虑克隆并修改官方仓库中的 `uni-nav-bar` 组件源码,增加一个属性用于控制字体大小。不过这种方法不推荐,因为这会影响后续更新以及维护成本。 ```javascript // 在组件 script 中新增 prop 定义 props: { fontSize: { type: String, default: '16px' } } // 使用时传递参数 <uni-nav-bar :fontSize="'24px'"></uni-nav-bar> ``` 这种方式虽然灵活度高,但是增加了复杂性和潜在的风险[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值