跨平台移动 APP 开发进阶 (一):mui 开发注意事项
mui
是一个高性能的HTML5
开发框架,从 UI 到效率,都在极力追求原生体验;这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文;想了解mui
更详细的信息,请访问mui
官网。
关于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
代码:
你当然可以通过自定义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方法打开一个新的 webview,mui 会自动监听新页面的 loaded 事件,若加载完毕,再自动显示新页面;
页面关闭:勿重复监听backbutton
mui
框架自动封装了页面关闭逻辑,若希望自定义返回逻辑(例如编辑页面的返回,需用户确认放弃草稿后再执行返回逻辑),则需要重写mui.back
方法,切勿简单通过addEventListener
添加backbutton
监听,因为addEventListener
只会增加新的执行程序,mui 默认封装的监听执行逻辑依然会继续执行,因此若仅addEventListener
添加用户确认框,则用户即使选择了取消,也会继续关闭窗口。
手势操作
点击:忘记 click
快速响应是mobile App
实现的重中之重,研究表明,当延迟超过 100 毫秒,用户就能感受到界面的卡顿,然而手机浏览器的click
点击存在 300 毫秒延迟(至于为何会延迟,及 300 毫秒的来龙去脉,请自行谷百),mui
为了解决这个问题,封装了tap
事件,因此在任何点击的时候,请忘记click
及onclick
操作,统统使用如下代码:
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/be5f6919871660397e72254da】。文章转载请联系作者。
评论