Oneself use js and jquery to write a custom dialog box control
- 2020-03-30 02:49:44
- OfStack
Recently in play a game project, the project inside a lot of need to use dialog boxes, pictures, and artists have to do so if not good to find some ready-made dialog control, then wondering do a general control himself, though not absolutely general, but in this project or feel free to call, thought can also be reference to other projects.
Post the main code first:
In addition to the functions above, the dialog box needs to be initialized in order to be inserted into the document and centered
Use it as follows (take the confirm dialog as an example) :
The effect drawing is as follows:
< img SRC = "border = 0 / / files.jb51.net/file_images/article/201405/20140502141939.gif? 201442141951 ">
Post the main code first:
//Dialog box basic HTML content, absolute positioning, height and width Settings, background image, title, two button diagram
var tdlz_dialog_content = "<div id='tdlz_dialog"
+ "' style='position:absolute;text-align:center;width:540px;height:331px;background:url(assets/images/add_fbc.png);'><ul><li id='dialog_lb_text' style='margin-top:100px;color:#fff;font-size:25px'>"
+ "</li><li style='margin-top:100px;cursor:pointer'><img id='tdlz_dialog_ok' src='assets/images/queren.png'></img><img id='tdlz_dialog_cancel' src='assets/images/quxiao.png'></img></li></ul></div>";
//Text: title, type: dialog type, funcOK: specified execution function, time: countdown or alert display time
function showTdDialog(text, type, funcOK, time) {
var dialogid = "#tdlz_dialog";
$(dialogid).show(500);
$("#dialog_lb_text").html(text);
switch (type) {
case "show"://Display information dialog box, with a "ok" key, click to disappear
$("#tdlz_dialog_cancel").hide();
$("#tdlz_dialog_ok").unbind();
$("#tdlz_dialog_ok").click(function () {
$(dialogid).hide(500);
$("#tdlz_dialog_ok").css("margin-right", "0");
$("#tdlz_dialog_cancel").css("margin-left", "0");
});
break;
case "alert"://Warning dialog box, disappear after time
$("#tdlz_dialog_cancel").hide();
$("#tdlz_dialog_ok").unbind();
setTimeout(function () {
$(dialogid).hide(500);
$("#tdlz_dialog_ok").css("margin-right", "0");
$("#tdlz_dialog_cancel").css("margin-left", "0");
}, time);
$("#tdlz_dialog_ok").click(function () {
$(dialogid).hide(500);
$("#tdlz_dialog_ok").css("margin-right", "0");
$("#tdlz_dialog_cancel").css("margin-left", "0");
});
break;
case "confirm"://Confirm dialog box, with the cancel key to confirm the execution of the function, otherwise it does not execute and disappeared
$("#tdlz_dialog_cancel").show();
$("#tdlz_dialog_ok").css("margin-right", "5%");
$("#tdlz_dialog_cancel").css("margin-left", "5%");
$("#tdlz_dialog_ok").unbind();
$("#tdlz_dialog_ok").click(function () {
funcOK();
setTimeout(function () {
$(dialogid).hide(500)
}, 1000);
});
$("#tdlz_dialog_cancel").click(function () {
$(dialogid).hide(500);
});
break;
case "time"://Countdown dialog box, display time time countdown, after the end of the disappear
$("#tdlz_dialog_cancel").hide();
$("#dialog_lb_text").html(text + "" + time);
var a = setInterval(function () {
time = parseInt(time) - 1;
if (time < 0) {
clearInterval(a);
$(dialogid).hide(500);
}
$("#dialog_lb_text").html(text + "" + time);
}, 1000);
$("#tdlz_dialog_ok").unbind();
$("#tdlz_dialog_ok").click(function () {
$(dialogid).hide(500);
$("#tdlz_dialog_ok").css("margin-right", "0");
$("#tdlz_dialog_cancel").css("margin-left", "0");
});
break;
}
}
In addition to the functions above, the dialog box needs to be initialized in order to be inserted into the document and centered
function initDialog() {
$("body").before(tdlz_dialog_content);
//Calculate the appropriate intermediate position
var top_percent = (window.innerHeight / 4) / window.innerHeight
var left_percent = (window.innerWidth / 2 - $("#tdlz_dialog").width() / 2) / window.innerWidth;
$("#tdlz_dialog").css("top", top_percent * 100 + "%");
$("#tdlz_dialog").css("left", left_percent * 100 + "%");
$("#tdlz_dialog").css("z-index", "100");
$("#tdlz_dialog").hide();
}
Use it as follows (take the confirm dialog as an example) :
initDialog();
showTdDialog("I'm a Dialog","confirm",function(){
console.log("Button OK Clicked!");
});
The effect drawing is as follows:
< img SRC = "border = 0 / / files.jb51.net/file_images/article/201405/20140502141939.gif? 201442141951 ">