特效描述:基于js实现 可拖动 弹出框。基于js实现可拖动弹出框插件
代码结构
1. 引入CSS
2. 引入JS
3. HTML代码
easyDialog v2.0
演示与说明
使用默认的HTML模板
var btnFn = function(){
alert( e.target );
return false;
};
easyDialog.open({
container : {
header : '弹出层标题',
content : '欢迎使用easyDialog : )',
yesFn : btnFn,
noFn : true
}
});
默认的HTML模板分成3个部分
header:包含弹出层的标题和关闭按钮
conent:包含弹出层的内容
footer:包含确定和取消按钮
如果header没有内容将不显示,content必须要有内容,footer没有2个按钮也不显示。
yesFn:确定按钮的回调函数,回调函数返回false将不关闭弹出层。
noFn:取消按钮的回调函数,回调函数返回false将不关闭弹出层,取消按钮的回调函数也同样会绑定在关闭按钮上,如果参数不是函数而是true,那么取消按钮就只有关闭弹出层的功能。
如果没有给按钮传回调函数,按钮将不显示。
默认模板只有content
easyDialog.open({
container : {
content : '弹出层将在2秒后关闭...'
},
autoClose : 2000
});
自定义弹出层
<div id="imgBox" style="display:none">
<img src="test_img.jpg" alt="" />
</div>
easyDialog.open({
container : 'imgBox',
autoClose : 2000,
fixed : false
});
自定义弹出层时,需要先将HTML结构添加到页面中,然后设置其隐藏(display:none),传参必须为id。
fixed:该参数为false时,弹出窗口为绝对定位(不跟随页面的滚动而滚动),为true时,弹出窗口为固定定位(跟随页面的滚动而滚动)。
遮罩层
easyDialog.open({
container : {
header : '没有遮罩层',
content : '欢迎使用easyDialog : )'
},
overlay : false
});
overlay:该参数为false时,将不显示遮罩层,没有遮罩层的情况下可以方便对页面继续进行操作。
跟随定位
easyDialog.open({
container : {
header : '跟随定位',
content : '弹出窗口可以跟随某元素绝对定位'
},
follow : 'demoBtn5',
followX : -137,
followY : 24
});
关闭拖拽
easyDialog.open({
container : {
header : '关闭拖拽',
content : '欢迎使用easyDialog : )'
}
drag : false
});
drag:该参数为false时将关闭拖拽的功能。
如果是自定义弹出层,要实现拖拽需要满足2个条件,首先要确保drag为true,然后需要一个id为“easyDialogTitle”的DOM元素。
关闭弹出层
easyDialog.close();
调用easyDialog.close()方法可以关闭当前的弹出层,另外使用ESC键也可以关闭弹出层,如果不想使用ESC键来关闭弹出层设置lock为true即可。
如果是自定义弹出层,也想使用关闭按钮来关闭弹出层,除了给该按钮手动绑定一个关闭弹出层的方法外,还可以添加一个id为“closeBtn”的DOM元素,这样不绑定事件就也可以关闭弹出层。
回调函数
var callFn = function(){
alert( 'hello' );
};
easyDialog.open({
container : {
header : '回调函数',
content : '欢迎使用easyDialog : )'
},
callback : callFn
});
callback:设置弹出层关闭后执行的回调函数。
参数列表
参数参数类型默认参数参数说明
containerString / Objectnull弹出窗口内容
参数为DOM元素的id,那么弹出层内容将是自定义的,如果是object将自动创建一个默认的弹出层内容模板。
内容模板的参数:
header:弹出层的标题,并包含了关闭按钮,如果没有参数将不显示。
content:弹出层的内容,参数可以是字符串,也可以是HTML代码。
yesFn:确定按钮的回调函数,回调函数返回false将不关闭弹出层,回调函数的this指向easyDialog,无参数将不显示按钮。
noFn:取消按钮的回调函数,回调函数返回false将不关闭弹出层,回调函数的this指向easyDialog,该回调函数也同样会绑定在关闭按钮上,如果参数不是函数而是true,那么取消按钮仅有关闭弹出层的功能,无参数将不显示按钮。
yesText:确定按钮的文本,默认为“确定”。
noText:取消按钮的文本,默认为“取消”。
dragBooleantrue拖拽效果
true:启用拖拽效果。
false:禁用拖拽效果。
自定义弹出层,要实现拖拽需要满足2个条件,首先要确保drag参数为true,然后需要一个id为“easyDialogTitle”的DOM元素。
fixedBooleantrue设置定位
true:固定定位,弹出窗口跟随页面滚动而滚动。
false:绝对定位,弹出窗口不跟随页面的滚动。
overlayBooleantrue设置遮罩层
true:显示遮罩层,不可对页面其他元素进行操作。
false:不显示遮罩层,可以对页面其他元素进行操作。
followString / Objectnull跟随定位
设置弹出窗口跟随某元素进行绝对定位,跟随定位时将不显示遮罩层,参数可以是元素id也可以是DOM对象。
followXNumber0设置跟随定位时,相对于被跟随元素的X轴偏移,单位为px,传参时无需带单位。
followYNumber0设置跟随定位时,相对于被跟随元素的Y轴偏移,单位为px,传参时无需带单位。
lockBooleanfalse锁定弹出层
true:ESC键不可以关闭弹出层。
false:ESC键可以关闭弹出层。
autoCloseNumber0设置弹出层自动关闭,单位为ms,传参时无需带单位。
callbackFunctionnull设置关闭弹出层后执行的回调函数,this指向easyDialog。
默认内容模板的样式和结构
如果要自定义默认模板的样式,可以修改下载文档中的easydialog.css文件,下面是相应的HTML源码部分:
<div class="easyDialog_wrapper" id="easyDialogWrapper" >
<div class="easyDialog_content">
<h4 class="easyDialog_title" id="easyDialogTitle">
<a href="javascript:void(0)" title="关闭窗口" class="close_btn" id="closeBtn">×</a>
弹出层标题
</h4>
<div class="easyDialog_text">欢迎使用easyDialog : )</div>
<div class="easyDialog_footer">
<button class="btn_normal" id="easyDialogNoBtn">取消</button>
<button class="btn_highlight" id="easyDialogYesBtn">确定</button>
</div>
</div>
</div>
![](test_img.jpg)
var $ = function(){
return document.getElementById(arguments[0]);
};
var btnFn = function( e ){
alert( e.target );
return false;
};
$('demoBtn1').onclick = function(){
easyDialog.open({
container : {
header : '弹出层标题',
content : '欢迎使用easyDialog : )',
yesFn : btnFn,
noFn : true
},
fixed : false
});
};
$('demoBtn2').onclick = function(){
easyDialog.open({
container : {
content : '弹出层将在2秒后关闭...'
},
autoClose : 2000
});
};
$('demoBtn3').onclick = function(){
easyDialog.open({
container : 'imgBox',
autoClose : 2000,
fixed : false
});
};
$('demoBtn4').onclick = function(){
easyDialog.open({
container : {
header : '没有遮罩层',
content : '欢迎使用easyDialog : )'
},
overlay : false
});
};
$('demoBtn5').onclick = function(){
easyDialog.open({
container : {
header : '跟随定位',
content : '弹出层可以跟随某元素绝对定位'
},
follow : 'demoBtn5',
followX : -137,
followY : 24
});
};
$('demoBtn6').onclick = function(){
easyDialog.open({
container : {
header : '关闭拖拽',
content : '欢迎使用easyDialog : )'
},
drag : false
});
};
var callFn = function(){
alert( 'hello' );
};
$('demoBtn7').onclick = function(){
easyDialog.open({
container : {
header : '回调函数',
content : '欢迎使用easyDialog : )'
},
callback : callFn
});
};