html 弹窗实现拖拽,基于js实现可拖动弹出框插件

特效描述:基于js实现 可拖动 弹出框。基于js实现可拖动弹出框插件

代码结构

1. 引入CSS

2. 引入JS

3. HTML代码

演示与说明

使用默认的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

});

默认模板如果只有content有内容,将不显示header和footer部分,将显示最简模式。

autoClose:自动关闭窗口,单位为毫秒(ms)。

运行

自定义弹出层

 
   

<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

});

follow:被跟随元素,参数可以是元素的id,也可以是DOM对象。

followX:相对于被跟随元素的X轴偏移。

followY:相对于被跟随元素的X轴偏移。

运行

关闭拖拽

 
   

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">&times;</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>

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

});

};

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用jQuery原生可以很容易实现拖拽放大缩小的弹出。首先,需要引入jQuery库,在HTML中创建弹出的结构,并设置好初始样式。然后使用jQuery的事件绑定方法,为弹出的标题栏添加鼠标按下事件,实现拖拽功能。接着,为弹出的放大缩小按钮添加点击事件,通过改变弹出的宽高和位置实现放大缩小效果。具体实现步骤如下: 1. 引入jQuery库: ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> ``` 2. 创建弹出结构: ```html <div class="popup"> <div class="popup-title">弹出标题</div> <div class="popup-content"> <!-- 弹出内容 --> </div> <div class="popup-controls"> <button class="btn-zoom-in">放大</button> <button class="btn-zoom-out">缩小</button> </div> </div> ``` 3. 设置初始样式: ```css .popup { position: absolute; top: 50px; left: 50px; width: 200px; height: 150px; border: 1px solid #000; background-color: #fff; } .popup-title { cursor: move; } ``` 4. 实现拖拽功能: ```javascript $('.popup-title').on('mousedown', function(e) { var offsetX = e.clientX - $(this).offset().left; var offsetY = e.clientY - $(this).offset().top; $(document).on('mousemove', function(e) { $('.popup').offset({ top: e.clientY - offsetY, left: e.clientX - offsetX }); }); $(document).on('mouseup', function() { $(document).off('mousemove'); $(document).off('mouseup'); }); }); ``` 5. 实现放大缩小功能: ```javascript $('.btn-zoom-in').on('click', function() { var width = $('.popup').width(); var height = $('.popup').height(); $('.popup').css({ width: width * 1.2, height: height * 1.2 }); }); $('.btn-zoom-out').on('click', function() { var width = $('.popup').width(); var height = $('.popup').height(); $('.popup').css({ width: width * 0.8, height: height * 0.8 }); }); ``` 通过以上步骤,就可以实现一个带拖拽、放大和缩小功能的弹出。当用户鼠标点击弹出标题栏后,即可拖动整个弹出;点击放大缩小按钮后,即可实现弹出的放大和缩小效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值