最后一章节主要分享下AUI2.0页面的常用组件,组件在我们项目交互中用得很多,所以这个必须要掌握的。
上一篇主要是大概介绍到了AUI2.0的页面基本交互。回顾下上一篇: 页面基本交互- 跨平台移动前端框架AUI 2.0
轮播组件
我自己试过,要比现在流行的swipe轻巧很多,可以看下代码和效果:
<link rel="stylesheet" type="text/css" href="../../css/aui-slide.css" /> <div id="aui-slide"> <div class="aui-slide-wrap" > <div class="aui-slide-node"> <div class="aui-grid"> <div class="aui-row"> <div class="aui-col-xs-4"> <div class="aui-badge">88</div> <i class="aui-iconfont aui-icon-home"></i> <div class="aui-grid-label">首页</div> </div> <div class="aui-col-xs-4"> <i class="aui-iconfont aui-icon-gear"></i> <div class="aui-grid-label">设置</div> </div> <div class="aui-col-xs-4"> <i class="aui-iconfont aui-icon-map"></i> <div class="aui-grid-label">地图</div> </div> <div class="aui-col-xs-4"> <i class="aui-iconfont aui-icon-calendar"></i> <div class="aui-grid-label">日历</div> </div> <div class="aui-col-xs-4"> <div class="aui-badge"></div> <i class="aui-iconfont aui-icon-date"></i> <div class="aui-grid-label">日期</div> </div> <div class="aui-col-xs-4"> <div class="aui-dot"></div> <i class="aui-iconfont aui-icon-cart"></i> <div class="aui-grid-label">购物车</div> </div> </div> </div> </div> <div class="aui-slide-node aui-slide-node-middle aui-slide-node-center"> <div class="aui-content-padded"> <span class="aui-text-danger">AUI Slide</span> 轮播组件不只局限于放置图片,可以自定义内容,分页样式有圆点(dot),线条(line),结合AUI Flex来实现图片及内容的水平、垂直居中 </div> </div> <div class="aui-slide-node aui-bg-warning aui-slide-node-middle aui-slide-node-center"> <div class="aui-content-padded"> <span class="aui-text-danger">AUI Slide</span>提供了常用的配置属性,可以自定义宽度,高度,自动播放,分页器样式等,支持无缝循环轮播 </div> </div> <div class="aui-slide-node bg-dark"> <img src="../../image/l1.png" /> </div> <div class="aui-slide-node bg-dark"> <img src="../../image/l2.png" /> </div> <div class="aui-slide-node bg-dark"> <img src="../../image/l3.png" /> </div> </div> <div class="aui-slide-page-wrap"><!--分页容器--></div> </div> <div id="aui-slide2"> <div class="aui-slide-wrap" > <div class="aui-slide-node aui-slide-node-middle aui-slide-node-center"> <div class="aui-content aui-padded-15"> <span class="aui-text-danger">AUI Slide</span>会让你更方便让你布局轮播效果 </div> </div> <div class="aui-slide-node aui-slide-node-middle aui-slide-node-center"> <div class="aui-content aui-padded-15"> <span class="aui-text-success">AUI Slide</span>更好的支持循环滑动切换 </div> </div> </div> <div class="aui-slide-page-wrap"><!--分页容器--></div> </div> <div id="aui-slide2"> <div class="aui-slide-wrap" > <div class="aui-slide-node aui-slide-node-middle aui-slide-node-center"> <div class="aui-content aui-padded-15"> <span class="aui-text-danger">AUI Slide</span>会让你更方便让你布局轮播效果 </div> </div> <div class="aui-slide-node aui-slide-node-middle aui-slide-node-center"> <div class="aui-content aui-padded-15"> <span class="aui-text-success">AUI Slide</span>更好的支持循环滑动切换 </div> </div> </div> <div class="aui-slide-page-wrap"><!--分页容器--></div> </div> <div id="aui-slide3"> <div class="aui-slide-wrap" > <div class="aui-slide-node bg-dark"> <img src="../../image/l1.png" /> </div> <div class="aui-slide-node bg-dark"> <img src="../../image/l2.png" /> </div> <div class="aui-slide-node bg-dark"> <img src="../../image/l3.png" /> </div> </div> <div class="aui-slide-page-wrap"><!--分页容器--></div> </div> <script type="text/javascript" src="../../script/aui-slide.js"></script> <script type="text/javascript"> var slide = new auiSlide({ container:document.getElementById("aui-slide"), // "width":300, "height":260, "speed":300, "pageShow":true, "pageStyle":'dot', "loop":true, 'dotPosition':'center', currentPage:currentFun }) function currentFun(index) { console.log(index); } var slide2 = new auiSlide({ container:document.getElementById("aui-slide2"), // "width":300, "height":240, "speed":300, "autoPlay": 0, //自动播放 "pageShow":true, "loop":true, "pageStyle":'dot', 'dotPosition':'center' }) var slide3 = new auiSlide({ container:document.getElementById("aui-slide3"), // "width":300, "height":240, "speed":500, "autoPlay": 3000, //自动播放 "loop":true, "pageShow":true, "pageStyle":'line', 'dotPosition':'center' }) console.log(slide3.pageCount()); </script>
这里说明下具体参数:
var slide = new auiSlide({
container:document.getElementById("aui-slide3"), //容器
// "width":300, //宽度
"height":240, //高度
"speed":500, //速度
"autoPlay": 3000, //自动播放
"loop":true,//是否循环
"pageShow":true,//是否显示分页器
"pageStyle":'line', //分页器样式,分dot,line
'dotPosition':'center' //当分页器样式为dot时控制分页器位置,left,center,right
})
OK,我们可以看下效果,猛戳连接:轮播DEMO
自定义皮肤
自定义主题皮肤是2.0中的一个亮点,在2.0中我们抛弃了一些组件的多种色调并分离了皮肤样式,结合aui-skin.js可以实现APP主题的切换功能。
参考《JS组件-aui-skin》来使用。aui-skin.js为控制皮肤主题样式显示的插件。
参数说明:
var skin = new auiSkin({
name:"night", //皮肤样式名字,不能为中文
skinPath:'../../css/aui-skin-night.css', //皮肤样式表路径
default:false,//是否默认立即使用
beginTime:"20:00",//开始时间
endTime:"07:00"//结束时间
})
当default为true时,beginTime和endTime参数无效。使用beginTime和endTime,可以控制自定义皮肤使用时间,请注意时间格式的正确性
skin.setSkin(); //手动设置立即使用主题
skin.removeSkin(); //手动设置取消当前主题
JS组件-aui-dialog
aui-dialog.js为对话框组件,可以实现弹出对话框效果
参数说明:
title:"弹出提示",//标题
msg:"消息内容",//内容文字
buttons:['取消','确定'],
input:false //是否有input输入框
返回参数:
buttonIndex:1,//当前点击按钮
text:""//输入的内容
使用方法:
var dialog = new auiDialog();
dialog.alert({
title:"弹出提示",
msg:'这里是内容',
buttons:['取消','确定']
},function(ret){
console.log(ret)
})
JS组件-aui-popup
aui-popup.js 为弹出菜单组件
使用方法
给按钮增加 aui-popup-for="top"属性,属性值对应弹出菜单容器ID,
引入js文件并加载
var popup = new auiPopup();
popup.show(el) 手动设置显示弹出层
使用案例:
<div class="aui-btn aui-btn-primary" aui-popup-for="top-left">左上角</div> <div class="aui-popup aui-popup-top-left" id="top-left"> <div class="aui-popup-arrow"></div> <div class="aui-popup-content"> <ul class="aui-list aui-list-noborder"> <li class="aui-list-item"> <div class="aui-list-item-label-icon"> <i class="aui-iconfont aui-icon-my aui-text-warning"></i> </div> <div class="aui-list-item-inner aui-list-item-middle"> 会员中心 </div> </li> <li class="aui-list-item"> <div class="aui-list-item-label-icon"> <i class="aui-iconfont aui-icon-mail aui-text-info"></i> </div> <div class="aui-list-item-inner"> 会话消息 </div> </li> <li class="aui-list-item"> <div class="aui-list-item-label-icon"> <i class="aui-iconfont aui-icon-star aui-text-danger"></i> </div> <div class="aui-list-item-inner"> 我的收藏 </div> </li> </ul> </div> </div> <script type="text/javascript" src="../../script/2.0/aui-popup.js" ></script> <script type="text/javascript"> var popup = new auiPopup(); </script>
这个在上面已经提到过了,效果可以参考前面的文章。
JS组件-aui-toast
aui-toast.js为弹出提示类的组件
使用方法:
var toast = new auiToast();
成功类:
toast.success({
title:"提交成功",
duration:2000
});
失败类:
toast.fail({
title:"提交失败",
duration:2000
});
自定义图标:
toast.custom({
title:"成功给了一个赞",
html:'<i class="aui-iconfont aui-icon-laud"></i>',
duration:2000
});
加载中:
toast.loading({
title:"加载中",
duration:2000
},function(ret){
console.log(ret);
setTimeout(function(){
toast.hide();
}, 3000)
});
<div class="aui-btn aui-btn-block aui-btn-info" tapmode onclick="showDefault('success')">默认样式(toast)</div> <div class="aui-btn aui-btn-block aui-btn-success" tapmode onclick="showDefault('fail')">失败(toast)</div> <div class="aui-btn aui-btn-block aui-btn-success" tapmode onclick="showDefault('custom')">自定义</div> <div class="aui-btn aui-btn-block aui-btn-warning" tapmode onclick="showDefault('loading')">弹出loading样式(toast)</div> <script type="text/javascript" src="../../script/2.0/aui-toast.js" ></script> <script type="text/javascript"> apiready = function(){ api.parseTapmode(); } var toast = new auiToast(); function showDefault(type){ switch (type) { case "success": toast.success({ title:"提交成功", duration:2000 }); break; case "fail": toast.fail({ title:"提交失败", duration:2000 }); break; case "custom": toast.custom({ title:"提交成功", html:'<i class="aui-iconfont aui-icon-laud"></i>', duration:2000 }); break; case "loading": toast.loading({ title:"加载中", duration:2000 },function(ret){ console.log(ret); setTimeout(function(){ toast.hide(); }, 3000) }); break; default: // statements_def break; } } </script>
JS组件-aui-tab
aui-tab.js为切换类的组件
参数说明
{
element:,容器
index:1,默认选中
repeatClick:false //是否允许重复点击,(设置为true时可以实现数量增加的功能)
}
返回:
{
index:1,当前点击的位置,默认为1
dom:el 当前点击的dom对象
}
<script type="text/javascript" src="../../script/2.0/aui-tab.js" ></script> <script type="text/javascript"> var tab = new auiTab({ element:document.getElementById("footer"), index:1, repeatClick:false },function(ret){ console.log(ret); }); </script>
JS组件-aui-range
aui-range.js滑块类插件
var range = new auiRange({
element:document.getElementById("range") //滑块容器
},function(ret){
console.log(ret)
})
JS组件-aui-pull-refresh
aui-pull-refresh.js 下拉刷新组件
var pullRefresh = new auiPullToRefresh({
container: document.querySelector('.aui-refresh-content'), //下拉容器
triggerDistance: 100 //下拉高度
},function(ret){
if(ret.status=="success"){
pullRefresh.cancelLoading(); //刷新成功后调用此方法隐藏
},1500)
}
})
JS组件-aui-scroll
aui-scroll.js为监听滚动条的插件,可以实时监听返回滚动高度和判断是否到达底部
var scroll = new auiScroll({
listen:true, //是否监听滚动高度,开启后将实时返回滚动高度
distance:200 //判断到达底部的距离,isToBottom为true
},function(ret){
console.log(ret)
});
返回值
{
scrollTop:"",//滚动高度
isToBottom:true//是否到达底部,true,false
}
总结
总的来说,这些组件用起来比较方便,目前我用到了轮播组件,比较轻巧,虽然这个框架涉及到的内容比较多,不一定都会用到,但是我们可以抽取其中一些好的,应用到我们的项目当中。
到这里,跨平台移动前端框架AUI 2.0的内容都分享完了,希望能拓展大家的知识面。
网友评论文明上网理性发言 已有1人参与
发表评论:
评论列表