uniapp导航栏开发指南

本文虽长,但值得看完。可避免开发中的很多坑

uni-app自带原生导航栏,在pages.json里配置。原生导航的体验更好,渲染新页面时,原生导航栏的渲染无需等待新页面dom加载,可以在新页面进入动画开始时就渲染。

原生导航还可以避免滚动条通顶,并方便的控制原生下拉刷新。通过pages.json的配置,可以简单的、跨端的、高性能的开发业务。

支持通过如下方法取消单独一个页面的原生导航栏。但小程序右上角胶囊按钮仍然去不掉。页面配置navigationStyle为custom:

App因为默认为沉浸式,去除导航栏后,页面顶部会直通到状态栏的区域,可能出现如下需求:

以下为示例:

页面监听代码如下:

exportdefault{data(){return{}},onNavigationBarButtonTap(){console.log("点击了自定义按钮");}}pages.json配置如下:

{"path":"pages/log/log","style":{"navigationBarTitleText":"hello","app-plus":{"titleNView":{"buttons":[{"text":"\ue534","fontSrc":"/static/uni.ttf","fontSize":"22px"}]}}}}buttons的text推荐使用字体图标。如果按钮使用的汉字或英文较长,推荐把字体改小一点,或者调节按钮宽度等值。配置button的背景颜色为透明:background:'rgba(0,0,0,0)'

以上代码在hellouni-app的模板-顶部导航标题栏中有示例。

{"path":"nav-city-dropdown/nav-city-dropdown","style":{"navigationBarTitleText":"导航栏带城市选择","app-plus":{"titleNView":{"buttons":[{"text":"北京市","fontSize":"14","select":true,"width":"auto"}]}}}}以上代码在hellouni-app的模板-顶部导航标题栏中有示例。

原生导航栏还支持透明渐变效果,页面刚载入时没有导航标题,页面内容通顶到状态栏里,页面向下滚动后标题栏渐变出现。

透明渐变的导航栏的button图标有一个默认的灰色背景圈,防止背景图和按钮前景颜色相同导致按钮无法看清。如果要去掉这个灰色背景图,可以配置button的背景颜色为透明:background:'rgba(0,0,0,0)'

titleNView新版配置可以直接配图片,还支持Gif图。但这里提供一个黑科技写法,通过在titleNView里配置tags,可以实现导航栏绘制图片的效果:

nvue其实是weex上补充了uni的api。uni-app支持使用nvue页面,也就是weex原生引擎,绘制顶部的原生导航栏。在hellouni-app的API-界面示例中,有subnvue示例,里面顶部导航栏是渐变色的,这就是subnvue的原生导航栏。

在pages.json的配置如下:

{"path":"subnvue/subnvue","style":{"app-plus":{"titleNView":false,"subNVues":[{"id":"nav","path":"subnvue/subnvue/nav","type":"navigationBar"}]}}}更新:从HBuilderX2.6.3起,titleNView直接支持了背景图、渐变色,不再需要通过subnvue的方式了。而且性能比subnvue更好。

注意:从HBuilderX1.9.10起提供了subnvue,比使用plus.nativeObj.view自定义原生导航栏更加方便。详见上一节。

不管是全局取消原生导航栏,还是在App下某个页面取消原生导航,如果还想自己绘制一些个性化的title,往往会使用view组件。尤其是App的首页,顶部经常有各种特殊设置,此时需要自己使用前端技术来绘制导航。

导航栏应该是由状态栏和标题栏构成,状态栏的高度为var(--status-bar-height)此变量为uni-app框架提供仅在在css生效,标题栏的高度设为88px,整个状态栏的高度应为:calc(var(--status-bar-height)+88px)(upx主要针对宽度,高度无所谓还可以使用px)

.title-contents{height:calc(var(--status-bar-height)+88px);}.status{height:var(--status-bar-height);}.titles{height:88px;}状态栏和标题栏都应固定在页面顶部,需设置position:fixed,标题栏的top应为状态栏的高度

.top-view{width:100%;position:fixed;top:0;}.titles{top:var(--status-bar-height);}绘制的返回箭头需要绑定点击事件,返回上一个页面

methods:{backButton(){uni.navigateBack()}}以下为导航栏组件的部分代码

Ps:若页面不需要标题栏,只需一个状态栏的view占位,那么只需在页面添加一个view即可不需要引入外部组件以免影响性能。

取消原生导航栏后,自己使用HTML自定义组件模拟导航栏,会有很多性能体验问题:

有个高频场景是App“首页”的title自定义,如果实现的效果很个性化,那么使用plus.nativeObj.view的方案会过于复杂,由于首页并不存在新页面进入立即渲染的压力,所以App首页如果要大幅定制,推荐使用前端view绘制,而不是使用plus.nativeObj.view。

如果把自定义导航封装成组件,虽然多个页面引入方便,但性能下降,因为这种自定义组件的加载是晚于页面基本元素的,会导致新页面进入动画时无法渲染title。所以导航条这种要求在动画期渲染的东西,尽量不要使用自定义组件方式。

在hellouni-app示例中有各种导航栏的源码。在扩展ui中有前端自定义导航栏。在模板中有各种原生的导航栏。大多数情况复制这些代码就够了。

DCloud即数字天堂(北京)网络技术有限公司是W3C成员及HTML5中国产业联盟发起单位

THE END
1.uniapp切片uni-app 是一个使用Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台。一套代码编到7个平台,难以置信吗?依次扫描7个二维码,亲自体验最全面的跨平台效果! uni-app切片是一款根据效果图像画画一样来可视化设计uni-app程序,自动生成导出前端页面的快速开发工具。可以很https://blog.csdn.net/cddxwfl1/article/details/93883393
2.uniapp开发小程序的完整流程记录vue.js本文详细介绍了使用uni-app进行项目开发的全过程,包括uni-app框架的介绍、开发工具HBuilderX的下载安装与配置、项目开发中的网络请求配置、小程序分包加载、自定义组件使用、组件使用技巧等,还提及了解决开发中遇到的一些问题,需要的朋友可以参考下+ 目录 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你https://www.jb51.net/javascript/329973542.htm
3.uni15.5 uni.getStorageSync(KEY) 15.6 uni.removeStorageSync(KEY) 十六、图片的上传和预览 16.1 上传 一、介绍 如果是刚入门小程序的,又或者刚听到这个名词的人,可能跟我之前一样,带着诸多的疑惑。比如: 什么是uniapp?它和原生微信小程序有什么异同之处? http://51969.com/post/158022.html
4.uniapp入门到实战以项目为导向掌握完整开发流程微信生态的各种SDK可直接用于跨平台App。 学习成本低 基于通用的前端技术栈,采用Vue语法和微信小程序API,无额外学习成本。 开发成本低 招聘、管理、测试各方面的成本都大幅下降。 HBuilderX是高效开发神器,熟练掌握后研发效率至少翻倍。uni-app的功能框架如图1.1所示。图https://localsite.baidu.com/article-detail.html?articleId=100248950&ucid=n1D4rHDvrjm&categoryLv1=%E6%95%99%E8%82%B2%E5%9F%B9%E8%AE%AD&ch=54&srcid=10007&contentFrom=3
5.好看的uniapp页面设计demouniapp创建页面【零基础学会uniapp】第五课:添加新的页面 5、 添加新的页面 page,并且使用命令进行跳转 在HBuilderX中新建一个页面,新建页面的步骤: 可直接从项目上右键或者从某个文件夹上面右键,选择新建页面 输入项目名称和项目使用的模板 选择是否在pages.json中进行注册,注意:所有需要单独显示的页面,都必须在这里进行注册,否https://blog.51cto.com/u_16213709/11627350
6.uniAPP入门:从零开始的跨平台应用开发指南跨平台性:uni-APP 使得开发者只需编写一次代码,即可在多个平台上运行应用,极大地提升了开发效率。 组件丰富:框架内置了大量预定义组件,涵盖了常见的用户界面设计需求,有助于减少开发复杂度。 社区与支持:uni-APP 拥有活跃的开发者社区,丰富的文档资源,以及官方提供的一系列支持服务,为开发者构建稳定、高效的应用提供https://www.imooc.com/article/350863
7.设计理念uView2.0全面兼容nvue的uniuView UI,是 uni-app 生态最优秀的 UI 框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水https://uviewui.com/guide/design.html
8.免费微信小程序投票系统(Uni【免费】微信小程序投票系统(Uni-App+SpringBoot+Vue3)【Java毕业设计】下载 【免费】微信小程序投票系统(Uni-App+SpringBoot+Vue3)【Java毕业设计】下载 视频功能演示: 相关截图:http://www.java1234.com/a/bysj/javaweb/2024/0518/25335.html
9.app平台uniapp项目云端打包环境uni# HBuilderX4.41设计云端打包环境XCode: 16.1 iOS SDK: 18.1 pod仓库:https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git 帮助我们改善此页面! 上次更新: 2024/12/7 19:51:12开发产品 HBuilderXuni-appuni-app xuniClouduniMPsdk5+Runtimewap2appMUIuni-iduni-cdnuni-payuni-pushuni一键登陆https://zh.uniapp.dcloud.io/tutorial/app-env.html
10.uniapp页面布局比如:若设计稿宽度为 750px,元素 A 在设计稿上的宽度为 100px,那么元素 A 在uni-app里面的宽度应该设为:750 * 100 / 750,结果为:100rpx。 Tips 注意rpx 是和宽度相关的单位,屏幕越宽,该值实际像素越大。如不想根据屏幕宽度缩放,则应该使用 px 单位。 https://www.jianshu.com/p/6c9e3d6339df
11.uniapp中间加号点击弹窗怎么实现?完整教程选择“uni-app项目”,填写项目名称、项目路径等信息,然后点击“创建”。 三、设计界面 在pages/index/index.vue文件中,我们需要设计一个包含中间加号的界面。可以使用Flex布局来居中显示加号图标。 <template><view class="container"><view class="plus-icon" @click="showPopup"><text class="icon">+</text>https://developer.aliyun.com/article/1510405
12.Bootstrap单页动画Html5WebApp设计工具UniApp可视化DIY官网做好的拖拽式可视化设计工具,提供最微信小程序设计、Bootstrap页面设计、单页动画设计、WebApp可视化设计、代码生成器及导出工具,app低代码工具,低代码开发生成源码,一键生成app源码,app可视化开发,app制作,手机app,app软件,app开发,助力900万UniApp开发者http://www.diygw.com/
13.南昌网站建设南昌APP开发南昌小程序开发百恒网络,15年专注于网站建设、APP开发、微信小程序开发、软件定制开发等服务.以品质为导向,为客户用心定制行业互联网解决方案。咨询热线:400-680-9298。https://www.jxbh.cn/
14.首页uniapp是一款基于 uni-app-x 跨平台应用开发引擎的低代码高性能原生UI框架 简单高效、丰富便捷、炫酷giao炸、无与伦比! 开始使用 简单高效 我们提供了友好和高效的功能特性,能够让开发者快速上手,通过简单的配置和调用实现所需的功能。同时具备高效的性能,能够快速响应用户输入和操作,提供流畅的用户体验。 https://www.uxframe.cn/
15.uniappTypeScript支持,Uniuni-app框架下TypeScript语法,vue 使用 typescript ref中的方法,uniapp 使用typescript 运行小程序 uniapp实例教程,uniapp实战教程,uni-app在线免费视频教程|计算机毕业设计,计算机毕业论文开题报告,毕设作品网http://www.2d5.net/pc_jiaocheng_tushu_index.php?/1/1200.html
16.浅谈轻应用平台FinClip与移动应用开发平台mPaaS换句话说,除非小程序本身就基于 uni-app 进行设计,否则依然无法通过 mPaaS 将小程序迁移在基于 mPaaS 设计的移动应用之中。如果你想在已有的 App 中集成小程序,mPaaS 也无法兼容已有的微信小程序。 经过mPaaS 编译的小程序,可以调试输出为微信格式的小程序,还能够在 FinClip IDE 中完成编译与预览,这也再一次说明https://cloud.tencent.com/developer/article/1932566