自己使用js/jquery写的一个定制对话框控件
2018-10-12 13:51
633 查看
最近在做一个游戏项目,项目里面很多需要用到对话框,而且得用上美工做的图片,这样的话好像就不好去找一些现成的对话框控件了,于是便琢磨着自己做一个通用的控件,虽然不是绝对通用啦,但在我这个项目里还是可以随意调用的,思想的话也可以借鉴到别的项目中。
先贴出主要代码:
除了上面的使用函数,还需要对对话框进行初始化,为了插入文档中并且居中显示
使用的时候如下(以confirm对话框为例):
效果图如下:
先贴出主要代码:
//对话框的基本html内容,绝对定位,高宽设置,背景图片,标题,两个按钮图
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:标题,type:对话框类型,funcOK:确定的执行函数,time:倒计时或alert显示的时间
function showTdDialog(text, type, funcOK, time) {
var dialogid = "#tdlz_dialog";
$(dialogid).show(500);
$("#dialog_lb_text").html(text);
switch (type) {
case "show"://展示信息的对话框,带一个确定键,点击后消失
$("#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"://警告对话框,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"://确认对话框,带确认取消键,确认则执行函数,否则不执行并消失
$("#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"://倒计时对话框,显示time时间倒计时,结束后消失
$("#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;
}
}
除了上面的使用函数,还需要对对话框进行初始化,为了插入文档中并且居中显示
function initDialog() {
$("body").before(tdlz_dialog_content);
//计算恰当的中间位置
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();
}
使用的时候如下(以confirm对话框为例):
initDialog();
showTdDialog("I'm a Dialog","confirm",function(){
console.log("Button OK Clicked!");
});
效果图如下:
您可能感兴趣的文章:
相关文章推荐
- 自己使用js/jquery写的一个定制对话框控件
- js/jquery写的一个定制对话框控件
- 自己一直使用的一个不错的js日历控件
- JS +XML +Jquery 实现三级联动菜单,自己封装的一个对象方便使用
- 封装一个用户控件的pager.ascx文件供自己使用
- [JavaScript]使用jQuery定制开发自己的UI
- 使用jquery当页面打开时,将一个事件绑定到控件(同时执行两个事件),并修改加载样式类中的样式
- jQuery验证控件jquery.validate.js使用说明+中文API
- 【js与jquery】jquery的一个通用的专门用于遍历的全局方法$.each()的使用
- 在jsp中js jquery点击按钮出现一个对话框的实现
- jQuery验证控件jquery.validate.js使用说明+中文API
- jQuery验证控件jquery.validate.js使用说明
- 博客园第一帖:发一个自己刚做的对话框控件
- jQuery验证控件jquery.validate.js使用说明+中文API
- 一个帮助你在触摸设备上使用jQuery UI的JS类库 - jQuery UI Touch Punch
- jQuery验证控件jquery.validate.js使用说明+中文API
- 发现一个自己容易忽视的错误。空格+checkBOX 使用JS加载下来列表
- MVC为Html对象建立一个扩展方法,使用自己的控件就像使用TextBox一样方便
- 一个帮助你在触摸设备上使用jQuery UI的JS类库 - jQuery UI Touch Punch
- 让自己写的子窗口可以被父对话框的TAB键切换,像一个控件一样