本文转自:http://aui.github.io/artDialog/

http://aui.github.io/artDialog/doc/index.html

artDialog —— 经典的网页对话框组件,内外皆用心雕琢。

  1. 支持普通与 12 方向气泡状对话框
  2. 完善的焦点处理,自动焦点附加与回退
  3. 支持 ARIA 标准
  4. 面向未来:基于 HTML5 Dialog 的 API
  5. 支持标准与模态对话框
  6. 丰富且友好的编程接口
  7. 能自适应内容尺寸
  8. 仅 4kb (gzip)

文档导航

引入 artDialog

1.直接引用

  1. <script src="lib/jquery-1.10.2.js"></script>
  2. <link rel="stylesheet" href="css/ui-dialog.css">
  3. <script src="dist/dialog-min.js"></script>

2.作为 RequireJS 或 SeaJS 的模块引入

  1. var dialog = require('./src/dialog');

注意:内部依赖全局模块require('jquery'),请注意全局模块配置是否正确。seajs加载示例

  • 如果需要支持 iframe 内容与拖拽,请引用加强版 dialog-plus.js
  • jquery 最低要求版本为1.7+

快速参考

普通对话框

  1. var d = dialog({
  2. title: '欢迎',
  3. content: '欢迎使用 artDialog 对话框组件!'
  4. });
  5. d.show();
 
  1. 运行

模态对话框

  1. var d = dialog({
  2. title: 'message',
  3. content: '<input autofocus />'
  4. });
  5. d.showModal();
 
  1. 运行

气泡浮层

  1. var d = dialog({
  2. content: 'Hello World!',
  3. quickClose: true// 点击空白处快速关闭
  4. });
  5. d.show(document.getElementById('quickref-bubble'));
 
  1. 运行

12 个方向定位演示

添加按钮

1.确定与取消按钮:

  1. var d = dialog({
  2. title: '提示',
  3. content: '按钮回调函数返回 false 则不许关闭',
  4. okValue: '确定',
  5. ok: function () {
  6. this.title('提交中…');
  7. return false;
  8. },
  9. cancelValue: '取消',
  10. cancel: function () {}
  11. });
  12. d.show();
 
  1. 运行

2.指定更多按钮:

请参考 button 方法或参数。

控制对话框关闭

  1. var d = dialog({
  2. content: '对话框将在两秒内关闭'
  3. });
  4. d.show();
  5. setTimeout(function () {
  6. d.close().remove();
  7. }, 2000);
 
  1. 运行

给对话框左下脚添加复选框

  1. var d = dialog({
  2. title: '欢迎',
  3. content: '欢迎使用 artDialog 对话框组件!',
  4. ok: function () {},
  5. statusbar: '<label><input type="checkbox">不再提醒</label>'
  6. });
  7. d.show();
 
  1. 运行

阻止对话框关闭

按钮事件返回 false 则不会触发关闭。

  1. var d = dialog({
  2. title: '欢迎',
  3. content: '欢迎使用 artDialog 对话框组件!',
  4. ok: function () {
  5. var that = this;
  6. this.title('正在提交..');
  7. setTimeout(function () {
  8. that.close().remove();
  9. }, 2000);
  10. return false;
  11. },
  12. cancel: function () {
  13. alert('不许关闭');
  14. return false;
  15. }
  16. });
  17. d.show();
 
  1. 运行

不显示关闭按钮

  1. var d = dialog({
  2. title: '欢迎',
  3. content: '欢迎使用 artDialog 对话框组件!',
  4. cancel: false,
  5. ok: function () {}
  6. });
  7. d.show();
 
  1. 运行

创建 iframe 内容

artDialog 提供了一个增强版用来支持复杂的 iframe 套嵌的页面,可以在顶层页面创建一个可供 iframe 访问的对话框创建方法,例如:

  1. seajs.use(['dialog/src/dialog-plus'], function (dialog) {
  2. window.dialog = dialog;
  3. });

然后子页面就可以通过top.dialog控制对话框了。

打开示例页面

小提示:增强版的选项比标准版多了urloniframeload这几个字段。

方法

若无特别说明,方法均支持链式调用。

show([anchor])

显示对话框。

默认居中显示,支持传入元素节点或者事件对象。

  • 参数类型为HTMLElement:可吸附到元素上,同时对话框将呈现气泡样式。
  • 参数类型为Event Object:根据event.pageXevent.pageY定位。

示例

  1. var d = dialog();
  2. d.content('hello world');
  3. d.show(document.getElementById('api-show'));
 
  1. 运行
  1. var d = dialog({
  2. id: 'api-show-dialog',
  3. quickClose: true,
  4. content: '右键菜单'
  5. });
  6. $(document).on('contextmenu', function (event) {
  7. d.show(event);
  8. return d.destroyed;
  9. });
 
  1. 运行

showModal([anchor])

显示一个模态对话框。

其余特性与参数可参见show([anchor])方法。

示例

  1. var d = dialog({
  2. title: 'message',
  3. content: '<input autofocus />'
  4. });
  5. d.showModal();
 
  1. 运行

close([result])

关闭(隐藏)对话框。

可接收一个返回值,可以参见 returnValue

注意close()方法只隐藏对话框,不会在 DOM 中删除,删除请使用remove()方法。

remove()

销毁对话框。

注意:不同于close([result])方法,remove()方法会从 DOM 中移出对话框相关节点,销毁后的对话框无法再次使用。

对话框按钮点击后默认会依次触发 close()remove() 方法。如果想手动控制对话框关闭可以如下操作:

  1. var d = dialog();
  2. // [..]
  3. d.close().remove();
 
  1. 运行

content(html)

写入对话框内容。

html参数支持StringHTMLElement类型。

示例

传入字符串:

  1. var d = dialog();
  2. d.content('hello world');
  3. d.show();
 
  1. 运行

传入元素节点:

  1. var elem = document.getElementById('test');
  2. dialog({
  3. content: elem,
  4. id: 'EF893L'
  5. }).show();

title(text)

写入对话框标题。

示例

  1. var d = dialog();
  2. d.title('hello world');
  3. d.show();
 
  1. 运行

width(value)

设置对话框宽度。

示例

  1. dialog({
  2. content: 'hello world'
  3. })
  4. .width(320)
  5. .show();
 
  1. 运行

height(value)

设置对话框高度。

示例

  1. dialog({
  2. content: 'hello world'
  3. })
  4. .height(320)
  5. .show();
 
  1. 运行

reset()

手动刷新对话框位置。

通常动态改变了内容尺寸后需要刷新对话框位置。

button(args)

自定义按钮。

参数请参考 选项button;同时支持传入 HTML 字符串填充按钮区域。

focus()

聚焦对话框(置顶)。

blur()

让对话框失去焦点。

addEventListener(type, callback)

添加事件。

支持的事件有:showclosebeforeremoveremoveresetfocusblur

removeEventListener(type, callback)

删除事件。

dialog.get(id)

根据获取打开的对话框实例。

注意:这是一个静态方法。

dialog.getCurrent()

获取当前(置顶)对话框实例。

注意:这是一个静态方法。

配置参数

content

设置消息内容。

类型

String, HTMLElement

示例

传入字符串:

  1. dialog({
  2. content: 'hello world!'
  3. }).show();
 
  1. 运行

传入元素节点:

  1. var elem = document.getElementById('test');
  2. dialog({
  3. content: elem,
  4. id: 'EF893L'
  5. }).show();

title

标题内容。

类型

String

示例

  1. dialog({
  2. title: 'hello world!'
  3. }).show();
 
  1. 运行

statusbar

状态栏区域 HTML 代码。

可以实现类似“不再提示”的复选框。注意:必须有按钮才会显示。

类型

String

示例

  1. var d = dialog({
  2. title: '欢迎',
  3. content: '欢迎使用 artDialog 对话框组件!',
  4. ok: function () {},
  5. statusbar: '<label><input type="checkbox">不再提醒</label>'
  6. });
  7. d.show();
 
  1. 运行

ok

确定按钮。

回调函数this指向dialog对象,执行完毕默认关闭对话框,若返回 false 则阻止关闭。

类型

Function

示例

  1. dialog({
  2. ok: function () {
  3. this
  4. .title('消息')
  5. .content('hello world!')
  6. .width(130);
  7. return false;
  8. }
  9. }).show();
 
  1. 运行

okValue

(默认值: "ok")  确定按钮文本。

类型

String

示例

  1. dialog({
  2. okValue: '猛击我',
  3. ok: function () {
  4. this.content('hello world!');
  5. return false;
  6. }
  7. }).show();
 
  1. 运行

cancel

取消按钮。

取消按钮也等同于标题栏的关闭按钮,若值为false则不显示关闭按钮。回调函数this指向dialog对象,执行完毕默认关闭对话框,若返回false则阻止关闭。

类型

Function, Boolean

示例

  1. dialog({
  2. title: '消息',
  3. ok: function () {},
  4. cancel: function () {
  5. alert('取消');
  6. }
  7. }).show();
 
  1. 运行
  1. dialog({
  2. title: '消息',
  3. content: '不显示关闭按钮',
  4. ok: function () {},
  5. cancel: false
  6. }).show();
 
  1. 运行

cancelValue

(默认值: "cancel") 取消按钮文本。

类型

String

示例

  1. dialog({
  2. cancelValue: '取消我',
  3. cancel: function () {
  4. alert('关闭');
  5. }
  6. }).show();
 
  1. 运行

cancelDisplay

(默认值: true) 是否显示取消按钮。

类型

Boolean

示例

  1. dialog({
  2. title: '提示',
  3. content: '这是一个禁止关闭的对话框,并且没有取消按钮',
  4. cancel: function () {
  5. alert('禁止关闭');
  6. return false;
  7. },
  8. cancelDisplay: false
  9. }).show();
 
  1. 运行

button

自定义按钮组。

类型

Array

选项

名称 类型 描述
value String 按钮显示文本
callback Function (可选) 回调函数this指向dialog对象,执行完毕默认关闭与销毁对话框(依次执行close()remove()),若返回false则阻止关闭与销毁
autofocus Boolean (默认值:false) 是否自动聚焦
disabled Boolean (默认值: false) 是否禁用

示例

  1. dialog({
  2. button: [
  3. {
  4. value: '同意',
  5. callback: function () {
  6. this
  7. .content('你同意了');
  8. return false;
  9. },
  10. autofocus: true
  11. },
  12. {
  13. value: '不同意',
  14. callback: function () {
  15. alert('你不同意')
  16. }
  17. },
  18. {
  19. id: 'button-disabled',
  20. value: '无效按钮',
  21. disabled: true
  22. },
  23. {
  24. value: '关闭我'
  25. }
  26. ]
  27. }).show();
 
  1. 运行

width

设置对话框 内容 宽度。

类型

String, Number

示例

  1. dialog({
  2. width: 460
  3. }).show();
 
  1. 运行
  1. dialog({
  2. width: '20em'
  3. }).show();
 
  1. 运行

height

设置对话框 内容 高度。

类型

String, Number

示例

  1. dialog({
  2. height: 460
  3. }).show();
 
  1. 运行
  1. dialog({
  2. height: '20em'
  3. }).show();
 
  1. 运行

skin

设置对话框额外的className参数。

多个className请使用空格隔开。

类型

String

示例

  1. dialog({
  2. skin: 'min-dialog tips'
  3. }).show();

padding

(默认值: 继承 css 文件设置) 设置消息内容与消息容器的填充边距,即 style padding属性

类型

String

示例

  1. dialog({
  2. content: 'hello world',
  3. padding: 0
  4. }).show();
 
  1. 运行

fixed

(默认值: false) 开启固定定位。

固定定位是 css2.1 position的一个属性,它能固定在浏览器某个地方,也不受滚动条拖动影响。IE6 与部分移动浏览器对其支持不好,内部会转成绝对定位。

类型

Boolean

示例

  1. dialog({
  2. fixed: true,
  3. title: '消息',
  4. content: '请拖动滚动条查看'
  5. }).show();
 
  1. 运行

align

(默认值: "bottom left") 设置对话框与其他元素的对齐方式。

如果show(elem)showModal(elem)传入元素,align参数方可生效,支持如下对齐方式:

  • "top left"
  • "top"
  • "top right"
  • "right top"
  • "right"
  • "right bottom"
  • "bottom right"
  • "bottom"
  • "bottom left"
  • "left bottom"
  • "left"
  • "left top"

类型

String

示例

  1. var d = dialog({
  2. align: 'left',
  3. content: 'Hello World!',
  4. quickClose: true
  5. });
  6. d.show(document.getElementById('option-align'));
 
  1. 运行

12 个方向定位演示

autofocus

(默认值: true) 是否支持自动聚焦。

类型

Boolean

quickClose

(默认值: false) 是否点击空白出快速关闭。

类型

Boolean

示例

  1. var d = dialog({
  2. content: '点击空白处快速关闭',
  3. quickClose: true
  4. });
  5. d.show(document.getElementById('option-quickClose'));
 
  1. 运行

zIndex

(默认值: 1024) 重置全局zIndex初始值,用来改变对话框叠加高度。

比如有时候配合外部浮动层 UI 组件,但是它们可能默认zIndex没有对话框高,导致无法浮动到对话框之上,这个时候你就可以给对话框指定一个较小的zIndex值。

请注意这是一个会影响到全局的配置,后续出现的对话框叠加高度将重新按此累加。

类型

Number

示例

  1. dialog({
  2. zIndex: 87
  3. }).show();
 
  1. 运行

onshow

对话框打开的事件。

回调函数this指向dialog对象。

类型

Function

示例

  1. var d = dialog({
  2. content: 'loading..',
  3. onshow: function () {
  4. this.content('dialog ready');
  5. }
  6. });
  7. d.show();
 
  1. 运行

onclose

对话框关闭后执行的事件。

回调函数this指向dialog对象。

类型

Function

示例

  1. var d = dialog({
  2. onclose: function () {
  3. alert('对话框已经关闭');
  4. },
  5. ok: function () {}
  6. });
  7. d.show();
 
  1. 运行

onbeforeremove

对话框销毁之前事件。

回调函数this指向dialog对象。

类型

Function

onremove

对话框销毁事件。

回调函数this指向dialog对象。

类型

Function

示例

  1. var d = dialog({
  2. onclose: function () {
  3. alert('对话框已经关闭');
  4. },
  5. onremove: function () {
  6. alert('对话框已经销毁');
  7. },
  8. ok: function () {}
  9. });
  10. d.show();
 
  1. 运行

onfocus

对话框获取焦点事件。

回调函数this指向dialog对象。

类型

Function

onblur

对话框失去焦点事件。

回调函数this指向dialog对象。

类型

Function

onreset

对话框位置重置事件。

回调函数this指向dialog对象。

类型

Function

id

设定对话框唯一标识。

  1. 可防止重复 ID 对话框弹出。
  2. 支持使用dialog.get(id)获取某个对话框的接口。

类型

String

示例

  1. dialog({
  2. id: 'id-demo',
  3. content: '再次点击运行看看'
  4. }).show();
  5. dialog.get('id-demo').title('8888888888');
 
  1. 运行

属性

open

判断对话框是否被打开。

returnValue

对话框返回值。

示例

  1. var d = dialog({
  2. title: '消息',
  3. content: '<input id="property-returnValue-demo" value="1" />',
  4. ok: function () {
  5. var value = $('#property-returnValue-demo').val();
  6. this.close(value);
  7. this.remove();
  8. }
  9. });
  10. d.addEventListener('close', function () {
  11. alert(this.returnValue);
  12. });
  13. d.show();
 
  1. 运行

其他

自定义样式

打开配置文件: src/dialog-config.js,其中cssUir字段是 css 文件的路径,innerHTML字段则是 artDialog 的模板。修改这两个字段即可很方便的设计属于自己的皮肤。

一套皮肤可以添加不同的className实现多种状态,可参考 skin 选项。

源码构建

使用GruntJS在 artDialog 源码根目录执行即可。

artDialog v5 升级 v6 参考

https://github.com/aui/artDialog/wiki/artDialog-v5%E5%8D%87%E7%BA%A7v6%E5%8F%82%E8%80%83

支持

artDialog 是基于 LGPL 协议免费开源的程序,问题反馈可在 Github issues 上进行(为了保证效率,请务必描述清楚你的问题,例如包含 artDialog 版本号、浏览器版本等必要信息,有 demo 甚佳。不合格问题将可能会被关闭)。


如果你喜欢 artDialog,请捐赠一杯咖啡的费用以支持 artDialog。如果您认为 LGPL 开源协议满足不了您的项目,亦可购买商业授权

[转]artDialog的更多相关文章

  1. artdialog

    <html><head><meta http-equiv="Content-Type" content="text/html; charse ...

  2. PHPCMS系统使用的弹出窗口插件artDialog

    来源: http://aui.github.io/artDialog/doc/index.html  (官方) http://lab.seaning.com/ http://www.mb5u.com/ ...

  3. ArtDialog文档

    http://www.planeart.cn/demo/artDialog/_doc/API.html#API

  4. ArtDialog简单使用示例

    <html><head><meta http-equiv="Content-Type" content="text/html; charse ...

  5. 网站对话框开源脚本--ArtDialog V6.0

    初识对话框脚本觉得artDialog还是挺不错的开源的js脚本,最新版本都是V6.0 ,相对之前版本,artDialog的语法也发生很大的变化,windows对应的JS版本如下 点击下载 语法也发生变 ...

  6. artDialog测试

    artDialog测试 <script src="../Content/artDialog/v4/artDialog.source.js?skin=default">& ...

  7. artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口

    artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口 自适应内容 artDialog的特殊UI框架能够适应内容变化,甚至连外部程序动态插入的内容它仍然能自适应 ...

  8. artDialog 文档

    artDialog —— 经典.优雅的网页对话框控件. 支持普通与 12 方向气泡状对话框 完善的焦点处理,自动焦点附加与回退 支持 ARIA 标准 面向未来:基于 HTML5 Dialog 的 AP ...

  9. artDialog ( v 6.0.2 ) content 参数引入页面 html 内容

    /*! artDialog v6.0.2 | https://github.com/aui/artDialog */ 将页面某一隐藏的 div 的 html 内容传到 artdialog 的弹窗中,并 ...

随机推荐

  1. SqlDataReader、SqlDataAdapter與SqlCommand的 区别

    1.SqlDataReader,在线应用,需要conn.open(),使用完之后要关闭. SqlConnection conn = new SqlConnection(connStr); //conn ...

  2. .NET转JAVA之拼音组件

    PS:做了4年,自我感觉.NET到瓶颈了,而且公司并没有深入运用.NET技术的项目,自我学习感觉也没太大动力(请骂我懒T_T).再加上技术年限越往上走,了解到的.NET职业提升环境就越来越艰难(个人理 ...

  3. [moka同学笔记]Yii2.0验证码

    1.Model中Code.php <?php /** * Created by PhpStorm. * User: moka同学 * Date: 2016/07/25 * Time: 10:48 ...

  4. spring事件通知机制详解

    优势 解耦 对同一种事件有多种处理方式 不干扰主线(main line) 起源 要讲spring的事件通知机制,就要先了解一下spring中的这些接口和抽象类: ApplicationEventPub ...

  5. 二、SQL语句映射文件(1)resultMap

    //备注:该博客引自:http://limingnihao.iteye.com/blog/106076 SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对 ...

  6. CentOS7.2设置zabbix

    准备工作 1.lnmp或lamp环境,本机环境:CentOS 7.2 64位,nginx1.10.2 php5.6.26 mysql5.7.15 2.软件Zabbix wget http://nchc ...

  7. 功放AUX接口解析

    功放上的AUX输入端口就是音频输入端口,用来连接音频输出设备:PC机上声卡.MP3播放器.CD机等

  8. [mysql] 一次sql耗时高引发报警的分析和处理

    1.现象: 最近两天在每天的凌晨0:15-20分左右收到报警短息,报警内容: JDBC-SQL请求最近三分钟内平均耗时时间过高的报警,监控类型:SQL... 2.分析: 从现象来看 每天凌晨15分,可 ...

  9. [模仿][JS]新浪财经7*24直播

    使用新浪财经7*24直播的数据 简单的做一个山寨品 在线地址:[痛苦啊,有GFW,却没有vpn,往heroku上传浪费了好多时间...] http://wangxinsheng.herokuapp.c ...

  10. SHAREPOINT 工作流审批权限问题

    继续我们上次的工作流,我们发现所有人都有审批权限,这和我们正常的逻辑相反,正常应该是只有审批人才有权限,其它人只能查看,如下 这样解决,同样为SpecialPermissions 绑定到新成员 > ...