ylbtech-DCloud-MUI:文档 UI组件 |
1.返回顶部 |
<ul class="mui-table-view"> <li class="mui-table-view-cell mui-collapse"> <a class="mui-navigate-right" href="#">面板1</a> <div class="mui-collapse-content"> <p>面板1子内容</p> </div> </li> </ul>
能够在折叠面板中放置任何内容;折叠面板默认收缩,若但愿某个面板默认展开,只须要在包含.mui-collapse
类的li
节点上,增长.mui-active
类便可;mui官网中的方法说明,使用的就是折叠面板控件。javascript
actionsheet通常从底部弹出,显示一系列可供用户选择的操做按钮; actionsheet是从popover控件基础上演变而来,实际上就是一个固定从底部弹出的popover,故DOM结构和popove相似,只是须要在含.mui-popover类的节点上增长.mui-popover-bottom、.mui-popover-action类;css
<div id="sheet1" class="mui-popover mui-popover-bottom mui-popover-action "> <!-- 可选择菜单 --> <ul class="mui-table-view"> <li class="mui-table-view-cell"> <a href="#">菜单1</a> </li> <li class="mui-table-view-cell"> <a href="#">菜单2</a> </li> </ul> <!-- 取消菜单 --> <ul class="mui-table-view"> <li class="mui-table-view-cell"> <a href="#sheet1"><b>取消</b></a> </li> </ul> </div>
和popover同样,推荐使用锚点方式显示、隐藏actionsheet;若要使用js代码动态显示、隐藏actionsheet,一样在popover插件的构造方法中传入"toggle"参数便可,以下:html
//传入toggle参数,用户无需关心当前是显示仍是隐藏状态,mui会自动识别处理; mui('#sheet1').popover('toggle');
badge(数字角标)html5
数字角标通常和其它控件(列表、9宫格、选项卡等)配合使用,用于进行数量提示。 角标的核心类是.mui-badge,默认为实心灰色背景;同时,mui还内置了蓝色(blue)、绿色(green)、黄色(yellow)、红色(red)、紫色(purple)五种色系的数字角标,以下:java
<span class="mui-badge">1</span> <span class="mui-badge mui-badge-primary">12</span> <span class="mui-badge mui-badge-success">123</span> <span class="mui-badge mui-badge-warning">3</span> <span class="mui-badge mui-badge-danger">45</span> <span class="mui-badge mui-badge-purple">456</span>
.mui-badge-inverted
类便可,以下:
<span class="mui-badge mui-badge-inverted">1</span> <span class="mui-badge mui-badge-primary mui-badge-inverted">2</span> <span class="mui-badge mui-badge-success mui-badge-inverted">3</span> <span class="mui-badge mui-badge-warning mui-badge-inverted">4</span> <span class="mui-badge mui-badge-danger mui-badge-inverted">5</span> <span class="mui-badge mui-badge-royal mui-badge-inverted">6</span>
mui默认按钮为灰色,另外还提供了蓝色(blue)、绿色(green)、黄色(yellow)、红色(red)、紫色(purple)五种色系的按钮,五种色系对应五种场景,分别为primary、success、warning、danger、royal;使用.mui-btn类便可生成一个默认按钮,继续添加.mui-btn-颜色值或.mui-btn-场景可生成对应色系的按钮,例如:经过.mui-btn-blue或.mui-btn-primary都可生成蓝色按钮;web
普通按钮
在button节点上增长.mui-btn类,便可生成默认按钮;若须要其余颜色的按钮,则继续增长对应class便可,好比.mui-btn-blue便可变成蓝色按钮ajax
<button type="button" class="mui-btn">默认</button> <button type="button" class="mui-btn mui-btn-primary">蓝色</button> <button type="button" class="mui-btn mui-btn-success">绿色</button> <button type="button" class="mui-btn mui-btn-warning">黄色</button> <button type="button" class="mui-btn mui-btn-danger">红色</button> <button type="button" class="mui-btn mui-btn-royal">紫色</button>
默认按钮有底色,运行效果以下:chrome
若但愿无底色、有边框的按钮,仅需增长.mui-btn-outlined
类便可,代码以下:canvas
<button type="button" class="mui-btn mui-btn-outlined">默认</button> <button type="button" class="mui-btn mui-btn-primary mui-btn-outlined">蓝色</button> <button type="button" class="mui-btn mui-btn-success mui-btn-outlined">绿色</button> <button type="button" class="mui-btn mui-btn-warning mui-btn-outlined">黄色</button> <button type="button" class="mui-btn mui-btn-danger mui-btn-outlined">红色</button> <button type="button" class="mui-btn mui-btn-royal mui-btn-outlined">紫色</button>
运行效果以下:数组
加载中按钮
mui v3.4 版新增长载中按钮样式,目前提供经过 JS API 切换 loading和reset状态,能够灵活操做适应多种场景
快速体验:
加载中按钮支持修改 loading状态的文案、显示的icon和icon的位置,以下:
属性名 | 做用 |
---|---|
data-loading-text |
loading 状态显示的文案,默认为: loading |
data-loading-icon |
loading 状态显示的icon,默认为mui-spinner 或mui-spinner mui-spinner-white (根据按钮样式自动识别),为空表示不使用icon |
data-loading-icon-position |
loading 状态显示的icon的位置,支持left/right默认left |
<button type="button" data-loading-icon="mui-spinner mui-spinner-custom" class="mui-btn mui-btn-primary">确认</button>
<button type="button" data-loading-text="提交中" class="mui-btn">确认</button>
<button type="button" data-loading-icon-position="right" class="mui-btn">确认</button>
JS API
mui(btnElem).button('loading');//切换为loading状态
mui(btnElem).button('reset');//切换为reset状态(即重置为原始的button)
<button type="button" data-loading-icon="mui-spinner mui-spinner-custom" class="mui-btn mui-btn-primary">确认</button> <script type="text/javascript"> mui(document.body).on('tap', '.mui-btn', function(e) { mui(this).button('loading'); setTimeout(function() { mui(this).button('reset'); }.bind(this), 2000); }); </script>
卡片视图经常使用于展示一段完整独立的信息,好比一篇文章的预览图、做者信息、点赞数量等,以下是一个卡片demo示例;
<div class="mui-card"> <!--页眉,放置标题--> <div class="mui-card-header">页眉</div> <!--内容区--> <div class="mui-card-content">内容区</div> <!--页脚,放置补充信息或支持的操做--> <div class="mui-card-footer">页脚</div> </div>
卡片页眉及内容区,均支持放置图片; 页眉放置图片的话,须要在.mui-card-header
节点上增长.mui-card-media
类,而后设置一张图片作背景图便可,代码以下:
<div class="mui-card-header mui-card-media" style="height:40vw;background-image:url(../images/cbd.jpg)"></div>
若但愿在页眉放置更丰富的信息,好比头像、主标题、副标题,则需使用.mui-media-body
类,示例代码以下:
<div class="mui-card-header mui-card-media"> <img src="../images/logo.png" /> <div class="mui-media-body"> 小M <p>发表于 2016-06-30 15:30</p> </div> </div>
2.返回顶部 |
checkbox经常使用于多选的状况,好比批量删除、添加群聊等;
DOM结构
<div class="mui-input-row mui-checkbox"> <label>checkbox示例</label> <input name="checkbox1" value="Item 1" type="checkbox" checked> </div>
默认checkbox在右侧显示,若但愿在左侧显示,只需增长.mui-left
类便可,以下:
<div class="mui-input-row mui-checkbox mui-left"> <label>checkbox左侧显示示例</label> <input name="checkbox1" value="Item 1" type="checkbox"> </div>
建立并显示对话框,弹出的对话框为非阻塞模式,用户点击对话框上的按钮后关闭( h5模式的对话框也可经过 closepopup关闭 ),并经过callback函数返回用户点击按钮的索引值或输入框中的值。
Dialog 组件包含:
组件名 | 做用 | 快速体验 | |
---|---|---|---|
alert | ![]() |
警告框 | 警告框 |
confirm | ![]() |
确认框 | 确认框 |
prompt | ![]() |
输入对话框 | 输入对话框 |
toast | ![]() |
消息提示框 | 自动消失提示框 |
mui会根据ua
判断,弹出原生对话框仍是h5绘制的对话框,在基座中默认会弹出原生对话框,能够配置type属性,使得弹出h5模式对话框
二者区别:1.原生对话框能够跨webview,2.h5对话框样式统一并且能够修改对话框属性或样式
mui v3.0 版本(含)以上的dialog控件支持换行(\n)显示
若是有定制对话框样式的需求( 只能修改h5模式对话框)能够在mui.css中修改.mui-popup
类下的样式
若是须要修改DOM
结构能够按照如下方式处理.
//修改弹出框默认input类型为password mui.prompt('text','deftext','title',['true','false'],null,'div') document.querySelector('.mui-popup-input input').type='password'
'String' - 消息框显示的文字内容
{JSON} - 提示消息的参数
参数 | 说明 | 说明 |
---|---|---|
duration | 持续显示时间,默认值 short (2000ms) |
支持 整数值 和 String , String可选: long (3500ms),short (2000ms) |
type | 强制使用mui消息框(div模式) | 'div' |
mui.toast('登录成功',{ duration:'long', type:'div' })
图片轮播继承自slide插件,所以其DOM结构、事件均和slide插件相同;
DOM结构
默认不支持循环播放,DOM结构以下:
<div class="mui-slider"> <div class="mui-slider-group"> <div class="mui-slider-item"><a href="#"><img src="1.jpg" /></a></div> <div class="mui-slider-item"><a href="#"><img src="2.jpg" /></a></div> <div class="mui-slider-item"><a href="#"><img src="3.jpg" /></a></div> <div class="mui-slider-item"><a href="#"><img src="4.jpg" /></a></div> </div> </div>
假设当前图片轮播中有一、二、三、4四张图片,从第1张图片起,依次向左滑动切换图片,当切换到第4张图片时,继续向左滑动,接下来会有两种效果:
当显示第1张图片时,继续右滑是否显示第4张图片,是一样问题;这个问题的实现须要经过.mui-slider-loop
类及DOM节点来控制;
若要支持循环,则须要在.mui-slider-group
节点上增长.mui-slider-loop
类,同时须要重复增长2张图片,图片顺序变为:四、一、二、三、四、1,代码示例以下:
<div class="mui-slider"> <div class="mui-slider-group mui-slider-loop"> <!--支持循环,须要重复图片节点--> <div class="mui-slider-item mui-slider-item-duplicate"><a href="#"><img src="4.jpg" /></a></div> <div class="mui-slider-item"><a href="#"><img src="1.jpg" /></a></div> <div class="mui-slider-item"><a href="#"><img src="2.jpg" /></a></div> <div class="mui-slider-item"><a href="#"><img src="3.jpg" /></a></div> <div class="mui-slider-item"><a href="#"><img src="4.jpg" /></a></div> <!--支持循环,须要重复图片节点--> <div class="mui-slider-item mui-slider-item-duplicate"><a href="#"><img src="1.jpg" /></a></div> </div> </div>
mui框架内置了图片轮播插件,经过该插件封装的JS API,用户能够设定是否自动轮播及轮播周期,以下为代码示例:
//得到slider插件对象 var gallery = mui('.mui-slider'); gallery.slider({ interval:5000//自动轮播周期,若为0则不自动播放,默认为0; });
所以若但愿图片轮播不要自动播放,而是用户手动滑动才切换,只须要经过如上方法,将interval参数设为0便可。
若要跳转到第x张图片,则可使用图片轮播插件的gotoItem方法,例如:
//得到slider插件对象 var gallery = mui('.mui-slider'); gallery.slider().gotoItem(index);//跳转到第index张图片,index从0开始;
注意:mui框架会默认初始化当前页面的图片轮播组件;若轮播组件内容为js动态生成时(好比经过ajax动态获取的营销信息),则须要在动态生成完整DOM (包含mui-slider
下全部DOM结构) 后,手动调用图片轮播的初始化方法;代码以下:
//得到slider插件对象 var gallery = mui('.mui-slider'); gallery.slider({ interval:5000//自动轮播周期,若为0则不自动播放,默认为0; });
栅格系统简介:
MUI 提供了很是简单实用的12列响应式栅格系统。使用时只需在外围容器上添加.mui-row,在列上添加 .mui-col-[sm|xs]-[1-12],便可
栅格参数:
尺寸 | 超小屏幕(<400px)(Extrasmall) | 小屏幕(≥400px) Small |
---|---|---|
类前缀 | .mui-col-xs-[1-12] |
.mui-col-sm-[1-12] |
列(column)数 | 12 | |
可嵌套 | 是 |
实例:
左侧:经过定义.mui-col-sm-6类在大屏(≥400px)设备上会展示为并排的两列,而.mui-col-xs-12在小屏(<400px)设备上会覆盖以前定义的类展示为水平排列
<div class="mui-content"> <div class="mui-row"> <div class="mui-col-sm-6 mui-col-xs-12"> <li class="mui-table-view-cell"> <a class="mui-navigate-right"> Item 1 </a> </li> </div> <div class="mui-col-sm-6 mui-col-xs-12"> <li class="mui-table-view-cell"> <a class="mui-navigate-right"> Item 1 </a> </li> </div> </div> </div>
实例:多余的列将会另起一行排列
左侧:若是在一个.mui-row内包含的列(column)大于12个,包含多余列(column)的元素将做为一个总体单元被另起一行排列。
右侧:若是不足12个列将不会撑满整个.mui-row容器
<div class="mui-content"> <div class="mui-row"> <div class="mui-col-sm-8"> <li class="mui-table-view-cell"> <a class="mui-navigate-right"> Item 1 </a> </li> </div> <div class="mui-col-sm-6"> <li class="mui-table-view-cell"> <a class="mui-navigate-right"> Item 1 </a> </li> </div> </div> </div>
实例:经过为列设置padding 属性,从而建立列与列之间的间隔
两列之间白色区域为左侧列的padding
<div class="mui-content"> <div class="mui-row"> <div class="mui-col-sm-6" style="padding-right: 20px;"> <li class="mui-table-view-cell"> <a class="mui-navigate-right"> Item 1 </a> </li> </div> <div class="mui-col-sm-6"> <li class="mui-table-view-cell"> <a class="mui-navigate-right"> Item 1 </a> </li> </div> </div> </div>
mui默认提供了手机App开发经常使用的字体图标,以下:(点击icon便可复制样式)
使用时,只须要在span节点上分别增长.mui-icon、.mui-icon-name两个类便可(name为图标名称,例如:weixin、weibo等),以下代码便可显示一个微信图标:
<span class="mui-icon mui-icon-weixin"></span>
3.返回顶部 |
基本说明:
全部包裹在.mui-input-row 类中的 input、textarea等元素都将被默认设置宽度属性为width: 100%; 。 将 label 元素和上述控件控件包裹在.mui-input-group中能够得到最好的排列。
<form class="mui-input-group"> <div class="mui-input-row"> <label>用户名</label> <input type="text" class="mui-input-clear" placeholder="请输入用户名"> </div> <div class="mui-input-row"> <label>密码</label> <input type="password" class="mui-input-password" placeholder="请输入密码"> </div> <div class="mui-button-row"> <button type="button" class="mui-btn mui-btn-primary" >确认</button> <button type="button" class="mui-btn mui-btn-danger" >取消</button> </div> </form>
输入加强:
mui目前提供的输入加强包括:快速删除、语音输入*5+ only和密码框显示隐藏密码。
快速删除:只须要在input控件上添加.mui-input-clear类,当input 控件中有内容时,右侧会有一个删除图标,点击会清空当前input的内容;
<form class="mui-input-group"> <div class="mui-input-row"> <label>快速删除</label> <input type="text" class="mui-input-clear" placeholder="请输入内容"> </div> </form>
搜索框:在.mui-input-row同级添加.mui-input-search 类,就可使用search控件
<div class="mui-input-row mui-search"> <input type="search" class="mui-input-clear" placeholder=""> </div>
语音输入*5+ only:为了方便快速输入,mui集成了 HTML5+的语音输入,只须要在对应input控件上添加.mui-input-speech
类,就能够在5+环境下使用语音输入
密码框:给input元素添加.mui-input-password
类便可使用
<form class="mui-input-group"> <div class="mui-input-row"> <label>密码框</label> <input type="password" class="mui-input-password" placeholder="请输入密码"> </div> </form>
初始化:
mui在mui.init()中会自动初始化基本控件,可是 动态添加的Input组件须要从新进行初始化
打开chrome控制台运行下面这段代码,赋予☝️此密码框生命力😀
mui('.mui-input-row input').input();
示例:
验证表单是否为空
<div class="mui-input-group"> <div class="mui-input-row"> <label>用户名:</label> <input type="text" class="mui-input-clear" placeholder="请输入用户名"> </div> <div class="mui-input-row"> <label>密码:</label> <input type="password" class="mui-input-clear mui-input-password" placeholder="请输入密码"> </div> </div>
提交时校验三个字段均不能为空,若为空则提醒并终止业务逻辑运行,使用each()
方法循环校验,以下:
mui("#input_example input").each(function() { //若当前input为空,则alert提醒 if(!this.value || this.value.trim() == "") { var label = this.previousElementSibling; mui.alert(label.innerText + "不容许为空"); check = false; return false; } }); //校验经过,继续执行业务逻辑 if(check){ mui.alert('验证经过!') }
扩展阅读
注:始终为button按钮添加type属性,若button按钮没有type属性,浏览器默认按照type="submit"逻辑处理, 这样若将没有type的button放在form表单中,点击按钮就会执行form表单提交,页面就会刷新,用户体验极差。
使用Native.js实现打开页面默认弹出软键盘
普通列表
列表是经常使用的UI控件,mui封装的列表组件比较简单,只须要在ul节点上添加.mui-table-view类、在li节点上添加.mui-table-view-cell类便可,以下为示例代码
<ul class="mui-table-view"> <li class="mui-table-view-cell">Item 1</li> <li class="mui-table-view-cell">Item 2</li> <li class="mui-table-view-cell">Item 3</li> </ul>
自定义列表高亮颜色
点击列表,对应列表项显示灰色高亮,若想自定义高亮颜色,只须要重写.mui-table-view-cell.mui-active便可,以下:
/*点击变蓝色高亮*/ .mui-table-view-cell.mui-active{ background-color: #0062CC; }
右侧添加导航箭头
若右侧须要增长导航箭头,变成导航连接,则只需在li节点下增长a子节点,并为该a节点增长.mui-navigate-right类便可,以下:
<ul class="mui-table-view"> <li class="mui-table-view-cell"> <a class="mui-navigate-right">Item 1</a> </li> <li class="mui-table-view-cell"> <a class="mui-navigate-right">Item 2</a> </li> <li class="mui-table-view-cell"> <a class="mui-navigate-right">Item 3</a> </li> </ul>
右侧添加数字角标等控件
mui支持将数字角标、按钮、开关等控件放在列表中;mui默认将数字角标放在列表右侧显示,代码以下:
<ul class="mui-table-view"> <li class="mui-table-view-cell">Item 1 <span class="mui-badge mui-badge-primary">11</span> </li> <li class="mui-table-view-cell">Item 2 <span class="mui-badge mui-badge-success">22</span> </li> <li class="mui-table-view-cell">Item 3 <span class="mui-badge">33</span> </li> </ul>
media list(图文列表)
图文列表继承自列表组件,主要添加了.mui-media、.mui-media-object、.mui-media-body、.mui-pull-left/right几个类,以下为示例代码
<ul class="mui-table-view"> <li class="mui-table-view-cell mui-media"> <a href="javascript:;"> <img class="mui-media-object mui-pull-left" src="../images/shuijiao.jpg"> <div class="mui-media-body"> 幸福 <p class='mui-ellipsis'>能和心爱的人一块儿睡觉,是件幸福的事情;但是,打呼噜怎么办?</p> </div> </a> </li> <li class="mui-table-view-cell mui-media"> <a href="javascript:;"> <img class="mui-media-object mui-pull-left" src="../images/muwu.jpg"> <div class="mui-media-body"> 木屋 <p class='mui-ellipsis'>想要这样一间小木屋,夏天挫冰吃瓜,冬天围炉取暖.</p> </div> </a> </li> <li class="mui-table-view-cell mui-media"> <a href="javascript:;"> <img class="mui-media-object mui-pull-left" src="../images/cbd.jpg"> <div class="mui-media-body"> CBD <p class='mui-ellipsis'>烤炉模式的城,到黄昏,如同打翻的调色盘通常.</p> </div> </a> </li> </ul>
在popover、侧滑菜单等界面,常常会用到蒙版遮罩;好比popover弹出后,除popover控件外的其它区域都会遮罩一层蒙版,用户点击蒙版不会触发蒙版下方的逻辑,而会关闭popover同时关闭蒙版;再好比侧滑菜单界面,菜单划出后,除侧滑菜单以外的其它区域都会遮罩一层蒙版,用户点击蒙版会关闭侧滑菜单同时关闭蒙版。
遮罩蒙版经常使用的操做包括:建立、显示、关闭,以下代码:
var mask = mui.createMask(callback);//callback为用户点击蒙版时自动执行的回调; mask.show();//显示遮罩 mask.close();//关闭遮罩
注意:关闭遮罩仅会关闭,不会销毁;关闭以后能够再次调用mask.show();
打开遮罩;
mui默认的蒙版遮罩使用.mui-backdrop
类定义(以下代码),若需自定义遮罩效果,只需覆盖定义.mui-backdrop
便可;
.mui-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 998; background-color: rgba(0,0,0,.3); }
mui提供了数字输入框控件,可直接输入数字,也能够点击“+”、“-”按钮变换当前数值;默认numbox控件dom结构比较简单,以下:
<div class="mui-numbox"> <!-- "-"按钮,点击可减少当前数值 --> <button class="mui-btn mui-numbox-btn-minus" type="button">-</button> <input class="mui-numbox-input" type="number" /> <!-- "+"按钮,点击可增大当前数值 --> <button class="mui-btn mui-numbox-btn-plus" type="button">+</button> </div>
可经过data-numbox*
自定义属性设置数字输入框的参数,以下:
属性名 | 做用 |
---|---|
data-numbox-min | 输入框容许使用的最小值,默认无限制 |
data-numbox-max | 输入框容许使用的最大值,默认无限制 |
data-numbox-step | 每次点击“+”、“-”按钮变化的步长,默认步长为1 |
示例:设置取值范围为0~100,每次变化步长为10,则代码以下
<div class="mui-numbox" data-numbox-step='10' data-numbox-min='0' data-numbox-max='100'> <button class="mui-btn mui-numbox-btn-minus" type="button">-</button> <input class="mui-numbox-input" type="number" /> <button class="mui-btn mui-numbox-btn-plus" type="button">+</button> </div>
方法名 | 做用 | 示例 |
---|---|---|
getValue() |
获取当前值 | getValue() |
setValue(Value) |
动态设置新值 Int |
setValue(Value) |
setOption(options) |
更新选项,可取值: min(Int) ,step(Int) ,max(Int) |
setOption(options) |
示例: getValue()
mui(Selector).numbox().getValue()
示例: setValue()
mui(Selector).numbox().setValue(5)
mui(Selector).numbox().setOption('step',5)
mui在mui.init()中会自动初始化基本控件,可是 动态添加的Numbox组件须要手动初始化
mui(Selector).numbox()
可接收小数点的数字输入框 NumberBox
代码块激活字符:
mui提供了两种侧滑导航实现:webview模式和div模式,两种模式各有优劣,适用于不一样的场景。
主页面和菜单内容在不一样的webview中,两个页面根据内容需求分别组织DOM结构,mui对其DOM结构无特殊要求,故其有以下优势:
另外一方面,webview模式也有其缺点:
主页面和菜单内容在同一个webview下,嵌套在特定结构的div中,经过div的移动动画模拟菜单移动;故该模式有以下优势:
另外一方面,div模式也有其缺点:
div模式支持不一样的动画效果,每种动画效果需听从不一样的DOM构造;下面咱们以右滑菜单为例(左滑菜单仅需将菜单父节点上的mui-off-canvas-left
换成mui-off-canvas-right
便可),说明每种动画对应的DOM结构。
动画1:主界面移动、菜单不动
<!-- 侧滑导航根容器 --> <div class="mui-off-canvas-wrap mui-draggable"> <!-- 菜单容器 --> <aside class="mui-off-canvas-left"> <div class="mui-scroll-wrapper"> <div class="mui-scroll"> <!-- 菜单具体展现内容 --> ... </div> </div> </aside> <!-- 主页面容器 --> <div class="mui-inner-wrap"> <!-- 主页面标题 --> <header class="mui-bar mui-bar-nav"> <a class="mui-icon mui-action-menu mui-icon-bars mui-pull-left"></a> <h1 class="mui-title">标题</h1> </header> <div class="mui-content mui-scroll-wrapper"> <div class="mui-scroll"> <!-- 主界面具体展现内容 --> ... </div> </div> </div> </div>
该种动画要求的DOM结构和动画1的DOM结构基本相同,惟一差异就是需在侧滑导航根容器class上增长一个mui-scalable
类
该种动画要求的DOM结构和动画1的DOM结构基本相同,惟一差异就是需在侧滑导航根容器class上增长一个mui-slide-in
类
该种动画要求的DOM结构较特殊,需将菜单容器放在主页面容器之下
<!-- 侧滑导航根容器 --> <div class="mui-off-canvas-wrap mui-draggable"> <!-- 主页面容器 --> <div class="mui-inner-wrap"> <!-- 菜单容器 --> <aside class="mui-off-canvas-left"> <div class="mui-scroll-wrapper"> <div class="mui-scroll"> <!-- 菜单具体展现内容 --> ... </div> </div> </aside> <!-- 主页面标题 --> <header class="mui-bar mui-bar-nav"> <a class="mui-icon mui-action-menu mui-icon-bars mui-pull-left"></a> <h1 class="mui-title">标题</h1> </header> <!-- 主页面内容容器 --> <div class="mui-content mui-scroll-wrapper"> <div class="mui-scroll"> <!-- 主界面具体展现内容 --> ... </div> </div> </div> </div>
mui支持多种方式操做div模式的侧滑菜单:
mui-action-menu
类的控件;以下:
能够有两种调用方式
mui('.mui-off-canvas-wrap').offCanvas('show');
或
mui('.mui-off-canvas-wrap').offCanvas().show();
方法名 | 做用 |
---|---|
show() | 显示 |
close() | 隐藏 |
toggle() | 切换 |
事件监听
你能够经过一下方式监听侧滑菜单显示隐藏
事件名 | 做用 |
---|---|
shown | 显示 |
hidden | 隐藏 |
document.querySelector('.mui-off-canvas-wrap').addEventListener('shown',function (event) { //... })
也能够经过isShown()
方法判断是否为显示状态
mui('.mui-off-canvas-wrap').offCanvas().isShown();
isShown()
方法也能够传递 direction(方向)
参数(非必选!!)进而能够判断左右侧滑
4.返回顶部 |
mui框架内置了弹出菜单插件,弹出菜单显示内容不限,但必须包裹在一个含.mui-popover类的div中,以下即为一个弹出菜单内容:
<div id="popover" class="mui-popover"> <ul class="mui-table-view"> <li class="mui-table-view-cell"><a href="#">Item1</a></li> <li class="mui-table-view-cell"><a href="#">Item2</a></li> <li class="mui-table-view-cell"><a href="#">Item3</a></li> <li class="mui-table-view-cell"><a href="#">Item4</a></li> <li class="mui-table-view-cell"><a href="#">Item5</a></li> </ul> </div>
要显示、隐藏如上菜单,mui推荐使用锚点方式,例如:
<a href="#popover" id="openPopover" class="mui-btn mui-btn-primary mui-btn-block">打开弹出菜单</a>
点击如上定义的按钮,便可显示弹出菜单,再次点击弹出菜单以外的其余区域,都可关闭弹出菜单;这种使用方式最为简洁。
若但愿经过js的方式控制弹出菜单,则经过以下一个方法便可:
mui('.bottomPopover').popover(status[,anchor]);
status
'show'
显示popover
'hide'
隐藏popover
'toggle'
自动识别处理显示隐藏状态
mui('.bottomPopover').popover('toggle');//show hide toggle
[anchor]
anchorElement
锚点元素
//传入toggle参数,用户也无需关心当前是显示仍是隐藏状态,mui会自动识别处理; mui('.mui-popover').popover('toggle',document.getElementById("openPopover"));
mui框架扩展了pipcker组件,可用于弹出选择器,在各平台上都有统一表现.poppicker和dtpicker是对picker的具体实现
*poppicker组件依赖mui.picker.js/.css mui.poppicker.js/.css请务必在mui.js/css后中引用,也可统一引用 压缩版本:mui.picker.min.js
popPicker
适用于弹出单级或多级选择器
快速体验
经过new mui.PopPicker()初始化popPicker组件
var picker = new mui.PopPicker();
给picker对象添加数据
setData() 支持数据格式为: 数组
picker.setData([{value:'zz',text:'智子'}]);
显示picker
picker.show(SelectedItemsCallback)
实例
var picker = new mui.PopPicker(); picker.setData([{value:'zz',text:'智子'}]); picker.show(function (selectItems) { console.log(selectItems[0].text);//智子 console.log(selectItems[0].value);//zz })
new PopPicker({PopPicker.options}})
layer
Type: Int
picker显示列数
buttons
Type: Array
picker显示按钮
如:new mui.PopPicker({buttons:['cancle','ok']})
setData([data])
参数:data
Type: Array
填充数据
如:picker.setData([{value:'zz',text:'智子'}])
data格式
设置默认值
PopPicker 建立实例并填充数据后,能够设定每一个层级的选中项,由于 PopPicker 是支持多层级联的,因此,可经过 instance.pickers[index] 拿到指定层级的实例,而后经过setSelectedIndex()和setSelectedValue()两个方法,设定指定层级的选中项,以下代码供参考:
var picker = new mui.PopPicker(); picker.setData([{ value: "first", text: "第一项" }, { value: "second", text: "第一项" }, { value: "third", text: "第三项" }, { value: "fourth", text: "第四项" }, { value: "fifth", text: "第五项" }]) //picker.pickers[0].setSelectedIndex(4, 2000); picker.pickers[0].setSelectedValue('fourth', 2000); picker.show(function(SelectedItem) { console.log(SelectedItem); })
*若是设置多级默认值可依次获取每一层级Picker对象并设置默认值,以下:
var picker = new mui.PopPicker({ layer: 2 }); picker.setData([{ value: '110000', text: '北京市', children: [{ value: "110101", text: "东城区" }] }, { value: '120000', text: '天津市', children: [{ value: "120101", text: "和平区" }, { value: "120102", text: "河东区" }, { value: "120104", text: "南开区" } ] }]) picker.pickers[0].setSelectedIndex(1); picker.pickers[1].setSelectedIndex(1); picker.show(function(SelectedItem) { console.log(SelectedItem); })
setSelectedIndex(index[, duration, callback])
参数:index
Type: Number
指定列表选中项
如:picker.pickers[0].setSelectedIndex(4)
参数:duration
Type: Number
过渡效果持续时间( ms )
如:picker.pickers[0].setSelectedIndex(4,200)
参数:callback
Type: FUnction
设置成功回调
如:picker.pickers[0].setSelectedIndex(4,200,function(){})
var picker = new mui.PopPicker(); picker.setData([{ value: "first", text: "第一项", }, { value: "second", text: "第一项" }, { value: "third", text: "第三项" }, { value: "fourth", text: "第四项" }, { value: "fifth", text: "第五项" }]) picker.pickers[0].setSelectedIndex(4, 2000); picker.show(function(SelectedItem) { console.log(SelectedItem); })
setSelectedValue(value[, duration, callback])
参数:value
Type: String
指定列表选中项
如:picker.pickers[0].setSelectedValue('fourth')
参数:duration
Type: Number
渡效果持续时间( ms )
如:picker.pickers[0].setSelectedValue('fourth',200)
参数:callback
Type: FUnction
设置成功回调
如:picker.pickers[0].setSelectedValue('fourth', 200, function(){})
var picker = new mui.PopPicker(); picker.setData([{ value: "first", text: "第一项", }, { value: "second", text: "第一项" }, { value: "third", text: "第三项" }, { value: "fourth", text: "第四项" }, { value: "fifth", text: "第五项" }]) picker.pickers[0].setSelectedIndex(4, 2000); picker.show(function(SelectedItem) { console.log(SelectedItem); })
getSelectedItems()
返回值[data]
Type: Array
获取选中的项(数组)
如:picker.getSelectedItems()
show( getSelectedItems )
返回值:[data]
Type: Array
获取选中的项(数组)
如:
picker.show(function(getSelectedItems){
console.log(getSelectedItems)
})
*return false; 能够阻止选择框的关闭
hide()
隐藏picker
如:picker.hide()
dispose()
释放组件资源(释放后将将不能再操做组件)
如:picker.dispose()
* 一般状况下,不须要释放组件资源,初始化以后,能够一直使用。
* 当内容较多,如不释放组件资源,在某些设备上可能会卡顿。
* 因此每次用完便当即调用 dispose() 进行释放,下次用时再建立新实例。
dtpicker组件适用于弹出日期选择器
快速体验
经过new mui.DtPicker()初始化DtPicker组件
var dtPicker = new mui.DtPicker(options);
显示 Picker
dtPicker.show( SelectedItemsCallback )
实例
var dtPicker = new mui.DtPicker(); dtPicker.show(function (selectItems) { console.log(selectItems.y);//{text: "2016",value: 2016} console.log(selectItems.m);//{text: "05",value: "05"} })
有准确值的进度条
进度条控件DOM结构:
<div id="demo1" class="mui-progressbar"> <span></span> </div>
初始化
mui(container).progressbar({progress:20}).show();
例如:
mui("#demo1").progressbar({progress:20}).show();
progressbar初始化逻辑:
检查当前容器(container控件)自身是否包含.mui-progressbar
类:
.mui-progressbar
类,则以当前容器为目标控件,直接显示进度;.mui-progressbar
类,若存在,则以遍历到的第一个含有.mui-progressbar
类的孩子节点为目标控件,显示进度;更改显示进度条:
mui(container).progressbar().setProgress(50);
关闭进度条
mui(container).progressbar().hide();
备注:关闭进度条通常用于动态建立(DOM中预先未定义)的进度条,调用hide方法后,会直接删掉对应的DOM节点;若已提早建立好DOM节点的进度条,调用hide方法无效;
无限循环进度条:
若没法准确提供当前进度,能够提供无限循环进度条(无限循环进度条相似于waiting等待框,参考[HTML5+规范]
无限循环进度条和准确值的进度条的用法基本相同,有以下差别:
进度条控件DOM结构(多了.mui-progressbar-infinite
):
<div id="demo1" class="mui-progressbar mui-progressbar-infinite"> <span></span> </div>
初始化
mui("#demo1").progressbar().show();
注意:无限循环进度条不显示具体进度,所以初始化时,不能传入progress参数;mui框架也是根据progressbar构造方法中是否包含progress参数来区分当前进度条为有准确值的进度条仍是无限循环进度条;
一样由于不显示具体进度的缘由,无限循环进度条调用setProgress()方法无效。
关闭进度条
mui("#demo1").progressbar().hide();
页面顶部进度条
页面顶部进度条相似浏览器进度条,固定显示在页面顶部(标题导航控件下方); 所以,若当前页面使用父子双webview模式,子页面没有标题导航组件,则需经过自定义css的方式,重定义顶部进度条的位置,示例代码以下:
body>.mui-progressbar{ top:0 }
使用页面顶部进度条时,无需编写DOM结构,使用以下代码便可自动建立(顶部无限循环进度条同理):
mui('body').progressbar({ progress: 20 }).show();
当用户向下滚动时,标题栏逐渐由透明转变为不透明;当用户再次向上滚动时,标题栏又从不透明变为透明状态。
透明标题栏组件比较简单,只须要在header组件上添加.mui-bar-transparent类便可,以下为示例代码
<header class="mui-bar mui-bar-nav mui-bar-transparent"> <h1 class="mui-title">标题</h1> </header>
若是须要个性化定制可经过data-*
属性或者jsAPI
DIY
DOM API | 做用 | JS API |
---|---|---|
data-top | 距离顶部高度(滚动到该位置即触发 ) |
{top:0} |
data-offset | 滚动透明距离 | {offset:150} |
data-duration | 过渡时间 ms |
{duration:16} |
data-scrollby | 监听区域滚动容器 (*mui 3.5版本+支持) 默认window 默认监听原生滚动,如监听mui scroll控件滚动,则: document.querySelector('.mui-scroll-wrapper') |
{scrollby:DOM} |
<header class="mui-bar mui-bar-nav mui-bar-transparent" data-top='0' data-offset='150' data-duration='16' data-scrollby=".mui-scroll-wrapper"> <h1 class="mui-title">标题</h1> </header>
mui('.mui-bar-transparent').transparent({ top: 0, offset: 150, duration: 16, scrollby: document.querySelector('.mui-scroll-wrapper') })
5.返回顶部 |
radio用于单选的状况
DOM结构
<div class="mui-input-row mui-radio"> <label>radio</label> <input name="radio1" type="radio"> </div>
默认radio在右侧显示,若但愿在左侧显示,只需增长.mui-left
类便可,以下:
<div class="mui-input-row mui-radio mui-left"> <label>radio</label> <input name="radio1" type="radio"> </div>
若要禁用radio,只需在radio上增长disabled属性便可;
mui基于列表控件,提供了列表式单选实现;在列表根节点上增长.mui-table-view-radio
类便可,若要默认选中某项,只须要在对应li
节点上增长.mui-selected
类便可,dom结构以下:
<ul class="mui-table-view mui-table-view-radio"> <li class="mui-table-view-cell"> <a class="mui-navigate-right">Item 1</a> </li> <li class="mui-table-view-cell mui-selected"> <a class="mui-navigate-right">Item 2</a> </li> <li class="mui-table-view-cell"> <a class="mui-navigate-right">Item 3</a> </li> </ul>
列表式单选在切换选中项时会触发selected事件,在事件参数(e.detail.el
)中能够得到当前选中的dom节点,以下代码打印当前选中项的innerHTML:
var list = document.querySelector('.mui-table-view.mui-table-view-radio'); list.addEventListener('selected',function(e){ console.log("当前选中的为:"+e.detail.el.innerText); });
滑块经常使用于区间数字选择
DOM结构
<div class="mui-input-row mui-input-range"> <label>Range</label> <input type="range" min="0" max="100"> </div>
在App开发中,div区域滚动的需求是广泛存在的,但系统默认实现又有以下问题:
所以,mui额外提供了区域滚动组件,使用时须要遵循以下DOM结构
<div class="mui-scroll-wrapper"> <div class="mui-scroll"> <!--这里放置真实显示的DOM内容--> </div> </div>
区域滚动组件默认为absolute定位,全屏显示;在实际使用过程当中,须要手动设置滚动区域的位置(top和height)
若使用区域滚动组件,需手动初始化scroll控件
*经常使用配置项:
scroll.options
options = { scrollY: true, //是否竖向滚动 scrollX: false, //是否横向滚动 startX: 0, //初始化时滚动至x startY: 0, //初始化时滚动至y indicators: true, //是否显示滚动条 deceleration:0.0006, //阻尼系数,系数越小滑动越灵敏 bounce: true //是否启用回弹 }
示例:初始化scroll控件:
mui('.mui-scroll-wrapper').scroll({ deceleration: 0.0005 //flick 减速系数,系数越大,滚动速度越慢,滚动距离越小,默认值0.0006 });
滚动到特定位置
scrollTo( xpos , ypos [, duration] )
xpos
Type: Integer
要在窗口文档显示区左上角显示的文档的 x 坐标
ypos
Type: Integer
要在窗口文档显示区左上角显示的文档的 y 坐标
duration
Type: Integer
滚动时间周期,单位是毫秒
示例:快速回滚到该区域顶部,代码以下:
mui('.mui-scroll-wrapper').scroll().scrollTo(0,0,100);//100毫秒滚动到顶
滚动到底部位置
滚动到顶部的代码比较容易实现,坐标值设为0、0便可;但滚动到底部,须要计算该区域的实际高度,所以mui封装了scrollToBottom方法。
scrollToBottom(duration)
duration
Type: Integer
滚动时间周期,单位是毫秒
横向滚动
横向滚动只需在scroll组件基础上添加mui-slider-indicatorcode mui-segmented-control mui-segmented-control-inverted这三个class便可.(给子元素添加mui-control-item可加大文字间距加强体验
如:)
<div class="mui-scroll-wrapper mui-slider-indicator mui-segmented-control mui-segmented-control-inverted"> <div class="mui-scroll"> <a class="mui-control-item mui-active"> 推荐 </a> <a class="mui-control-item"> 热点 </a> <a class="mui-control-item"> 北京 </a> <a class="mui-control-item"> 社会 </a> <a class="mui-control-item"> 娱乐 </a> <a class="mui-control-item"> 科技 </a> </div> </div>
轮播组件是mui提供的一个核心组件,在该核心组件基础上,衍生出了图片轮播、可拖动式图文表格、可拖动式选项卡、左右滑动9宫格等组件,这些组件有较多共同点。首先,Dom构造基本相同,以下:
<div class="mui-slider"> <div class="mui-slider-group"> <!--第一个内容区容器--> <div class="mui-slider-item"> <!-- 具体内容 --> </div> <!--第二个内容区--> <div class="mui-slider-item"> <!-- 具体内容 --> </div> </div> </div>
当拖动切换显示内容时,会触发slide事件,经过该事件的detail.slideNumber参数能够得到当前显示项的索引(第一项索引为0,第二项为1,以此类推),利用该事件,可在显示内容切换时,动态处理一些业务逻辑。
以下为一个可拖动式选项卡示例,为提升页面加载速度,页面加载时,仅显示第一个选项卡的内容,第2、第三选项卡内容为空。
当切换到第2、第三个选项卡时,再动态获取相应内容进行显示:
var item2Show = false,item3Show = false;//子选项卡是否显示标志 document.querySelector('.mui-slider').addEventListener('slide', function(event) { if (event.detail.slideNumber === 1&&!item2Show) { //切换到第二个选项卡 //根据具体业务,动态得到第二个选项卡内容; var content = .... //显示内容 document.getElementById("item2").innerHTML = content; //改变标志位,下次直接显示 item2Show = true; } else if (event.detail.slideNumber === 2&&!item3Show) { //切换到第三个选项卡 //根据具体业务,动态得到第三个选项卡内容; var content = .... //显示内容 document.getElementById("item3").innerHTML = content; //改变标志位,下次直接显示 item3Show = true; } });
图片轮播、可拖动式图文表格等都可按照一样方式监听内容变化,好比咱们能够在图片轮播界面显示当前正在看的是第几张图片:
document.querySelector('.mui-slider').addEventListener('slide', function(event) { //注意slideNumber是从0开始的; document.getElementById("info").innerText = "你正在看第"+(event.detail.slideNumber+1)+"张图片"; });
mui提供了开关控件,点击滑动两种手势均可以对开关控件进行操做,UI以下:
默认开关控件,带on/off文字提示,打开时为绿色背景,基本class类为.mui-switch
、.mui-switch-handle
,DOM结构以下:
<div class="mui-switch"> <div class="mui-switch-handle"></div> </div>
若但愿开关默认为打开状态,只须要在.mui-switch
节点上增长.mui-active
类便可,以下:
<!-- 开关打开状态,多了一个.mui-active类 --> <div class="mui-switch mui-active"> <div class="mui-switch-handle"></div> </div>
若但愿隐藏on/off文字提示,变成简洁模式,须要在.mui-switch
节点上增长.mui-switch-mini
类,以下:
<!-- 简洁模式开关关闭状态 --> <div class="mui-switch mui-switch-mini"> <div class="mui-switch-handle"></div> </div> <!-- 简洁模式开关打开状态 --> <div class="mui-switch mui-switch-mini mui-active"> <div class="mui-switch-handle"></div> </div>
mui默认还提供了蓝色开关控件,只需在.mui-switch
节点上增长.mui-switch-blue
类便可,以下:
<!-- 蓝色开关关闭状态 --> <div class="mui-switch mui-switch-blue"> <div class="mui-switch-handle"></div> </div> <!-- 蓝色开关打开状态 --> <div class="mui-switch mui-switch-blue mui-active"> <div class="mui-switch-handle"></div> </div>
蓝色开关上增长.mui-switch-mini
便可变成无文字的简洁模式
方法
若要得到当前开关状态,可经过判断当前开关控件是否包含.mui-active类来实现,若包含,则为打开状态,不然即为关闭状态;以下为代码示例:
var isActive = document.getElementById("mySwitch").classList.contains("mui-active"); if(isActive){ console.log("打开状态"); }else{ console.log("关闭状态"); }
若使用js打开、关闭开关控件,可以使用switch插件的toggle()
方法,以下为示例代码:
mui("#mySwitch").switch().toggle();
事件
开关控件在打开/关闭两种状态之间进行切换时,会触发toggle事件,经过事件的detail.isActive属性能够判断当前开关状态。可经过监听toggle事件,能够在开关切换时执行特定业务逻辑。以下为使用示例:
document.getElementById("mySwitch").addEventListener("toggle",function(event){ if(event.detail.isActive){ console.log("你启动了开关"); }else{ console.log("你关闭了开关"); } })
初始化:
mui在mui.init()中会自动初始化基本控件,可是 动态添加的 Switch 组件须要手动初始化
mui('.mui-switch')['switch']()
6.返回顶部 |
7.返回顶部 |
8.返回顶部 |
9.返回顶部 |
10.返回顶部 |
11.返回顶部 |
12.返回顶部 |
13.返回顶部 |
14.返回顶部 |
15.返回顶部 |
16.返回顶部 |
![]() |
做者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。 |
如下方法皆支持上述两种调用方式