跨平台移动APP开发进阶(一):mui开发注意事项

跨平台移动APP开发进阶(一):mui开发注意事项mui开发注意事项MuiHTML5开发框架mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验;这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文;想了解mui更详细的信息,请访问mui官网。DOM结构关于mui页面的dom,你需要知道如下规则:固定栏靠前所谓的固定栏,也就是带有.mui-bar(类选择器)属性的节点,都是基于fixed定位的元

大家好,又见面了,我是你们的朋友全栈君。

mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验;这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文;想了解mui更详细的信息,请访问mui官网。

DOM结构

关于mui页面的dom,你需要知道如下规则:

固定栏靠前

所谓的固定栏,也就是带有.mui-bar(类选择器)属性的节点,都是基于fixed定位的元素;常见组件包括:顶部导航栏(.mui-bar-nav)、底部工具条(.mui-bar-footer)、底部选项卡(.mui-bar-tab);这些元素使用时需遵循一个规则:放在mui-content元素之前,即使是底部工具条和底部选项卡,也要放在.mui-content之前,否则固定栏会遮住部分主内容;

### 一切内容都要包裹在mui-content中

除了固定栏之外,其它内容都要包裹在.mui-content中,否则就有可能被固定栏遮罩,原因:固定栏基于Fixed定位,不受流式布局限制,普通内容依然会从top:0的位置开始布局,这样就会被固定栏遮罩,mui为了解决这个问题,定义了如下css代码:

.mui-bar-nav ~ .mui-content {  

    padding-top: 44px;  

}  

.mui-bar-footer ~ .mui-content {  

    padding-bottom: 44px;  

}  

.mui-bar-tab ~ .mui-content {  

    padding-bottom: 50px;  

}  

你当然可以通过自定义CSS的方式实现如上类似效果,但为了使用简便,

建议将除固定栏之外的所有内容,全部放在.mui-content中

始终为button按钮添加type属性

若button按钮没有type属性,浏览器默认按照type=submit逻辑处理,这样若将没有type的button放在form表单中,点击按钮就会执行form表单提交,页面就会刷新,用户体验极差。

窗口管理

页面初始化:必须执行mui.init方法

mui在页面初始化时,初始化了很多参数配置,比如:按键监听、手势监听等,因此mui页面都必须调用一次mui.init()方法;

页面跳转:抛弃href跳转

当浏览器加载一个新页面时,若页面DOM尚未渲染完毕,页面会先显示空白,然后等DOM渲染完毕后,再显示具体内容,这是WEB浏览器技术无法逾越的体验障碍;为解决这个问题,建议使用

[mui.openWindow方法](http://dcloudio.github.io/mui/javascript/#openwindow)打开一个新的webview,mui会自动监听新页面的loaded事件,若加载完毕,再自动显示新页面;扩展阅读:

hello mui中的无等待窗体切换是如何实现的

提示HTML5的性能体验系列之一 避免切页白屏

页面关闭:勿重复监听backbutton

mui框架自动封装了页面关闭逻辑,若希望自定义返回逻辑(例如编辑页面的返回,需用户确认放弃草稿后再执行返回逻辑),则需要重写mui.back方法,切勿简单通过addEventListener添加backbutton监听,因为addEventListener只会增加新的执行程序,mui默认封装的监听执行逻辑依然会继续执行,因此若仅addEventListener添加用户确认框,则用户即使选择了取消,也会继续关闭窗口。

手势操作

点击:忘记click

快速响应是mobile App实现的重中之重,研究表明,当延迟超过100毫秒,用户就能感受到界面的卡顿,然而手机浏览器的click点击存在300毫秒延迟(至于为何会延迟,及300毫秒的来龙去脉,请自行谷百),mui为了解决这个问题,封装了tap事件,因此在任何点击的时候,请忘记click及onclick操作,统统使用如下代码:

element.addEventListener(‘tap’,function(){  

        //点击响应逻辑  

    });  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138152.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++ 使用system()实现锁定屏幕「建议收藏」

    C++ 使用system()实现锁定屏幕「建议收藏」除了使用函数“LockWorkStation()”实现锁定屏幕,参考:http://www.cnblogs.com/Satu/p/8183081.html此外,也可以使用函数“system()”来实现。IDE:Code::Blocks16.01操作系统:Windows7x641#include<windows.h>23intmain(…

    2022年7月21日
    15
  • Leetcode 差分数组的应用「建议收藏」

    Leetcode 差分数组的应用「建议收藏」题目1解法这个题目普通解法参见这里不过这里面的做法都是nlog(n)的。实际上利用差分数组,这道题目可以有O(n)做法这边简单提一下差分序列,对于一个数组,差分序列的定义是数组中前一个值和后一个值的差值形成的新数组。我们在原数组某个区间加上一个统一的值,正常的做法需要在原数组每个位置去叠加,而体现在差分数组上只需要对区间两端的值进行变化即可,差分数组的prefixsum其实就是原数组。比如原数组为:num=[1,1,1,2,2,3]差分数组为:diff_num=[1,0,0,1,0,

    2022年6月3日
    35
  • 笛卡尔积简单介绍「建议收藏」

    笛卡尔积简单介绍「建议收藏」title:简单介绍笛卡尔积date:2020-10-1320:26:18tags:“离散数学????”categories:“2020/10”简介这个博客参考左孝陵先生的《离散数学》,会尽量简单的讲讲笛卡尔积,能够给大家一个更加具体的认识。什么是序偶要知道什么是序偶,先得弄明白序偶的作用,我觉得序偶就是带顺序的集合,用来表示一些集合表示不了的东西。比如在小学学的直角坐标系上,有两个点,(2,3)和(3,2),点的坐标就是序偶,因为它自带顺序,为什么每次一个点都先读x坐标再读y坐标

    2022年7月11日
    22
  • 股票购买拐点在哪里

    股票购买拐点在哪里 股票购买拐点在哪里   逢低买,当然最好买在拐点。股价始向上的时候。   不过当主力刚开始吸筹时,反复震荡难免,没准还来一个诱空,这时介入心情极坏,毫无成就感,白受折磨。所以第一步,总是等主力先吃饱喝足,他是老大,我是小弟。   等主力吃够了喝足了,他会拉上去一点,最理想的介入点,就是等他洗盘结束时。当股价开始下跌,不必介入,再等,待拐点出现介入。   拐点在哪里呢?黄金分割?神奇数

    2022年6月26日
    31
  • centos7 配置lamp 环境[通俗易懂]

    centos7 配置lamp 环境[通俗易懂]搭建版本版本组合php5.6+apache/2.4.6(centos7)+mysql5.7.24因为新系统不能确认哪些指令已经搭建所以安装前需要确认下是否拥有检测是否已经安装过Vimrpm-qa|grepvim显示出完整的包名:vim-common,vim-enhanced,vim-minimal,vim-filesystem表示安装成功若是缺少Vim包名:则使用命令:比如说:vim-enhanced这个包少了,执行:yum-yinstallvim-enha..

    2022年5月29日
    39
  • swing58_ML2437A

    swing58_ML2437A给定一个长度为 n 的整数序列,初始时序列为 {1,2,…,n−1,n}。序列中的位置从左到右依次标号为 1∼n。我们用 [l,r] 来表示从位置 l 到位置 r 之间(包括两端点)的所有数字构成的子序列。现在要对该序列进行 m 次操作,每次操作选定一个子序列 [l,r],并将该子序列中的所有数字进行翻转。例如,对于现有序列 1 3 2 4 6 5 7,如果某次操作选定翻转子序列为 [3,6],那么经过这次操作后序列变为 1 3 5 6 4 2 7。请你求出经过 m 次操作后的序列。输入格式第

    2022年8月9日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号