含有遮罩层的对话框,用于模拟浏览器的alert、confirm等。
模态对话框通过遮罩层来阻止用户的其他行为。
- 标准弹框 (标题、内容、底部)
- 非标准弹框 (内容)
它们的相同点是都有最外边的容器和关闭按钮。
标准弹框其实也可以隐藏标题和底部,但是非标准弹框更多的是需要支持自定义的布局(例如弹框里面有一个Tab),而标准在标题、内容、底部这几块布局上都做了限制。
因为右上角的关闭图标用到了webIcon,所以会依赖下面的css文件,这一块在将来会做处理。
<link rel="stylesheet" href="//at.alicdn.com/t/font_rh9ogim4kcd0wwmi.css">
基本用法:
new Dui.Modal(option)
option为json对象
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
option.type | string | default | 弹框类型,默认为标准弹窗。当需要支持非标准弹框,值为:custom |
option.className | string | 空 | 挂载到弹框上的类,通过它来自定义自己的class |
option.mask | boolean | true | 是否显示蒙板 |
option.closeClass | string | iconfont icon-shanchu5 | 关闭按钮的class,必须使用webIcon的类 |
option.zIndex | int | 9999 | 最外层容器的z-index属性 |
option.width | int/string | 420 | 弹框宽度,写法支持:160px 或者 160,当宽超过920时,会取920的宽度 |
option.height | int/string | auto | 弹框高度,写法支持:160px 或者 160,当要求高度自适应时,值为auto,但它和宽度一样,有一个最大高度:580 |
option.title | string | 提示 | 弹框标题,建议传单纯的文字。当值为空时,整个title不存在 |
option.titleIconClass | string | 无 | 弹框标题图标的class,当有该class时,如iconfont icon-sousuo1 ,它就会显示在title中 |
option.content | string | 内容 | 弹框内容,支持HTML |
option.btnPos | string | right | 弹框底部按钮对齐方式,默认靠右对齐,取值:left/center/right |
option.ok | boolean/string | false | 当值为boolean时,表示是否显示确认按钮;当值为字符串时,显示确认按钮,并将它的按钮文本修改成该字符串 |
option.cancel | boolean/string | false | 当值为boolean时,表示是否显示取消按钮;当值为字符串时,显示取消按钮,并将它的按钮文本修改成该字符串 |
option.okFn | function | 无 | 显示确认按钮,触发确认的事件 |
option.cancelFn | function | 无 | 显示确认按钮,触发确认的事件 |
option.close | boolean | true | 是否显示右上角的关闭按钮 |
option.init | function | 无 | 弹框渲染完可能要做一些处理的事件,在事件中可以通过this.dialogDom 取到弹框容器 |
option.draggable | boolean | false | 是否可以拖拽对话框,默认为false |
option.appendEl | string/dom | document.body | 弹窗插入到哪个容器下,但边界目前还未处理,还是以html整个为边界 |
content的说明:
当它以#
开头时,会去找ID为”#“后面的内容的DOM元素,然后取到它里面的innerHTML。往往会有以下两种情况:
- script,譬如:
<script type="text/html">
这里是内容啊
</script>
- 隐藏的DIV容器,譬如:
<div style="display: none">
这里是内容
</div>
两者的区别在于,script
里面的内容可以被多次利用,而隐藏的DIV容器则不会,在程序中有一个判断,如果是DIV容器,取到它的innerHTML后,将其从document上移除。
理由在于隐藏的div容器也是真实存在的DOM,将其内容挂载到弹窗上时,要将这个外面的DOM给删除掉,以确保事件的唯一性。
支持的方法:
方法名 | 描述 |
---|---|
hide | 关闭弹窗 |
调用方式简单如下:
var dialog = new Dui.Modal({})
dialog.hide();
注:像init或者okFn函数中,可以通过调用this.hide()来关闭(销毁)弹窗
支持的事件:
事件通过$on来绑定,如:
var dialog = new Dui.Modal({})
dialog.$on("事件名", function(){})
事件名 | 描述 |
---|---|
ok | 点击确定 触发的事件 |
close | 点击右上角关闭时触发的事件 |
cancel | 点击取消 触发的事件 |
esc | 键盘ESC触发的事件 |
destroy | 点取消 、“关闭”、“ESC”都会触发的事件 |
dragStart | 当draggable为true时,开始拖拽的事件 |
dragEnd | 当draggable为true时,结束拖拽的事件 |
- Dui.Modal.alert(content[, title, close])
弹出一个alert对话框。
例:
Dui.Modal.alert("xxxx");
- Dui.Modal.confirm(content[, title, close, align])
align为确定取消按钮的显示位置,默认为居右。
弹出一个confirm对话框。它会返回一个Promise对象,因此如果在非chrome下要引用promise库才行,不然会报错
通常我们在点击确认
后,想做一些事件,代码如下:
Dui.Modal.confirm("xxxx").then(function(){
//todo something
});