跨平台移动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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用手机当电脑摄像头的方法有哪些_电脑摄像头可以连接手机吗

    用手机当电脑摄像头的方法有哪些_电脑摄像头可以连接手机吗原文链接:https://cry33.com/archives/295.html有时我们的台式机需要用到摄像头,然而很多台式机并没有摄像头。莫非要花钱买一个?其实大可不必,一部智能手机和一款软件即可

    2022年8月5日
    7
  • JDK8默认垃圾回收器详解[通俗易懂]

    JDK8默认垃圾回收器详解[通俗易懂]今天面试问道JDK8默认使用的垃圾收集器是什么,然后回来第一时间CMD命令查看了一下:java-XX:+PrintCommandLineFlags-version-XX:InitialHeapSize=266390080-XX:MaxHeapSize=4262241280-XX:+PrintCommandLineFlags-XX:+UseCompressedClassPointe…

    2022年10月11日
    5
  • 在毕设中学习02——numpy多维数组的切片,形态变化,维度交换

    在毕设中学习02——numpy多维数组的切片,形态变化,维度交换2022.5.21文章目录关于matplotlib.pyplotcv2工具python课本学习构建三维数组,并按照指定维度输出生成一组随机数,摆放为指定矩阵形式Python中range(start,stop,步长)生成指定范围,指定步长的一组数多维数组切片——过滤信息多维矩阵的维度顺序变换多维矩阵的切片多维矩阵的形态变化关于matplotlib.pyplotcv2工具两篇博客的学习文献学习python课本学习构建三维数组,并按照指定维度输出import numpy as np#a=np.

    2022年8月11日
    6
  • WiFi的2.4G、5G、6G频段「建议收藏」

    WiFi的2.4G、5G、6G频段「建议收藏」目前WiFi已经推出了6G频段,Android源码中也增加了相关的功能,这里总结一下。2.4G一共分为14个信道(1-14),从2412到2484,每个信道的有效宽度是20MHz,另外还有2MHz的强制隔离频带(类似于公路上的隔离带)。即,对于中心频率为2412MHz的1信道,其频率范围为2401~2423MHz。5G一共有60个信道(32-173),从5160到5865,在中国支持的5G信道为363840444648525456606264,后六个是DFS。6G为1-2

    2022年10月20日
    5
  • 计算机病毒的算法,计算机病毒从算法划分为几个类型

    计算机病毒的算法,计算机病毒从算法划分为几个类型随着计算机应用的日益普及,计算机病毒也开始入侵并呈不断蔓延趋势,对计算机的正常运行造成了威胁。那么,计算机病毒从算法划分为几个类型那?就让佰佰安全网的小编和你一起去了解一下吧!计算机病毒从算法划分为以下几个类型:1、伴随型病毒,这一类病毒并不改变文件本身,它们根据算法产生EXE文件的伴随体,具有同样的名字和不同的扩展名(COM),例如:XCOPY.EXE的伴随体是XCOPY.COM。病毒把自身写入…

    2022年6月6日
    32
  • mysql数据库存储过程讲解与实例分析_数据库存储过程的优点

    mysql数据库存储过程讲解与实例分析_数据库存储过程的优点存储过程简介SQL语句需要先编译然后执行,而存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过…

    2025年7月31日
    3

发表回复

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

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