wap2app(十)--wap2app 添加原生底部导航,添加原生标题栏,填坑
一、添加原生标题栏
添加原生标题栏可以参照 《wap2app(六)-- wap2app的原生标题头无法隐藏》,具体如下:
1.打开 sitemap.json文件 --> page配置下的"webviewId"为“common”的整个内容配置删除或注释,这时候会页面的原生标题就会出现,是带原生标题、网页标题的双标题页面。
效果:
2.原生标题默认灰色背景,黑色字体,需要根据业务需求进行修改标题样式:
sitemap.json文件 --> global-->webviewParameter 下将 titleNView:false改为如下代码修改全局标题样式:
- "titleNView": {//启用原生导航条
- "backgroundColor": "#fff",//导航栏背景色
- "titleColor": "#333"//标题颜色为黑色
- },
global代码:
- "global": {
- "webviewParameter": {
- "titleNView": {//启用原生导航条
- "backgroundColor": "#fff",//导航栏背景色
- "titleColor": "#333"//标题颜色
- },
- "statusbar": {
- //系统状态栏样式(前景色)
- "style": "dark"
- },
- "appendCss": "",
- "appendJs": ""
- },
- "easyConfig": {
- "quit": {
- "toast": {
- "showFeedback": false //不显示“反馈意见”链接,默认为true
- }
- },
- "open":{
- "animation":{//窗口切换动画配置
- "type":"none"//窗口动画类型
- },
- "waiting":true // 禁用waiting,打开page1页面时,不显示waiting等待框
- }
- }
- },
效果上图,但原生标题是白色背景,黑色字体。
3.由于网页本身是有标题的,还需要在网站中对app的网页标题进行隐藏处理,只显示app的原生标题,具体根据网站的业务逻辑处理,
- if(navigator.userAgent.indexOf("Html5Plus") > -1){
- $("header").css('cssText','display:none !important');
- }
效果如下,对于app中的页面只有原生标题:
另外,global是对全局页面的标题进行样式设置,如果有页面需要单独设置的,可以在page下进行单独配置,例如配置如下页面:
- {
- "webviewId":"myIndex",
- "matchUrls":[
- {
- "href":"http://10.10.10.145/hdsj/trunk/user/feedback"
- }
- ],
- "webviewParameter": {
- "titleNView": {//首页启用原生导航条
- "backgroundColor": "#3478f6",//导航栏背景色
- "titleColor": "#fff",//标题颜色为白色
- "titleText":"我的页面"
- },
- "statusbar": {
- //系统状态栏样式(前景色)
- "style": "dark"
- },
- "appendCss": "",
- "appendJs": ""
- }
- }
修改了标题背景色和字体颜色,效果如下:
二、添加原生底部导航
1.在client_index.html文件中,将如下两行代码的注释取消:
- <!--使用本地选项卡时,将如下两行代码注释取消-->
- <link rel="stylesheet" type="text/css" href="__wap2apptabbar.css" />
- <script src="__wap2apptabbar.js" type="text/javascript" charset="utf-8"></script>
并在当前文件配置选项卡的内容、图标、选中图标:
- var global_url = "xxxx.com";
- new TabBar({
- list: [{
- url: global_url,
- text: "首页",
- iconPath: 'image/bottom/huodong1.png',
- selectedIconPath: 'image/bottom/huodong2.png'
- }, {
- url: global_url + "card/",
- text: "集市",
- iconPath: 'image/bottom/shiji1.png',
- selectedIconPath: 'image/bottom/shiji2.png'
- }, {
- url: global_url + "user/edit_shop",
- text: "名片",
- iconPath: 'image/bottom/mingpian1.png',
- selectedIconPath: 'image/bottom/mingpian2.png'
- }, {
- url: global_url + "user",
- text: "我的",
- iconPath: 'image/bottom/wode1.png',
- selectedIconPath: 'image/bottom/wode2.png'
- }]
- });
默认选项卡选中字体的颜色是红色的,还需要修改样式成需要的颜色:
client_index.html 添加样式:
- .tab-item {
- color: #969696;
- }
- .tab-item.active {
- color: #3478f6;
- }
2.还需要在sitemap.json文件中再配置一下。在首页配置下,添加选项卡的配置:
在sitemap.json -->pages-->webviewParameter 添加配置代码(根据项目业务,添加相关内容)
- "tabBar": {//选项卡配置,仅首页支持
- "height": "50px",//选项卡高度,默认为50px
- "list": [
- {
- "url": "http://x.x.x.x/index/" //tab1页面地址
- }, {
- "url": "http://x.x.x.x/index/find" //tab2页面地址
- }, {
- "url": "http://x.x.x.x/index/cart/" //tab3页面地址
- }, {
- "url": "http://x.x.x.x/index/user" //tab3页面地址
- }
- ]
- }
整个pages的完整配置代码:
- "pages": [
- {
- "webviewId": "__W2A__android.xxx.com",//首页
- "matchUrls": [
- {
- "href": "http://x.x.x.x/index/"
- }, {
- "href": "http://x.x.x.x/index"
- }
- ],
- "webviewParameter": {
- "titleNView": false,
- "statusbar": {
- //状态条背景色,
- //首页不使用原生导航条,颜色值建议和global->webviewParameter->titleNView->backgroundColor颜色值保持一致
- //若首页启用了原生导航条,则建议将首页的statusbar配置为false,这样状态条可以和原生导航条背景色保持一致;
- "background": "#f7f7f7"
- },
- "tabBar": {//选项卡配置,仅首页支持
- "height": "50px",//选项卡高度,默认为50px
- "list": [
- {
- "url": "http://x.x.x.x/index/" //tab1页面地址
- }, {
- "url": "http://x.x.x.x/index/find" //tab2页面地址
- }, {
- "url": "http://x.x.x.x/index/cart/" //tab3页面地址
- }, {
- "url": "http://x.x.x.x/index/user" //tab3页面地址
- }
- ]
- }
- }
- }
- ]
运行之后效果如下:
三、填坑
以上,添加原生头部和原生底部选项卡,本地运行调试都是正常,但是打包之后,下载安装,首次进入(从引导页点击“立即体验”进入项目)时不显示原生头部和原生底部,
引导页点击“点击立即体验”的代码如下:
- document.getElementById("start").addEventListener("tap", function() {
- /**
- * 向本地存储中设置launchFlag的值,即启动标识;
- * http://www.html5plus.org/doc/zh_cn/storage.html#plus.storage.setItem
- */
- plus.storage.setItem("launchFlag", "true");
- mui.openWindow({
- url: "http://x.x.x.x/index",
- id: "main",
- extras: {
- mark: "gudie" //同样,这里也只是个标识,实际开发中并不用;
- }
- });
- });
会发现这里使用mui.openWindow重新打开了首页,这里的首页没有做底部/头部的配置,如果在点击“立即体验”时只关闭引导页的页面而不是重新跳转,即可避免这个问题,解决代码如下:
- document.getElementById("start").addEventListener("tap", function() {
- /**
- * 向本地存储中设置launchFlag的值,即启动标识;
- * http://www.html5plus.org/doc/zh_cn/storage.html#plus.storage.setItem
- */
- plus.storage.setItem("launchFlag", "true");
- plus.webview.currentWebview().close();
- });
其中,
- plus.webview.currentWebview().close();
关闭当前引导页。
添加底部原生选项卡可参考官方地址:http://ask.dcloud.net.cn/article/12878
转载时请注明出处及相应链接,本文永久地址:https://www.cnblogs.com/wangxiaoling/p/10072292.html,文章标题备注转载,如:xxx【转载】,谢谢!
wap2app(十)--wap2app 添加原生底部导航,添加原生标题栏,填坑的更多相关文章
- wap2app(八)-- iphoneX 底部导航的兼容问题
iphoneX 没有home键,用其打开应用时,iphoneX的底部和应用底部导航重叠,不兼容. 解决办法: 打开manifest.json文件,在“plus”下加入以下代码(安全区域): " ...
- 添加底部导航栏tabbar
效果图: 如果要添加底部导航栏,最少2个,最多5个. app.json { "pages": [ "pages/index/index", "page ...
- ionic3 动态设置tabs页面底部导航栏隐藏,并显示输入框添加评论
1.先上原始效果图: 2.完成后效果 2.实现思路: ion ...
- 【前端】Vue2全家桶案例《看漫画》之一、添加四个导航页
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_app_1.html 项目github地址:https://github.com/shamoyuu/ ...
- 《PHP制作个人博客》之四:分类添加及前端导航数据用php动态调取
大家好,今天我们接着上一节的全栈营销个人博客制作,上一节我们把博客的模板给加载运行起来.今天我们主要讲解后台模板分类的添加,后台导航的添加,及前台导航的动态调用.一个好的博客,导航很重要,导航就像你网 ...
- sencha touch 自定义cardpanel控件 模仿改进NavigationView 灵活添加按钮组,导航栏,自由隐藏返回按钮(废弃 仅参考)
最新版本我将会放在:http://www.cnblogs.com/mlzs/p/3382229.html这里的示例里面,这里不会再做更新 代码: /* *模仿且改进NavigationView *返回 ...
- WordPress 添加面包屑导航
所谓面包屑,就是类似这种:首页 > 公司简介 > 发展历史 展示网站树型结构,并让网站访问者随时知道自己所处的位置,方便返回上几级. 将下面的代码添加到主题的 functions.php ...
- 第27讲 UI组件之 ScrollView与底部动态添加数据
第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...
- 原生JS动态添加和删除类
原生JS动态添加和删除类 由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类 添加和和删除类有三种方法 首先等 ...
随机推荐
- Event Loop浅谈
event loop 即事件循环.最初了解到js的event loop机制是通过自己对js中异步.同步的疑惑.今天聊一聊自己的理解,希望和大家一起学习. 首先,让我们看一个经典的setTimeOut的 ...
- 微信小程序内嵌网页的一些(最佳)实践
前言 3 个月前,微信小程序推出了 web-view 组件引发了一波小高潮,笔者所在的大前端团队写过一篇浅析,详情可见:浅谈微信小程序前端生态. 我们曾大胆猜想,这一功能,可能直接导致小程序数量增长迎 ...
- js对象之XMLHttpReques对象学习
背景:业务需求是,一个前端(手机和浏览器)HTML页面中有图片,按钮......,需要统计用户点击图片或者按钮的次数. 前端实现:通过一个js来统计HTML页面中所有的图片和按钮对象,并给每个对象赋予 ...
- Java IO 导入导出Excel表格
1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...
- Google Chrome 书签导出并生成 MHTML 文件
目的 因为某些原因需要将存放在 Google Chrome 内的书签导出到本地,所幸 Google Chrome 提供了导出书签的功能. 分析 首先在 Google Chrome 浏览器当中输入 ch ...
- mysql 架构篇系列 1 复制原理和复制架构
一. 复制概述 mysql 从3.23版本开始提供复制功能,复制是指将主数据库的ddl和dml操作通过二进制日志传到复制服务器(也叫从服务器)上,然后在从服务器上对这些日志重新执行(也叫重做),从而使 ...
- 使用Domain-Driven创建Hypermedia API
在现实中我们会遇到各种各样的复杂场景,"There is not a right way" 用来描述API的设计方法再合适不过了,没有一种API设计方式可以应对所有的场景.区别于& ...
- web进修之—Hibernate 继承映射(5)
先看三个类的继承关系,Payment是父类,CashPayment和CreditCardPayment是Payment的子类: view plaincopy to clipboardprint p ...
- Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理
相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...
- Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录
一. MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...