当前位置: 首页 > Web前端 > HTML

自定义弹窗(对话框)

时间:2023-04-02 13:25:44 HTML

简单弹窗开发说明本项目使用原型对象实现了弹窗的基本功能。该项目依赖于jquery。如果您使用zepto,您可能需要更改代码。它尚未经过测试。如有问题请及时反馈解决项目提供了可自定义的弹窗,可以自定义按钮,标题,以及对应按钮的回调函数样式,完全可以根据自己的情况定制需求,非常灵活。css样式/*dialog*/body.locked{overflow-y:hidden;}.dialog-box{width:100%;height:100%;max-width:720px;position:fixed;top:0;left:0;底部:0;右:0;背景:rgba(0,0,0,0.3);z-index:1000;显示:无;}.dialog-box.dialog-content{width:460px;padding:30px10px;高度:自动;边框半径:10px;背景:#ffffff;最小高度:100px;位置:绝对;顶部:50%;左侧:50%;变换:翻译(-50%,-50%);-o-变换:翻译(-50%,-50%);-moz-变换:翻译(-50%,-50%);-webkit-transform:翻译(-50%,-50%);z-index:1001;}.dialog-box.dialog-title,.dialog-box.dialog-btn{color:#666666;font-size:30px;text-align:center;}.dialog-box.dialog-title{padding:012px;}.dialog-box.dialog-btns{text-align:center;}.dialog-box.dialog-btn{display:inline-block;width:130px;margin:28px44px0;border-radius:4px;height:56px;line-height:56px;}.dialog-box.dialog-cancel-btn{background:#dddddd;}.对话框.dialog-confirm-btn{背景:#9cbf42;颜色:#ffffff;}。store-switch-tip{color:#9cbf42;font-size:30px;padding:06px;}基本样式设置,可以根据自己的需要自定义样式PopupwindowconstructorDialog=function(options){vardefaultOptions={container:'dialog-box',btns:[{klass:'dialog-cancel-btn',txt:'cancel'},{klass:'dialog-confirm-btn',txt:'confirm'}]};//合并自定义参数this.options=$.extend({},defaultOptions,options||{});};1.options:参数对象,如果不传,系统默认,参数类型必须是对象,和defaultOptions的格式一样2.$.extend():合并参数,如果不知道它的用法,请参考相关资料构造函数的原型方法Dialog.prototype={$body:$('body'),constructor:Dialog,show:function(title){var_self=this,args=Array.prototype.slice.apply(arguments),options=_self.options;args.shift();_self.$body.addClass('锁定');setTimeout(function(){$('.'+options.container).show().find('.dialog-title').html(title);$.each(options.btns,function(k,v){$('.'+v.klass).data('fn',args[k]||function(){});});},30);},init:function(opt){var_self=this,options=$.extend({},_self.options,opt||{}),//从Defineparameters合并btnsHTML='',node=$('.'+options.container).remove();//删除现有的弹出窗口node=null;$.each(options.btns,function(k,v){btnsHTML+=''+v.txt+'';});$('<节onclass="'+options.container+'">'+''+'

'+''+btnsHTML+'
'+'
'+'').appendTo('body');_self._event();返回自我;},_event:function(){var_self=this;varoptions=_self.options;$('.'+options.container).on('click','.dialog-btn',function(e){e.stopPropagation();_self.$body.removeClass('locked');$('.'+options.container).hide();$(this).data('fn')(??);});}};1.原型提供了init和show方法。init方法可以接受参数,也是一个参数对象。与构造函数中的方法相同,主要是为了方便更改弹窗功能。show方法主要是做显示处理。需要传递标题和对应按钮的回调函数,并将回调函数绑定到对应的按钮上,在按钮触发事件时回调。2.按钮回调函数的绑定是通过jquery中的data方法实现的,可以参考相关数据组件的使用//实例化弹窗对象vardialog=newDialog();//vardialog=newDialog({//可以配置相应的参数,也可以不配置使用默认,默认一个确认,一个取消,注意参数格式,参考默认参数配置//});对话.init();//初始化弹窗dialog.show('我是标题',function(){alert('触发按钮1后的回调!')},function(){console.log('按钮2的回调函数!');}[,...]);//注意回调函数要和按钮一一对应。当然也可以连续写,比如:dialog.init().show();如果需要,您也可以在弹出窗口的初始对话框中传递参数来修改默认配置参数。实例化后有双按钮,然后需要一个but按钮。这时候不需要创建弹窗实例,只需要调用实例的init方法并配置相应的参数即可。你可以这样使用它:dialog.init({btns:[{klass:'dialog-confirm-btn',txt:'Gotit'}]}).show('Ionlyhaveonebutton',function(){alert('点击我的回调')});如果您在使用过程中遇到什么问题,或者有更好的解决办法,请留言,谢谢!