基于jquery和dot.js弹出框插件,兼容IE6+等其他浏览器。

思想:弹出框元素插入body节点中,并在页面垂直居中显示(fixed定位),触发确定和关闭事件绑定。

注意ie6包含两个问题:
一、select、flash不能遮罩,采用iframe。
二、fixed属性采用滚动时重新计算高度或在样式中采用表达式计算expression。

源码分析:
1、creatHtml:采用doT.js初始化元素添加到body中;
2、show:设置宽度,高度,居中显示;
3、events:为关闭和确定绑定事件;
4、removeCallback:移出元素节点,如有执行回调方法;
5、ie6fixed:ie6中fixed的兼容性处理。

参数使用说明:

width:定义弹出框的宽度,默认值是400。
height:定义弹出框的高度,默认值是100.
title:定义弹出框的标题,默认值是空。
html:定义弹出框的内容,默认值是空。
type:定义弹出框的类型,默认值是default,其他conform和alert。
closed: 标题栏中的关闭按钮,回调方法,默认为null。
conform:包含name指按钮的名称,默认值为确定,callback回调方法,默认值为null。
cancel:包含name指按钮的名称,默认值为取消,callback回调方法,默认值为null。
备注:如果使用conform或alert时,不设置type类型是不起作用。

放在页面底部,作为公用部分:

使用方法:

$.Dialog.init({height:180,title:"弹出框",html:"亲,默认弹出框哦",closed:function() {alert("关闭");}
});

github地址:https://github.com/benpaobenpao/dialog

DEMO:

<!doctype html> <html> <head> <meta charset="UTF-8"> <title>dialog弹出框benpaobenpao</title> <style> *{margin:0px;padding: 0px;} .clearfix{*zoom:1;} .clearfix:after{content:"\0020";display:block;height:0;clear:both;overflow:hidden;visibility:hidden;} .dialogbg{display:block; *zoom:1; position: absolute; left: 0px; top: 0px; height: 100%; width: 100%; opacity: 0.35;filter:alpha(opacity=30); background: #ccc;z-index: 9999;} .dialogbox{position: fixed;_position: absolute;-webkit-box-shadow: 0px 0px 6px #999;border: 1px solid #ccc;box-shadow: 0px 0px 3px #999;border-radius: 6px; z-index: 99999;left: 50%;top: 50%;background: #f5fffa;overflow: hidden;} .dialogboxrunstart{-webkit-transform: scale(0px,0px);-webkit-transition:all 0.2s ease-in-out;-moz-transform: scale(0px,0px);-moz-transition:all 0.2s ease-in-out;-ms-transform: scale(0px,0px);-ms-transition:all 0.2s ease-in-out;-o-transform: scale(0px,0px);-o-transition:all 0.2s ease-in-out;transform: scale(0px,0px);transition:all 0.2s ease-in-out;} .dialogtit{position: relative;height: 30px; line-height: 30px; overflow: hidden;padding: 0px 10px;border-bottom: 1px solid #274863;font-size: 16px;background: #4682b4;} .dialogclosed{position: absolute;right: 10px;color: #fff;font-weight: 700;font-size: 20px;cursor: pointer;} .dialogclosed:hover{color: #f00;} .dialogtxt{color: #fff;font-weight: 700;margin-right: 20px;} .dialogmain{padding: 10px 20px 10px 20px;} .dialogBtns{text-align: center;padding-top: 5px;} .dialogconform,.dialogcancel{display: inline-block;*display: inline;*zoom:1;padding: 0px 10px;height: 24px;line-height: 24px;color: #fff;font-size: 12px;border-radius: 4px;background: #005eac;border-width: 1px;border-style: solid;border-color: #b8d4e8 #124680 #124680 #b8d4e8;cursor: pointer;} .dialogcancel{margin-left: 10px;} .dialogconform:hover,.dialogcancel:hover{background: #0000ff;} </style> <script src="http://files.cnblogs.com/kuikui/jquery-1.10.2.min.js"></script> <script src="http://files.cnblogs.com/kuikui/dot.min.js"></script> <style> body{height: 1500px;} .main{width: 960px; margin: 60px auto 0px; } .main .btn{width: 100px; height: 30px; line-height: 30px; text-align: center; cursor: pointer;} .mtable{ height: 100px; overflow-y: auto;} .mtable table{width: 100%; text-align: center;} .mtable table th, .mtable table td{padding:10px 0px;} </style> </head> <body> <div class="main"> <div> <img src="http://images.cnblogs.com/cnblogs_com/kuikui/354173/r_test1.jpg" /> <select><option>one</option><option>two</option></select> 弹出框插件测试。。。 </div> <div> 点击测试: <input class="btn" id="btndef" type="button" value="default" /> <input class="btn" id="btnconf" type="button" value="confirm" /> <input class="btn" id="btnal" type="button" value="alert" /> <p>使用conform、alert必须制定其type类型,type默认值是default。</p> </div> </div> <script id="arrtmpl" type="text/x-dot-template"> <div class="mtable"> <table > <thead> <tr> <th>第一项</th> <th>第二项</th> <th>第三项</th> </tr> </thead> <tbody> {{~it.array:value:index }} <tr> <td>{{= value.one }}</td><td>{{= value.two }}</td><td>{{= value.three }}</td> </tr> {{~}} </tbody> </table> </div> </script> <script id="dialogtmpl" type="text/x-dot-template"> {{? it.isIE6===false }} <div id="dialogbg" class="dialogbg"></div> {{?? }} <iframe id="dialogbg" class="dialogbg"></iframe> {{?}} <div id="dialogbox" class="dialogbox"> <div class="dialogcont"> <div class="dialogtit clearfix"> <a class="dialogclosed" title="关闭">⊗</a> <div class="dialogtxt">{{=it.title}}</div> </div> <div class="dialogmain">{{=it.html}}</div> {{? it.type === "conform"}} <div class="dialogBtns"><a class="dialogconform">{{=it.conform.name||"确定"}}</a></div> {{?? it.type === "alert"}} <div class="dialogBtns"><a class="dialogconform">{{=it.conform.name||"确定"}}</a><a class="dialogcancel">{{=it.cancel.name||"取消"}}</a></div> {{?}} </div> </div> </script> <script> (function($) { $.Dialog = { init: function(options) { var _this = this, defaults = { width: "400", height: "100", title: "", html: "", type: "default", // default conform alert closed: null, conform: { name: "确定", callback: null }, cancel: { name: "取消", callback: null } }; options.isIE6 = !! window.ActiveXObject && !window.XMLHttpRequest; _this.options = $.extend({}, defaults, options); _this.creatHtml(); _this.show(); _this.events(); if(_this.options.isIE6){ _this.ie6fixed(); } }, creatHtml: function() { var _this = this; var interText = doT.template($("#dialogtmpl")[0].text); $("body").append(interText(_this.options)); }, show: function() { var _this = this; _this.dialogbg = $("#dialogbg"); _this.dialogbox = $("#dialogbox"); _this.dialogbg.css({ "height": $(document).height() }); _this.dialogbox.css({ "margin-top": (-_this.options.height / 2) + "px", "margin-left": (-_this.options.width / 2) + "px", "width": _this.options.width + "px", "height": _this.options.height + "px" }); _this.dialogbox.addClass("dialogboxrunstart"); }, events: function() { var _this = this; _this.dialogclosed = _this.dialogbox.find(".dialogclosed"); _this.dialogconform = _this.dialogbox.find(".dialogconform"); _this.dialogcancel = _this.dialogbox.find(".dialogcancel"); _this.dialogclosed.on("click", function() { _this.removeCallback(_this.options.closed); }); _this.dialogconform.on("click", function() { _this.removeCallback(_this.options.conform.callback); }); _this.dialogcancel.on("click", function() { _this.removeCallback(_this.options.cancel.callback); }); }, removeCallback: function(call) { var _this = this; _this.dialogbg.remove(); _this.dialogbox.remove(); !! call && call(); }, ie6fixed: function() { var _this = this; $(window).scroll(function() { _this.dialogbox.css({ "top": (($(window).height() - _this.options.height) / 2 + $(document).scrollTop()) + "px" }); }); } } })(jQuery); </script> <script> (function($) { $("#btndef").click(function() { $.Dialog.init({ height: 180, title: "弹出框", html: "亲,默认弹出框哦", closed: function() { alert("关闭"); } }); }); $("#btnconf").click(function() { $.Dialog.init({ height: 100, html: "", type: "conform", conform: { name: "确认按钮哦哦哦哦" } }); }); $("#btnal").click(function() { var arr = { "array": [{ "one": "1", "two": "2", "three": "3" }, { "one": "11", "two": "22", "three": "33" }, { "one": "111", "two": "222", "three": "333" }, { "one": "1111", "two": "2222", "three": "3333" }, { "one": "11111", "two": "22222", "three": "33333" }, { "one": "111111", "two": "222222", "three": "333333" }] }; var interText = doT.template($("#arrtmpl")[0].text); var html = interText(arr); $.Dialog.init({ height: 190, html: html, type: "alert", conform: { callback: function() { alert("确定"); } }, cancel: { callback: function() { alert("取消"); } } }); }); })(jQuery); </script> </body> </html>

运行代码

转载于:https://www.cnblogs.com/kuikui/p/3516575.html

弹出框插件——dialog相关推荐

  1. messagrbox自定义按钮c语言,基于dialogbox修改可自定义按钮及事件的弹出框插件

    插件描述:基于dialogbox1.0修改可自定义按钮及事件的弹出框插件,每个按钮可绑定单独的触发事件,并且能支持将弹出框作为一个表单来填入数据并获取 $('body').dialogbox({ ty ...

  2. 弹出框插件layer使用

    layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验. 插件官方地址:http://layer.layui.co ...

  3. html登入弹框插件,基于jQuery的弹出框插件

    html如下: $(function() { $("#btn01").popwin({ element: "#box01", title: "请填写以 ...

  4. Acitivity(页面)之间的跳转,ProgressBar 进度条,PopupWindow 弹出框,Dialog 对话框,Spinner下拉框

    Acitivity(页面)之间的跳转 Acitivity(页面)之间的跳转需要使用到 Intent(意图) Intent intent = new Intent(MainActivity.this(从 ...

  5. chosen(下拉列表带搜索插件)和layer(弹出框插件)在一起使用会有冲突,解决办法

    可以选择用window.open()和chosen插件结合使用,这样就不会有冲突. chosen插件的使用: 1.先把js和css文件引用到网页里面去: <link href="js/ ...

  6. CSS3动画过渡的jquery动态弹出框插件

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/w178191520/article/details/84111711 在线演示       本地下载

  7. 一个 bootstrap 弹出框插件

    http://bootstrap.ourjs.com/ 转载于:https://www.cnblogs.com/MDK-L/p/4428247.html

  8. [Js插件]使用JqueryUI的弹出框做一个“炫”的登录页面

    引言 查看项目代码的时候,发现项目中用到JqueryUi的弹出框,可拖拽,可设置模式对话框,就想着使用它弄一个登录页面. 弹出框 在Jquery Ui官网可定制下载弹出框,下载和弹出框下载相关的js文 ...

  9. 前端常用插件之artDialog弹出框

    前端常用插件之artDialog弹出框 最近,发现一个插件--好看精致的页面弹出框,个人觉得有必要与大家分享一下,它就是artDialog弹出框. 引用上一篇文章<前端常用插件之art-temp ...

  10. 第二百四十六节,Bootstrap弹出框和警告框插件

    Bootstrap弹出框和警告框插件 学习要点: 1.弹出框 2.警告框 本节课我们主要学习一下 Bootstrap 中的弹出框和警告框插件. 一.弹出框 弹出框即点击一个元素弹出一个包含标题和内容的 ...

最新文章

  1. 软件:向工业互联网产业成功转型的关键
  2. css删除li 圆点_六种设计难题的CSS实用技巧!
  3. 服务器修改kb,Microsoft KB2344941:操作系统即插即用方式的改变,提高iSCSI Initiator的适应力...
  4. 信息系统项目管理师-案例分析
  5. 【图网络】如何用Python实现算法:规划图技术(GraphPlanner)
  6. 最简单,最明了,看了就会的VScode和C++的配置!(Visual Studio Code)
  7. idle不是python自带的开发工具_Python的开发工具
  8. Output error file to the following location:[ A:\GHOST ERR.TXT] 错误处理
  9. 钉钉开发系列(一)access_token的获取
  10. 为什么图片保存类型360 se html document,360安全浏览器为什么图片不显示保存
  11. 数学建模优化模型简单例题_数学建模例题.doc
  12. Python Package 之 Faker(随机姓名、电话)
  13. android手机内存单位 吉字节,Android的尺寸单位
  14. Centos7下安装Relion
  15. 虎牙财报奏响游戏直播艰难进行曲
  16. 2022年场(厂)内专用机动车辆安全管理考试模拟100题模拟考试平台操作
  17. 数据库修改用友U8账套
  18. 终极网络电视王 v3.25 是什么
  19. js判断是否为数字的几种方式
  20. 动态网站的搜索引擎优化策略(转)

热门文章

  1. android布局自适应小示例(用户反馈界面)
  2. Java学习资料-Java常用算法-冒泡排序算法
  3. eigrp 负载均衡和非负载均衡实验
  4. cdecl.org 翻译C声明的网站
  5. 浅谈JVM垃圾回收机制
  6. Linux学习记录--ACL权限控制
  7. Lucene和ES的关系
  8. typedef struct引起的结构体问题
  9. 网络性能测试工具iperf的安装与使用
  10. Unity中制作小地图