Uniapp零基础开发学习笔记(4) -顶部导航栏titleNView的制作

2023-11-17

Uniapp零基础开发学习笔记(4) -顶部导航栏titleNView的制作

制作顶部导航栏titleNView的过程。

1.官网上关于顶部导航栏的介绍

https://uniapp.dcloud.net.cn/collocation/pages.html#app-titlenview
其中关于顶部导航栏的介绍中,有如下的说明:

前端组件在渲染速度上不如原生导航栏,原生导航可以在动画期间渲染,保证动画期间不白屏,但使用前端导航栏,在新窗体进入的动画期间可能会整页白屏,越低端的手机越明显。
以上讨论的是前端自定义导航栏,但在App侧,原生导航栏也提供了比小程序导航更丰富的自定义性
titleNView:给原生导航栏提供更多配置,包括自定义按钮、滚动渐变效果、搜索框等,详见titleNView
subNVue:使用nvue原生渲染,所有布局自己开发,具备一切自定义灵活度。详见subNVue
页面禁用原生导航栏后,想要改变状态栏的前景字体样式,仍可设置页面的 navigationBarTextStyle 属性(只能设置为 black或white)。
如果想单独设置状态栏颜色,App端可使用plus.navigator.setStatusBarStyle (opens new window)设置。注意部分低端Android手机(4.4)自身不支持设置状态栏前景色。
鉴于以上问题,在原生导航能解决业务需求的情况下,尽量使用原生导航。甚至有时需要牺牲一些不是很重要的需求。在App和H5下,uni-app提供了灵活的处理方案:titleNView、subNVue、或整页使用nvue。但在小程序下,因为其自身的限制,没有太好的方案。有必要的话,也可以用条件编译分端处理。

根据这个介绍,就是说尽量采用原生的顶部导航栏定义,速度兼容性都会比较好。
将官方的示例代码复制到项目的pages.json中。

2.添加顶部导航栏包括按钮组和搜索框

在pages.json中首页index页面的style中加入顶部导航栏的定义代码,是从官方网站复制来的。
在这里插入图片描述

"app-plus": {
		"titleNView":{
				//搜索框
				//"type": "transparent",//透明渐变导航栏 App-nvue 2.4.4+ 支持
				"searchInput":{
					"align":"center",
					"backgroundColor":"#ccc",
					"borderRadius":"6px",//输入框圆角
					"placeholder":"搜索应用",
					"placeholderColor":"#fff",
					"disabled":false//disable时点击输入框不置焦,可以跳到新页面搜索
				},
				// 左右按钮配置
				"buttons":[
				// 左边按钮
					{
						"color":"#ff9619", // 图标默认展时的颜色
						"colorPressed":"#000", //图标按下的时候的颜色
						"float":"left",
						"fontSize":"30px",//按钮上文字的大小
						"fontSrc":"/static/uni.ttf", //按钮的图片来源
						"text":"\ue500" //按钮的unicode代码
						
					},
				// 右边按钮
					{
						"color":"#000000",
						"colorPressed":"#000",
						"float":"right",
						"fontSize":"30px",//按钮上文字的大小
						"fontSrc":"/static/uni.ttf",
						"text":"\ue100"
					}
				]
				// 返回
					// "backButton": { //自定义 backButton
					// 	"background": "#00FF00"}
		}
	}

按钮的type属性指定为下面列表中除了none之外的,会忽略自定义的属性显示内容。
在这里插入图片描述
比如右边的按钮可以这么定义:

// 右边按钮
{
			"color":"#000000",
			"colorPressed":"#000",
			"float":"right",
		    "fontSize":"30px",//按钮上文字的大小
			// "fontSrc":"/static/uni.ttf",
			// "text":"\ue100",
			"type": "favorite"//使用 type 值设置按钮的样式时,会忽略 fontSrc 和 text 属性	
		}

完成之后的显示效果:
在这里插入图片描述

3.添加响应事件并进行测试

由于这个导航栏放在了首页index.vue,因此要到index.vue中填写事件的响应代码。
有两个事件:
onNavigationBarButtonTap:顶部导航栏按钮被点击
onNavigationBarSearchInputChanged:顶部搜索框输入改变
在这里插入图片描述
按照说明,这两个事件级别与启动监听onload()同级,于是就在index.vue
中的<script></script>标签中的onload()事件下面添加两个事件响应
其中onNavigationBarButtonTap通过返回的e.index判断点击的是哪一个按钮,
index是按钮的序号从0开始,因此0为左,1为右
onNavigationBarSearchInputChanged通过返回的e.text获取输入的搜索字符串

onNavigationBarButtonTap(e) {
			console.log(e)
			
			var buttonName = ""
			if (e.index=="0")buttonName="左";
			else if (e.index=="1")buttonName="右";
			console.log("你点击了"+buttonName+"侧按钮")
		},
		onNavigationBarSearchInputChanged(e) {
			console.log(e)
			console.log("你搜索了"+e.text)
		},

编译后测试,查看响应的记录:
你搜索了taobao at pages/index/index.vue:34
[object] {“text”:“taobao”} at pages/index/index.vue:33
你点击了左侧按钮 at pages/index/index.vue:30
[object] {“color”:“#ff9619”,“colorPressed”:“#000”,“float”:“left”,“fontFamily”:“font1666282223265”,“fontSize”:“30px”…} at pages/index/index.vue:24
你点击了右侧按钮 at pages/index/index.vue:30
[object] {“color”:“#000000”,“colorPressed”:“#000”,“float”:“right”,“fontSize”:“30px”,“fontWeight”:“normal”,“index”:1…} at pages/index/index.vue:24

4.隐藏导航栏

如果页面定义了顶部导航栏又不希望显示,
只需要在pages.json的页面style定义里添加禁止显示的代码即可:

"style": {
		"navigationBarTitleText": "我的",
			"app-plus": {
						"titleNView": false //禁用原生导航栏
							}
		}

顶部导航就不显示了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Uniapp零基础开发学习笔记(4) -顶部导航栏titleNView的制作 的相关文章

随机推荐

  • 在 Dev-C++ 或 Code::Blocks 下面配置 EasyX !

    前言 EasyX 虽然挺好用 但是目前官方只发布了针对 VC 的使用方法 本文介绍如何将 EasyX 配置到 DevCpp 或 CodeBlocks 里面 并提供相关的库 平时我工作忙 有问题直接在后面留言 我会尽力修改 注 版本太老的 m
  • 华为校招机试题-查找重复代码-2023年

    题目描述 小明负责维护项目下的代码 需要查找出重复代码 用以支撑后续的代码优化 请你帮助小明找出重复的代码 重复代码查找方法 以字符串形式给定两行代码 字符串长度 1 lt length lt 100 由英文字母 数字和空格组成 找出两行代
  • mvc:annotation-driven 与 mvc:default-servlet-handler的作用

    本人见解 两个标签需要配合使用 可以很好地处理SpringMVC请求静态资源或者控制器时的选择 静态资源包括图片 jsp css 但是不设置的话访问jsp可以显示 不知原因 下方转发自 https www cnblogs com cyhby
  • 平衡小车学习总结

    1 平衡小车硬件选择 带编码器的直流减速电机 两个 18650电池组 平衡车支架 MPU 6050陀螺仪 stm32f103c8t6 OLED iic通信协议 0 96寸 TB6612 2 硬件准备阶段 根据电路原理 平衡小车电路板 单片机
  • 计算机如何隐藏任务栏的程序,Win7隐藏任务栏

    本文主要介绍了2个方面的内容 1 Win7隐藏任务栏程序 2 隐藏Win7任务栏上图标 不少用户希望把任务栏程序隐藏起来 或者是把Win7任务栏右侧 正在运行的软件的图标隐藏起来 这样其他人就不能直接发现自己电脑上运行的程序了 一 隐藏Wi
  • 机器学习之有监督学习

    监督学习的目标 利用一组带有标签的数据 学习从输入到输出的映射 然后将这种映射关系应用到未知数据上 达到分类或回归的目的 分类 当输出是离散的 学习任务为分类任务 回归 当输出是连续的 学习任务为回归任务 分类学习 输入 一组有标签的训练数
  • python 3.9 Building wheel for opencv-contrib-python (PEP 517)

    问题 python3 9安装airetest 一直卡在 Building wheel for opencv contrib python PEP 517 解决办法 降低opencv contrib python版本先安装opencv con
  • 华为OD机试 -身高排序(Java)

    题目描述 小明今年升学到了小学一年级 来到新班级后 发现其他小朋友身高参差不齐 然后就想基于各小朋友和自己的身高差 对他们进行排序 请帮他实现排序 输入描述 第一行为正整数H和N 0 lt H lt 200 为小明的身高 0 lt N lt
  • 大脚战场插件怎么关闭_魔兽战场插件 capping插件怎么关闭

    魔兽世界怎么取消战场插件 字符选择屏幕的左下角有一个插件选项 单击下面的 战场 并单击以禁用它们 它不在游戏中 死亡模式你是说死后的黑白 如果是 点击游戏界面下方的系统选项 进入视频设置 关闭显示设置中的死亡效果 WOW战场capping插
  • Docker Postgres 安装部署指南1.0

    以下为实验版本 Docker version 18 09 2 Postgres 11 4 内容目录 1 确定需要安装的版本 2 获取指定版本镜像 3 指定数据挂载目录 4 启动Postgres服务 5 创建数据库 用户 5 1 进入容器内部
  • 【前后端】将代码上传到gitee

    文章目录 前台 gitee建立仓库 步骤A 如果是双人 则有步骤B 后台 gitee建立仓库 复制链接 代码拷贝 提交 小记录一波 前台 gitee建立仓库 步骤A 初始化 commit 后面单引号随便写 git init git add
  • VLAN划分及配置注意事项

    VLAN Virtual Local Area Network 即虚拟局域网 是将一个物理的LAN在逻辑上划分成多个广播域的通信技术 VLAN内的主机间可以直接通信 而VLAN间不能直接通信 从而将广播报文限制在一个VLAN内 VLAN之间
  • Spark Streaming VS Flink

    架构对比 运行角色 Spark Streaming 运行时的角色 standalone 模式 主要有 Master 主要负责整体集群资源的管理和应用程序调度 Worker 负责单个节点的资源管理 driver 和 executor 的启动等
  • MT6701磁编码器使用指南,14Bit单圈绝对值,I2C stm32 HAL库读角度,兼容AS5600

    MT6701是麦歌恩 MagnTek 公司的磁性角度传感器芯片 提供14Bit 0 360 单圈绝对角度检测 拥有 ABZ PWM 模拟量 I2C SSI 等多种信息输出方式 还可根据磁场强度的瞬时变化提供非接触式按压检测功能 能够以较低的
  • ENVI 5.3 分类后类别合并

    想把粉色的云层合并到林地 选择 Combine Classes 输出为 白云类别与林地合并
  • iOS支付功能

    文章转载自 https www jianshu com p 8eb14edca8fb 1 简介 iOS支付主要分两类 第三方支付和应用内支付 内购 其中第三方支付包括有 支付宝支付 微信支付 银联支付 百度钱包支付 京东支付等 应用内支付
  • 高性能javascript--算法和流程控制

    for while和do while性能相当 避免使用for in循环 除非遍历一个属性量未知的对象 es5 for in 遍历的对象便不局限于数组 还可以遍历对象 原因 for in每次迭代操作会同时搜索实例或者原型属性 for in 循
  • Linux系统:centos7.2忘记密码怎么办?

    在使用centos系统的时候有时候太久没用忘记登录密码了 这时候该怎么办呢 下面就来教教大家怎么重置root管理员的密码 1 启动系统 在GRUB2引导画面 按E键 编辑引导项 2 删除linux16这一行最后的 rhgb和 quiet参数
  • vue3中如何以函数的形式创建组件并挂载

    在日常开发中 我们可能会遇到一种情况 组件太灵活 且无法预先定义 那么我们就需要能够创建组件的能力 并且能组合到我们现有的界面中 基础API javascript 创建 app component name 组合
  • Uniapp零基础开发学习笔记(4) -顶部导航栏titleNView的制作

    Uniapp零基础开发学习笔记 4 顶部导航栏titleNView的制作 制作顶部导航栏titleNView的过程 1 官网上关于顶部导航栏的介绍 https uniapp dcloud net cn collocation pages h