


jquery encapsulates a simple and lightweight draggable and customizable pure div css imitation modal pop-up box with a mask layer_html/css_WEB-ITnose
最近封装上瘾,想起以前做的一个轻巧的弹出框,是样式和脚本分离的,于是重新封装了一下,把样式标签统一到js里了。里面还有一些问题,但不影响使用,有兴趣的同学,可以参考完善下,有好的建议,请不吝赐教。
var PopDialogDefaultConfig = { hasCover: true, //是否带遮罩层 colorOfCover: "#000", //遮罩层颜色 transparencyOfCover: 80, //遮罩层透明度(alpha值,opacity值通过换算得到) borderColor: "blue", //边框标题背景颜色 titleHeight: 50, //标题高度 titleFont: '24px "Microsoft Yahei"', //标题字体 titleFontSize: 24, //标题文字大小 titleColor: "white", //标题文字颜色 titleFontFamily: "Microsoft Yahei", //标题字体 contentWidth: 560, //内容框宽度 contentHeight: 480, //内容框的高度 borderWidth: 2, //边框宽度 backColor: "#EC90F6", //背景色 serial: 1, //序列号 moveAble: true, //是否可以鼠标拖动 /* * 配置文件合并 */ Merge: function (newConfig) { var result = {}; for (var p in this) { result[p] = this[p]; if (typeof (this[p]) != " function ") { for (var q in newConfig) { if (p == q) { result[p] = newConfig[q]; } } } } return result; }};function PopDialog(content, title, obj, popDialogConfig) { content = content || "这里什么都没有!"; title = title || "提示"; obj = obj || $(document.body); var dialog = new Object; /* * 弹出框的默认样式 */ var config = PopDialogDefaultConfig.Merge(popDialogConfig); /* * 根据配置文件和弹出对象,取得弹出框的html串; */ if (!obj.id) { obj.id = "pop" + config.serial; PopDialogDefaultConfig.serial++; } var opacity = (100 - config.transparencyOfCover) / 100; var width = config.contentWidth + config.borderWidth * 2; var height = config.contentHeight + config.borderWidth + config.titleHeight; dialog.Html = '<div id="' + obj.id + '_Cover" style="background-color: ' + config.colorOfCover + ';width:100%;height:100%;position:absolute;filter: alpha(opacity=' + config.transparencyOfCover + ');opacity:' + opacity + ';top:0;left:0;"></div>' + '<div id="' + obj.id + '_Dialog" style="background-color:' + config.borderColor + ';position:absolute;width: ' + width + 'px;height: ' + height + 'px;top:calc(50% - ' + height / 2 + 'px);left:calc(50% - ' + width / 2 + 'px);">' + ' <div id="' + obj.id + '_Top" style="height:' + config.titleHeight + 'px;line-height:' + config.titleHeight + 'px;display:block;width:100%;background-color:' + config.borderColor + ';clear:both;vertical-align:middle">' + ' <span id="' + obj.id + '_Title" style="display:inline-block;font-size:' + config.titleFontSize + 'px;padding-left:10px;color:' + config.titleColor + ';">' + (title || "提示") + '</span>' + ' <a style="display:block;float:right;text-decoration: none;margin-right:20px;clear:right;color:white;font-size:' + config.titleHeight * 8 / 10 + 'px;" href="#" onclick="$(\'#' + obj.id + '_Dialog\').remove();$(\'#' + obj.id + '_Cover\').remove();">X</a>' + ' </div>' + ' <div id="' + obj.id + '_Body" style="background-color:' + config.backColor + ';width:' + config.contentWidth + 'px;height:' + config.contentHeight + 'px;border:' + config.borderWidth + 'px solid ' + config.borderColor + ';">' + ' <div id="' + obj.id + '_Content" style="background-color:' + config.backColor + ';">' + content + '</div>' + ' </div>' + '</div>'; dialog.Config = config; dialog.PopDom = $(dialog.Html); dialog.x = dialog.x1 = dialog.y = dialog.y1 = dialog.mousekey = 0; /* * 鼠标拖动弹出框 */ if (config.moveAble) { var top = dialog.PopDom.find("#" + obj.id + "_Top"); top.on("mousedown", function (event) { dialog.mousekey = 1; $(this).css("cursor", "move"); dialog.PopDom.find("#" + obj.id + "_Content").css("display", "none"); }); top.on("mouseup", function (event) { dialog.mousekey = 0; $(this).css("cursor", "default"); dialog.PopDom.find("#" + obj.id + "_Content").css("display", ""); }); top.on("mouseout", function (event) { dialog.mousekey = 0; $(this).css("cursor", "default"); dialog.PopDom.find("#" + obj.id + "_Content").css("display", ""); }); top.on("mousemove", function (event) { if (dialog.mousekey == 1) { if (dialog.x != 0 || dialog.y != 0) { dialog.x = event.pageX - dialog.x1; dialog.y = event.pageY - dialog.y1; var parent = $(this.parentElement); parent.css("left", (parent.position().left + dialog.x) + "px"); parent.css("top", (parent.position().top + dialog.y) + "px"); dialog.x = dialog.x1 = event.pageX; dialog.y = dialog.y1 = event.pageY; } else { dialog.x = dialog.x1 = event.pageX; dialog.y = dialog.y1 = event.pageY; } } else { dialog.x = dialog.x1 = dialog.y = dialog.y1 = 0; } return false; }); } return dialog;};/* * 拓展jquery对象的方法; */(function ($) { /* * 关闭弹出框的方法 */ $.fn.ClosePopDialog = function () { var obj = this; while (obj) { var popdialog = $("#" + this.id + "_Dialog"); if (popdialog) { popdialog.remove(); } var popcover = $("#" + this.id + "_Cover"); if (popcover) { popcover.remove(); } obj = obj.parent; } }; /* * 根据url取得内容并弹出框显示的方法 * url: 需要显示的内容的url * popDialogConfig: 自定义样式 * Example: $(document.body).PopDialog("/home/login", { backColor: "gray", borderColor: "blue", borderWidth: 2, contentWidth: 600, contentHeight: 480 }); */ $.fn.PopDialogByUrl = function (url, title, popDialogConfig) { var obj = $(this); obj.ClosePopDialog(); if (url) { $.ajax({ url: url, cache: false, success: function (result) { if (result == "[]" || result == "") { result = "系统忙,请稍后再试!"; } var pop = new PopDialog(result, title, this, popDialogConfig); obj.append(pop.PopDom); }, error: function (result) { if (result == "[]" || result == "") { result = "系统错误,请联系管理员!"; } var pop = new PopDialog(result, title, this, popDialogConfig); obj.append(pop.PopDom); } }); } }; /* * 弹出框显示提供的内容的方法 * content: 需要显示的内容 * popDialogConfig: 自定义样式 * Example: $(document.body).PopDialog("<div>这是一个弹出框的例子!</div>", { backColor: "gray", borderColor: "blue", borderWidth: 2, contentWidth: 600, contentHeight: 480 }); */ $.fn.PopDialogByContent = function (content, title, popDialogConfig) { var obj = $(this); obj.ClosePopDialog(); var pop = new PopDialog(content, title, this, popDialogConfig); obj.append(pop.PopDom); };})(jQuery);

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



HTML is suitable for beginners because it is simple and easy to learn and can quickly see results. 1) The learning curve of HTML is smooth and easy to get started. 2) Just master the basic tags to start creating web pages. 3) High flexibility and can be used in combination with CSS and JavaScript. 4) Rich learning resources and modern tools support the learning process.

HTML defines the web structure, CSS is responsible for style and layout, and JavaScript gives dynamic interaction. The three perform their duties in web development and jointly build a colorful website.

AnexampleofastartingtaginHTMLis,whichbeginsaparagraph.StartingtagsareessentialinHTMLastheyinitiateelements,definetheirtypes,andarecrucialforstructuringwebpagesandconstructingtheDOM.

WebdevelopmentreliesonHTML,CSS,andJavaScript:1)HTMLstructurescontent,2)CSSstylesit,and3)JavaScriptaddsinteractivity,formingthebasisofmodernwebexperiences.

GiteePages static website deployment failed: 404 error troubleshooting and resolution when using Gitee...

The Y-axis position adaptive algorithm for web annotation function This article will explore how to implement annotation functions similar to Word documents, especially how to deal with the interval between annotations...

To achieve the effect of scattering and enlarging the surrounding images after clicking on the image, many web designs need to achieve an interactive effect: click on a certain image to make the surrounding...

The necessity of registering VueRouter in the index.js file under the router folder When developing Vue applications, you often encounter problems with routing configuration. Special...
