artDialog
来源:互联网 发布:无限极会员展示php 编辑:程序博客网 时间:2024/05/16 14:49
artDialog是一个精巧的web对话框组件,压缩后只有十多KB,并且不依赖其他框架。
在页面head引入artDialog,注意如果文件带有skin参数将会无阻塞的方式自动加载对应的皮肤css文件,当然你仍然可以使用传统方式引用“skins/”目录下的css文件,二者选其一。
<script src="artDialog.js?skin=default"></script>
如果项目采用jQuery作为框架,则引用jQuery artDialog版本:
<script src="jquery.artDialog.js?skin=default"></script>
如果需要在iframe应用下提供 更好的支持,需要加上:
<script src="artDialog.iframeTools.js"></script>
配置参数
1、如果内容类型是Object还需要tmpl参数配合
2、如果传入的是HTMLElement类型,如果是隐藏元素会给其设置display:block以显示该元素,其他属性与绑定的事件都会完整保留,对话框关闭后此元素又将恢复原来的display属性,并且重新插入原文档所在位置
3、如果没有设定content的值则会有loading的动画HTMLElementObject
函数如果返回false将阻止对话框关闭;函数this指针指向内部api;如果传入true表示只显示有关闭功能的按钮Boolean
函数如果返回false将阻止对话框关闭;函数this指针指向内部api;如果传入true表示只显示有关闭功能的按钮
对话框标题栏的关闭按钮其实就是取消按钮,只不过视觉不同罢了,点击同样触发noFn事件Boolean
配置参数成员:
如果设置为百分值单位,将会以根据浏览器可视范围作为基准,此时如果浏览器窗口大小被改变其也会进行相应的调整String
如果设置为百分值单位,将会以根据浏览器可视范围作为基准,此时如果浏览器窗口大小被改变其也会进行相应的调整String
可传入元素ID名称,注意ID名称需要以“#”号作为前缀String
1、如果开启了fixed参数则以浏览器视口为基准;
2、可以使用'0%' ~ '100%'作为相对坐标,如果浏览器窗口大小被改变其也会进行相应的调整String
1、如果开启了fixed参数则以浏览器视口为基准;
2、可以使用'0%' ~ '100%'、''goldenRatio''作为相对坐标,如果浏览器窗口大小被改变其也会进行相应的调整,其中'goldenRatio'表示为黄金比例垂直居中,绝对居中请使用'50%'String
中断用户对话框之外的交互,用于显示非常重要的操作/消息,所以不建议频繁使用它
1、防止重复弹出
2、可后续使用art.dialog.list[youID]获取控制接口Number
用来改变对话框叠加高度。比如有时候配合外部浮动层UI组件,但是它们可能默认zIndex没有artDialog高,导致无法浮动到artDialog之上,这个时候你就可以给对话框指定一个较小的zIndex值。
请注意这是一个会影响到全局的配置,后续出现的对话框叠加高度将重新按此累加。
请注意这不是关闭按钮的回调函数,无论何种方式关闭对话框,closeFn都将执行。
配置全局默认设置:
(function (config) { config['lock'] = true; config['fixed'] = true; config['yesText'] = 'yes'; config['noText'] = 'no'; // [more..] })(art.dialog.defaults);
配置参数范例
内容 [content]
1. 传入字符串
art.dialog({ content: '我支持HTML' });
2. 传入HTMLElement
备注:1、元素不是复制而是完整移动到对话框中,所以原有的事件与属性都将会保留 2、如果隐藏元素被传入到对话框,会设置display:block属性显示该元素 3、对话框关闭的时候元素将恢复到原来在页面的位置,style display属性也将恢复
art.dialog({ content: document.getElementById('demoCode_content_DOM'), id: 'EF893L' });
3. 高级应用:传入Object并使用“tmpl”模板参数生成内容
备注:拼接字符串是一个比较无趣的活儿,而artDialog内部使用一个微型模板引擎解析自身UI框架,你可以通过tmp参数继续使用它格式化内容。模板支持原生的javascript语法,可进行条件判断。推荐你尝试使用type="text/tmpl"的script标签存放模板,如:
var tmpl = document.getElementById('tmpl_demoCode_content').innerHTML; art.dialog({ content: { code: 0, users: ['糖饼', '月月鸟', '水水', '丽丽', '花花', '大叔'], me: '糖饼', web: 'http://www.planeart.cn' }, tmpl: tmpl });
标题 [title]
art.dialog({ title: 'hello world!' });
确定取消按钮 [yesFn & noFn]
备注:回调函数this指向扩展接口,如果返回false将阻止对话框关闭
art.dialog({ content: '如果定义了回调函数才会出现相应的按钮', yesFn: function () { this.title('3秒后自动关闭').time(3); return false; }, noText: '关闭', noFn: true //为true等价于function(){} });
自定义按钮 [button]
备注:回调函数this指向扩展接口,如果返回false将阻止对话框关闭;button参数对应的控制接口名称也是"button"
定时关闭的消息 [time]
art.dialog({ time: 2, content: '两秒后关闭' });
防止重复弹出 [id]
art.dialog({ id: 'testID', content: '再次点击运行看看' }); art.dialog({id: 'testID'}).title('3秒后关闭').time(3);
定义消息图标 [icon]
内置图标:alert、succeed、error、confirm
art.dialog({ icon: 'succeed', content: '我可以定义消息图标哦' });
内容与边界填充边距 [padding]
有时候并不需要默认的内容填充边距,如展示图片与视频
art.dialog({ padding: 0, title: false, content: '<img src="./images/photo.jpg" width="379" height="500" />', lock: true });
锁屏 [lock & background & opacity]
art.dialog({ lock: true, background: '#600', // 背景色 opacity: 0.7, // 透明度 content: '中断用户在对话框以外的交互,展示重要操作与消息', icon: 'error', yesFn: function () { art.dialog({content: '再来一个锁屏', lock:true}); return false; }, noFn: true });
跟随元素 [follw]
1、标准形式
art.dialog({ follow: document.getElementById('followTestBtn'), content: '让对话框跟着某个元素,一个元素同时只能出现一个对话框' });
2、使用简写形式 (已经绑定onclick事件,注意此返回值不再是对话框控制接口)
art('#demoCode_follow_a').dialog({ content: '让对话框跟着某个元素,一个元素同时只能出现一个对话框' });
自定义坐标 [left & top]
art.dialog({ left: 100, top: '60%', content: '我改变坐标了' });
创建一个右下角浮动的消息窗口
art.dialog({ id: 'msg', title: '公告', content: 'hello world!', width: 320, height: 240, left: '100%', top:'100%', fixed: true, drag: false, resize: false })
设置大小 [width & height]
art.dialog({ width: '20em', height: 55, content: '尺寸可以带单位' });
创建一个全屏对话框
art.dialog({ width: '100%', height: '100%', left: '0%', top: '0%', fixed: true, resize: false, drag: false })
静止定位 [fixed]
art.dialog({ fixed: true, content: '请拖动滚动条查看' });
不许拖拽 [drag & resize]
art.dialog({ drag: false, resize: false, content: '禁止拖拽' });
控制接口
如:button({name: '登录', callback: function () {_form.submit();}) 更多用法请见范例文档
备注:控制接口返回值都是this,因此你可以使用链式编程风格。
控制接口范例
控制接口可以在对话框初始化后控制对话框,需要有一定的javascript基础,这里不做过多演示。
获取控制接口:直接引用控制接口
var dialog = art.dialog({ title: '我是对话框', content: '我是初始化的内容' }); dialog.content('对话框内容被控制接口改变了').title('提示');
获取控制接口:使用对话框ID
art.dialog({ id: 'KDf435', title: '警告', content: '我是初始化的内容' }); art.dialog.list['KDf435'].content('对话框内容被控制接口改变了').time(2);
获取控制接口:this引用
art.dialog({ title: '警告', content: '我是初始化的内容', yesFn: function () { this.content('你点了确定按钮').position('50%', null).lock().time(2); return false; }, initFn: function () { this.content('对话框内容被控制接口改变了'); } });
演示四
关闭页面所有对话框
var list = art.dialog.list; for (var i in list) { list[i].close(); };
按钮接口演示
备注:回调函数如果返回false将阻止对话框关闭
改变关闭方式
art.dialog({ id: 'show-hide', content: '关闭后阻止对话框被删除,只隐藏对话框', closeFn: function () {this.hide(); return false; } }).show();
AJAX高级应用:执行HTML片段中特殊script标签
HTML片段中的<script type="text/dialog"></script>标签包裹的javascript将会在对话框中执行,其this指向对话框控制接口,代码在闭包内执行,不会影响全局,这样可以进一步实现内容模块化。
(本例子使用了AJAX,需要在服务器上运行。可打开 ./ajaxContent/login.html查看源码中的自定义脚本)
var dialog = art.dialog({id: 'N3690'}); // jQuery ajax $.ajax({ url: './ajaxContent/login.html', success:function (data) { dialog.content(data); }, cache: false });
扩展:iframe应用工具集
这是iframe应用工具集中的核心方法,你可以用它来操作父页面对象(包括上面的对话框)
框架与框架之间以及与主页面之间进行数据交换是非常头疼的事情,常规情况下你必须知道框架的名称才能进行数据交换,如果是在复杂的多层框架下操作简直就是噩梦。
而data方法就是为了解决这个问题,你完全不用管框架层级问题,它可以写入任何类型的数据,而做到各个页面之间数据共享。
参数: 地址, 配置参数, 缓存开关(默认true)
(注意这个iframe中也必须引用artDialog脚本文件)
(注意这个iframe中也必须引用artDialog脚本文件)
close方法等同于:
(注意这个iframe中也必须引用artDialog脚本文件)
参数:地址, 配置参数, 缓存开关(默认true)
参数: 内容
参数: 内容, 确定按钮回调函数, 取消按钮回调函数
参数: 内容, 确定按钮回调函数, 文本框默认值
参数: 内容、显示时间(单位秒, 默认1.5)
不鼓励直接使用window.top这样的方式穿越,这样可能因为对话框触发页面重置导致其产生所有的对象在内存中被清空,而让对话框无法关闭,所以你应该用这个安全的方法创建自定义对话框。
框架集页面无法覆盖第三方元素,不过可以使用一个iframe套住框架集页面就可以正常使用,见下面演示文档
转自:http://blog.csdn.net/numbibi/article/details/7783630
- artDialog
- artDialog
- artDialog
- artDialog
- ArtDialog
- artdialog
- artDialog
- artdialog
- artDialog
- artDialog
- artDialog
- artDialog弹窗
- artDialog弹窗
- artDialog入门
- artDialog弹框
- 大话artDialog
- artDialog总结
- artDialog.js
- requestDisallowInterceptTouchEvent
- Win32消息检索
- gen 文件夹报错解决方法
- JS中数组Array的用法
- libevent读书笔记
- artDialog
- An existing PostgreSql installation has been found... 的解决
- lambada学习
- 消息的概念
- ZZY的宠物解题报告
- 定时器TIMER
- IOS开发之—绘图 CGContext
- Java 位运算(移位、位与、或、异或、非) -- Demo
- 游戏为什么赚钱