上一期咱们了解了 小程序底部导航栏 的完成作用,今天一起来了解下怎么设置小程序标题栏

小程序开发实战事例四 | 小程序标题栏怎么设置

根底标题栏

小程序标题栏首要包含回来、标题、保藏、菜单、收起 5 个模块,其中能够调整的部分只要标题和布景色。

别的 IDE上无法展示保藏按钮,假如测试保藏按钮的相关功能 需求运用真机形式调试

小程序开发实战事例四 | 小程序标题栏怎么设置

1、根底特点

咱们能够在 app.json 中标题栏的根底特点进行设置,常用的特点如下:

  • defaultTitle :页面标题
  • titleBarColor :导航栏布景色
  • titleImage :图片标题

app.json(对一切页面收效)

这里别离举例说明「文字标题」和「图片标题」对应的作用:

"window": {
    "defaultTitle": "购物商城",
    "titleBarColor":"#ff4343",
    "titleImage":"https://img2.baidu.com/it/u=417873769,1232851485&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500"
  },

文字标题作用:

小程序开发实战事例四 | 小程序标题栏怎么设置

图片标题作用:

小程序开发实战事例四 | 小程序标题栏怎么设置

留意:

  • titleImage 优先级 > defaultTitle
  • 假如在页面的 json 文件中装备,仅对当时页面收效
  • 页面装备优先级 > app.json
  • 当时页面导航栏布景色无设置的情况下会沿袭上级页面的装备

关于导航栏标题装备可能遇到的问题能够参阅下面的文档:

2、动态款式修正

假如需求对标题的款式进行动态修正,能够通过 my.setNavigationBar 办法完成:

// 设置导航栏前景色。注:frontColor 需求和 backgroundColor 一起设置
my.setNavigationBar({
  frontColor: '#ffffff',
  backgroundColor: '#ff0000',
})
// 设置导航栏标题
my.setNavigationBar({
  title: '当时标题'
})
// 重置导航栏色彩为默许配色
my.setNavigationBar({
  reset: true
})

别的,要留意的是,假如跳转到非 tab /首页的情况且页面栈深度为 1,页面上会呈现 home 图标,如下图:

小程序开发实战事例四 | 小程序标题栏怎么设置

此时咱们能够运用 my.hideBackHome 办法进行躲藏

Page({
  onShow() {
     if(getCurrentPages().length == 1){//判断页面栈深度
        my.hideBackHome();
    }
  },
});

小贴士:

  • 建议在页面 onShow 时调用该办法,避免有闪烁或不收效。
  • 除了 home 图标外,其他的按钮都无法躲藏/去除。

这边汇总了一些关于动态款式修正的问题:

自定义标题栏

由于根底标题许多的特点都无法修正,假如需求标题居中、设置查找框等操作的话,就需求用到自定义标题栏了。

1、特点装备

首先,自定义标题栏需求在对应页面的 .json 文件中装备以下特点:

  • transparentTitle:标题栏通明设置,支持设置 none / always / auto
  • titlePenetrate:是否答应标题栏点击穿透点击后方元素
"window": {
    "defaultTitle": "购物商城",
    "transparentTitle":"always",
    "titlePenetrate":"YES"
  }

none 作用:

小程序开发实战事例四 | 小程序标题栏怎么设置

always 作用:

小程序开发实战事例四 | 小程序标题栏怎么设置

auto 作用:向下拉时会逐步通明

小程序开发实战事例四 | 小程序标题栏怎么设置

2、编写自定义标题栏代码

通明设置完成后,为了不跟回来按钮以及胶囊的方位冲突,咱们需求获取到对应的方位信息,依据方位来确定自定义的模块的方位。

首要是获取标题栏(titleBarHeight)、状态栏(statusBarHeight)以及回来按钮右边的间隔(right)。

小程序开发实战事例四 | 小程序标题栏怎么设置

获取标题栏方位:

Page({
  data: {
    titleBarHeight: 0,//标题栏高度
    statusBarHeight: 0,//状态栏高度
    right: 0,//回来按钮右边间隔
  },
  onLoad(options) {
    const {
      titleBarHeight,
      statusBarHeight,
    } = my.getSystemInfoSync();
    this.setData({
      titleBarHeight,
      statusBarHeight,  
    });
    const{
      backButtonIcon,
    } = my.getLeftButtonsBoundingClientRect();
    this.setData({
      right:backButtonIcon.right
    });
  },
  //点击手机标题栏触发的事件,需求在 index.json 装备 titlePenetrate:"YES"
  onTitleBar(e) {
    my.alert({
      title: '点击了标题栏'
    });
  }
});

在 style 中设置自定义标题栏高度:

需求留意的是,只能在 style 进行动态装备,.css文件不支持动态装备。

<view class="custom-nav" style="height:{{titleBarHeight + statusBarHeight}}px">
  <view class="custom-titleBar" 
        style="height:{{titleBarHeight}}px;padding-top:{{statusBarHeight}}px;padding-left:{{right}}px"
        onTap="onTitleBar" >
    hi,我是自定义标题~
  </view>
</view>

.acss 代码:

.custom-nav {
  background-image: linear-gradient(to bottom, #BC3985, #D15B2C);
}
.custom-titleBar {
  display: flex;
  align-items: center;
  color: white;
  font-size: 16px;
  margin-left: 16px;
}

完成作用:

小程序开发实战事例四 | 小程序标题栏怎么设置

自定义导航栏的常见问题汇总在这里了,大家能够参阅下~:

以上便是关于【小程序标题栏设置】的一切内容了,希望对你有所协助★,:.☆( ̄▽ ̄)/$:.★