移动端模拟alert和tip弹框
来源:互联网 发布:不吃不喝几天会死 知乎 编辑:程序博客网 时间:2024/05/01 15:45
最近,移动端的项目越来越多,每个项目中都有登录注册界面等,异常提示的弹框和tip用的较多,
于是抽出点时间封装了下对应的jquery插件,和一个函数;以便项目重用性。
废话不多说,直接上代码:
1 模拟alert弹出框函数
//模拟alert弹出框函数;datetime:20160727;by:xiewei【依赖于flexible.js和jquery或者zepto】 function malert(option) { var _win_w = $(window).width(); var _name = option.name || "_zb_alert_hs_"; var _bg_opacity = option.bg_opacity || .6; var _radius = option.radius || 5; var _unit = option.unit || "rem"; var _w = option.width || "6"; //弹框宽度,可自行设定 var _h = option.height || "4"; //弹框高度,可自行设定 var _text = option.text; var _type = option.type; //弹框类型 if(_type=='tip'){ var _ceng_bg = '<div style="width:100%;height:100%;position:fixed;top:0;left:0;background:#000;opacity:0"></div>'; var _ceng_con = '<div style="width:' + _w + _unit + ';height:' + _h + _unit + ';margin:' + (-_h / 2) + _unit + ' 0 0 ' + (-_w / 2) + _unit + ';border-radius:' + _radius + 'px;position:fixed;top:50%;left:50%;background:#000">'; _ceng_con += '<p class="' + _name + '_p" style="color:#fff;font-size:.4rem;text-align:center;padding:0 .3rem"><span>' + _text + '</span></p>'; _ceng_con += '</div>'; var _res_html = _ceng_bg + _ceng_con; $('body').append(_res_html); var _ceng_con_p_h = $('.' + _name + '_p').height() / (_win_w / 10); var _ceng_con_p_span_w = $('.' + _name + '_p').children('span').width() / (_win_w / 10); if(_ceng_con_p_span_w + 0.6*2>=_w){ var _ceng_con_p_w=_w-0.6*2; }else{ var _ceng_con_p_w=_ceng_con_p_span_w; } $('.' + _name + '_p').css({"margin-top": 0.3 + "rem"}); $('.' + _name + '_p').parent('div').css({"height": (_ceng_con_p_h + 0.6) + "rem","width": (_ceng_con_p_w + 0.6*2) + "rem","margin-left":-(_ceng_con_p_w + 0.6*2)/2+"rem","margin-top":-(_ceng_con_p_h + 0.6)/2+"rem"}); setTimeout(function(){ $('.' + _name + '_p').parent('div').prev('div').remove(); $('.' + _name + '_p').parent('div').remove(); },1200); }else{ var _ceng_bg = '<div style="width:100%;height:100%;position:fixed;top:0;left:0;background:#000;opacity:' + _bg_opacity + '"></div>'; var _ceng_con = '<div style="width:' + _w + _unit + ';height:' + _h + _unit + ';margin:' + (-_h / 2) + _unit + ' 0 0 ' + (-_w / 2) + _unit + ';border-radius:' + _radius + 'px;position:fixed;top:50%;left:50%;background:#fff">'; _ceng_con += '<div style="width:100%;height:100%;position:relative">'; _ceng_con += '<div style="width:100%;height:' + (_h - 1) + 'rem;padding-top:1px">'; _ceng_con += '<p class="' + _name + '_p" style="color:#666;font-size:.4rem;text-align:center;padding:0 .5rem">' + _text + '</p>'; _ceng_con += '</div>'; _ceng_con += '<div style="width:100%;height:1rem;position:absolute;bottom:0;left:0;border-top:1px solid #e6e6e6">'; _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_cancle_btn" style="display:block;height:1rem;float:left;width:50%;text-align:center;line-height:1rem;color:#0e9cfa;font-size:.38rem">取消</a>'; _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_ok_btn" style="display:block;height:1rem;float:left;width:50%;text-align:center;line-height:1rem;color:#0e9cfa;font-size:.38rem;margin-left:-1px;border-left:1px solid #e6e6e6">确定</a>'; _ceng_con += '</div>'; _ceng_con += '</div>'; _ceng_con += '</div>'; var _res_html = _ceng_bg + _ceng_con; $('body').append(_res_html); var _ceng_con_p_h = $('.' + _name + '_p').height() / (_win_w / 10); var pingfen_top = (_h - 1 - _ceng_con_p_h) / 2 $('.' + _name + '_p').css({"margin-top": pingfen_top + "rem"}); $('.' + _name + '_cancle_btn').click(function () { $(this).parent('div').parent('div').parent('div').prev('div').remove(); $(this).parent('div').parent('div').parent('div').remove(); if(option.cancle){ option.cancle(); } }); $('.' + _name + '_ok_btn').click(function () { $(this).parent('div').parent('div').parent('div').prev('div').remove(); $(this).parent('div').parent('div').parent('div').remove(); if(option.ok){ option.ok(); } }); } }
2 模拟alert弹出框插件
//模拟alert弹出框插件;datetime:20160727;by:xiewei【依赖于flexible.js和jquery】 $.extend({ malert: function (option) { var _win_w = $(window).width(); var _name = option.name || "_zb_alert_hs_"; var _bg_opacity = option.bg_opacity || .5; var _radius = option.radius || 5; var _unit = option.unit || "rem"; //以移动端rem为单位 var _w = option.width || "6"; var _h = option.height || "4"; var _text = option.text; var _type = option.type; //弹框类型 if(_type=='tip'){ var _ceng_bg = '<div style="width:100%;height:100%;position:fixed;top:0;left:0;background:#000;opacity:0"></div>'; var _ceng_con = '<div style="width:' + _w + _unit + ';height:' + _h + _unit + ';margin:' + (-_h / 2) + _unit + ' 0 0 ' + (-_w / 2) + _unit + ';border-radius:' + _radius + 'px;position:fixed;top:50%;left:50%;background:#000">'; _ceng_con += '<p class="' + _name + '_p" style="color:#fff;font-size:.4rem;text-align:center;padding:0 .3rem"><span>' + _text + '</span></p>'; _ceng_con += '</div>'; var _res_html = _ceng_bg + _ceng_con; $('body').append(_res_html); var _ceng_con_p_h = $('.' + _name + '_p').height() / (_win_w / 10); var _ceng_con_p_span_w = $('.' + _name + '_p').children('span').width() / (_win_w / 10); if(_ceng_con_p_span_w + 0.6*2>=_w){ var _ceng_con_p_w=_w-0.6*2; }else{ var _ceng_con_p_w=_ceng_con_p_span_w; } $('.' + _name + '_p').css({"margin-top": 0.3 + "rem"}); $('.' + _name + '_p').parent('div').css({"height": (_ceng_con_p_h + 0.6) + "rem","width": (_ceng_con_p_w + 0.6*2) + "rem","margin-left":-(_ceng_con_p_w + 0.6*2)/2+"rem","margin-top":-(_ceng_con_p_h + 0.6)/2+"rem"}); setTimeout(function(){ $('.' + _name + '_p').parent('div').prev('div').remove(); $('.' + _name + '_p').parent('div').remove(); },1200); }else{ var _ceng_bg = '<div style="width:100%;height:100%;position:fixed;top:0;left:0;background:#000;opacity:' + _bg_opacity + '"></div>'; var _ceng_con = '<div style="width:' + _w + _unit + ';height:' + _h + _unit + ';margin:' + (-_h / 2) + _unit + ' 0 0 ' + (-_w / 2) + _unit + ';border-radius:' + _radius + 'px;position:fixed;top:50%;left:50%;background:#fff">'; _ceng_con += '<div style="width:100%;height:100%;position:relative">'; _ceng_con += '<div style="width:100%;height:' + (_h - 1) + 'rem;padding-top:1px">'; _ceng_con += '<p class="' + _name + '_p" style="color:#666;font-size:.4rem;text-align:center;padding:0 .5rem">' + _text + '</p>'; _ceng_con += '</div>'; _ceng_con += '<div style="width:100%;height:1rem;position:absolute;bottom:0;left:0;border-top:1px solid #e6e6e6">'; _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_cancle_btn" style="display:block;height:1rem;float:left;width:50%;text-align:center;line-height:1rem;color:#0e9cfa;font-size:.38rem">取消</a>'; _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_ok_btn" style="display:block;height:1rem;float:left;width:50%;text-align:center;line-height:1rem;color:#0e9cfa;font-size:.38rem;margin-left:-1px;border-left:1px solid #e6e6e6">确定</a>'; _ceng_con += '</div>'; _ceng_con += '</div>'; _ceng_con += '</div>'; var _res_html = _ceng_bg + _ceng_con; $('body').append(_res_html); var _ceng_con_p_h = $('.' + _name + '_p').height() / (_win_w / 10); var pingfen_top = (_h - 1 - _ceng_con_p_h) / 2; $('.' + _name + '_p').css({"margin-top": pingfen_top + "rem"}); $('.' + _name + '_cancle_btn').click(function () { $(this).parent('div').parent('div').parent('div').prev('div').remove(); $(this).parent('div').parent('div').parent('div').remove(); if(option.cancle){ option.cancle(); } }); $('.' + _name + '_ok_btn').click(function () { $(this).parent('div').parent('div').parent('div').prev('div').remove(); $(this).parent('div').parent('div').parent('div').remove(); if(option.ok){ option.ok(); } }); } } });
3 可直接用于项目中插件malert.js(增加了_type=='tip02' 皮肤)
/* * 移动端仿alert弹框 0.1.0 * Date: 2016-08-08 * by: xiewei * 模拟移动端alert弹出框插件【依赖于flexible.js和jquery或者zepto】 */(function($){ $.malert=function (option) { var _win_w = $(window).width(); var _name = option.name || "_zb_alert_hs_"; var _bg_opacity = option.bg_opacity || .5; var _radius = option.radius || 5; var _unit = option.unit || "rem"; //以移动端rem为单位 var _w = option.width || "6"; var _h = option.height || "4"; var _text = option.text; var _type = option.type; var _buttons = option.buttons; //弹框类型 if(_type=='tip'){ var _ceng_bg = '<div style="width:100%;height:100%;position:fixed;top:0;left:0;background:#000;opacity:0"></div>'; var _ceng_con = '<div style="width:' + _w + _unit + ';height:' + _h + _unit + ';margin:' + (-_h / 2) + _unit + ' 0 0 ' + (-_w / 2) + _unit + ';border-radius:' + _radius + 'px;position:fixed;top:44%;left:50%;background:#222;opacity:0.9">'; _ceng_con += '<p class="' + _name + '_p" style="color:#fff;font-size:.45rem;text-align:center;padding:0 .3rem"><span>' + _text + '</span></p>'; _ceng_con += '</div>'; var _res_html = _ceng_bg + _ceng_con; $('body').append(_res_html); var _ceng_con_p_h = $('.' + _name + '_p').height() / (_win_w / 10); var _ceng_con_p_span_w = $('.' + _name + '_p').children('span').width() / (_win_w / 10); if(_ceng_con_p_span_w + 0.6*2>=_w){ var _ceng_con_p_w=_w-0.6*2; }else{ var _ceng_con_p_w=_ceng_con_p_span_w; } $('.' + _name + '_p').css({"margin-top": 0.8 + "rem"}); $('.' + _name + '_p').parent('div').css({"height": (_ceng_con_p_h + 1.6) + "rem","width": (_ceng_con_p_w + 0.6*2) + "rem","margin-left":-(_ceng_con_p_w + 0.6*2)/2+"rem","margin-top":-(_ceng_con_p_h + 0.6)/2+"rem"}); setTimeout(function(){ $('.' + _name + '_p').parent('div').prev('div').remove(); $('.' + _name + '_p').parent('div').remove(); },1200); }else if(_type=='tip02'){ var _ceng_bg = '<div style="width:100%;height:100%;position:fixed;top:0;left:0;background:#000;opacity:' + _bg_opacity + '"></div>'; var _ceng_con = '<div style="width:' + _w + _unit + ';height:' + _h + _unit + ';margin:' + (-_h / 2) + _unit + ' 0 0 ' + (-_w / 2) + _unit + ';border-radius:' + _radius + 'px;position:fixed;top:50%;left:50%;background:#fff">'; _ceng_con += '<div style="width:100%;height:100%;position:relative">'; _ceng_con += '<div style="width:100%;height:' + (_h - 1.35) + 'rem;padding-top:1px">'; _ceng_con += '<p class="' + _name + '_p" style="color:#666;font-size:.4rem;text-align:center;padding:0 .5rem">' + _text + '</p>'; _ceng_con += '</div>'; _ceng_con += '<div style="width:100%;height:1rem;position:absolute;bottom:.35rem;left:0">'; if(_buttons){ if(_buttons.length<2){ _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_cancle_btn" style="display:block;height:1rem;margin:0 .35rem;border-radius:4px;text-align:center;line-height:1rem;background:#73d13a;color:#fff;font-size:.38rem">'+_buttons[0]+'</a>'; }else{ _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_cancle_btn" style="display:block;height:1rem;float:left;width:'+(_w-1.05)/2+'rem;text-align:center;line-height:1rem;background:#73d13a;color:#fff;font-size:.38rem;margin:0 .35rem 0 .35rem;border-radius:4px">'+_buttons[0]+'</a>'; _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_ok_btn" style="display:block;height:1rem;float:left;width:'+(_w-1.05)/2+'rem;text-align:center;line-height:1rem;background:#73d13a;color:#fff;font-size:.38rem;border-radius:4px">'+_buttons[1]+'</a>'; } }else{ _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_cancle_btn" style="display:block;height:1rem;float:left;width:'+(_w-1.05)/2+'rem;text-align:center;line-height:1rem;background:#73d13a;color:#fff;font-size:.38rem;margin:0 .35rem 0 .35rem;border-radius:4px">取消</a>'; _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_ok_btn" style="display:block;height:1rem;float:left;width:'+(_w-1.05)/2+'rem;text-align:center;line-height:1rem;background:#73d13a;color:#fff;font-size:.38rem;border-radius:4px">确定</a>'; } _ceng_con += '</div>'; _ceng_con += '</div>'; _ceng_con += '</div>'; var _res_html = _ceng_bg + _ceng_con; $('body').append(_res_html); var _ceng_con_p_h = $('.' + _name + '_p').height() / (_win_w / 10); var pingfen_top = (_h - 1 - _ceng_con_p_h) / 2; $('.' + _name + '_p').css({"margin-top": pingfen_top + "rem"}); $('.' + _name + '_cancle_btn').click(function () { $(this).parent('div').parent('div').parent('div').prev('div').remove(); $(this).parent('div').parent('div').parent('div').remove(); if(option.cancle){ option.cancle(); } }); $('.' + _name + '_ok_btn').click(function () { $(this).parent('div').parent('div').parent('div').prev('div').remove(); $(this).parent('div').parent('div').parent('div').remove(); if(option.ok){ option.ok(); } }); }else{ var _ceng_bg = '<div style="width:100%;height:100%;position:fixed;top:0;left:0;background:#000;opacity:' + _bg_opacity + '"></div>'; var _ceng_con = '<div style="width:' + _w + _unit + ';height:' + _h + _unit + ';margin:' + (-_h / 2) + _unit + ' 0 0 ' + (-_w / 2) + _unit + ';border-radius:' + _radius + 'px;position:fixed;top:50%;left:50%;background:#fff">'; _ceng_con += '<div style="width:100%;height:100%;position:relative">'; _ceng_con += '<div style="width:100%;height:' + (_h - 1) + 'rem;padding-top:1px">'; _ceng_con += '<p class="' + _name + '_p" style="color:#666;font-size:.4rem;text-align:center;padding:0 .5rem">' + _text + '</p>'; _ceng_con += '</div>'; _ceng_con += '<div style="width:100%;height:1rem;position:absolute;bottom:0;left:0;border-top:1px solid #e6e6e6">'; if(_buttons){ if(_buttons.length<2){ _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_cancle_btn" style="display:block;height:1rem;float:left;width:100%;text-align:center;line-height:1rem;color:#73d13a;font-size:.38rem">'+_buttons[0]+'</a>'; }else{ _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_cancle_btn" style="display:block;height:1rem;float:left;width:50%;text-align:center;line-height:1rem;color:#73d13a;font-size:.38rem">'+_buttons[0]+'</a>'; _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_ok_btn" style="display:block;height:1rem;float:left;width:50%;text-align:center;line-height:1rem;color:#73d13a;font-size:.38rem;margin-left:-1px;border-left:1px solid #e6e6e6">'+_buttons[1]+'</a>'; } }else{ _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_cancle_btn" style="display:block;height:1rem;float:left;width:50%;text-align:center;line-height:1rem;color:#73d13a;font-size:.38rem">取消</a>'; _ceng_con += '<a href="javascript:void(0)" class="' + _name + '_ok_btn" style="display:block;height:1rem;float:left;width:50%;text-align:center;line-height:1rem;color:#73d13a;font-size:.38rem;margin-left:-1px;border-left:1px solid #e6e6e6">确定</a>'; } _ceng_con += '</div>'; _ceng_con += '</div>'; _ceng_con += '</div>'; var _res_html = _ceng_bg + _ceng_con; $('body').append(_res_html); var _ceng_con_p_h = $('.' + _name + '_p').height() / (_win_w / 10); var pingfen_top = (_h - 1 - _ceng_con_p_h) / 2; $('.' + _name + '_p').css({"margin-top": pingfen_top + "rem"}); $('.' + _name + '_cancle_btn').click(function () { $(this).parent('div').parent('div').parent('div').prev('div').remove(); $(this).parent('div').parent('div').parent('div').remove(); if(option.cancle){ option.cancle(); } }); $('.' + _name + '_ok_btn').click(function () { $(this).parent('div').parent('div').parent('div').prev('div').remove(); $(this).parent('div').parent('div').parent('div').remove(); if(option.ok){ option.ok(); } }); } }})(jQuery);
调用方式:
$(function () { //示例1 $('.button').click(function(){ $.malert({ text: "您确定要退出吗?", cancle: function () { console.log('关闭了') }, ok: function () { console.log('确定了') } }); }); //示例2 $('.button02').click(function(){ malert({ text: "您确定要退出吗?", cancle: function () { console.log('关闭了') }, ok: function () { console.log('确定了') } }) }); //示例3 $('.button03').click(function(){ $.malert({ type:'tip', text: "请您输入用户名" }); //malert({ // type:'tip', // text: "请您输入用户名" //}); }); });
对应截图如下:
_type=='tip02' 皮肤如下:
引用名言:时间就像海绵里的水,只要愿挤,总还是有的。
0 0
- 移动端模拟alert和tip弹框
- JavaScript移动端模拟alert()方法
- 【Tip】移动端 (不断更新中...)
- 移动端自定义alert窗口
- 用模态窗口 模拟 alert 和 confirm 对话框
- 模拟JavaScript中alert和confirm
- CSS模拟实现alert和confirm实现
- JavaScript Tip之:用&&和||来模拟if-else
- 去掉移动端alert和confirm弹出框携带url链接
- 去掉移动端alert和confirm弹出框携带url链接
- javascript+div+css模拟alert效果和confirm效果
- 模拟鼠标点击和移动
- 模拟鼠标移动和点击
- PC上测试移动端网站和模拟手机浏览器
- 去除ios移动端alert/confirm的网址(url)
- 去除移动端alert/confirm的网址(url)
- 去除ios移动端alert/confirm的网址(url)
- 移动端Ajax返回消息替代Alert弹窗组件
- spring mvc Web.xml配置详解之context-param
- Java多线程实现异步调用
- 阿里面试总结
- 交换机堆叠技术
- memset函数
- 移动端模拟alert和tip弹框
- GoLang standard library - io 分析
- Unity SteamVR插件详解一:SteamVR_Controller脚本分析+Vive控制器功能开发
- iOS - 大文件下载篇(输出流对象)
- centos7 配置rsync
- 可运行jar包的几种打包/部署方式
- Spring+Quartz配置
- 【POJ1905】
- LightOJ 1275 Internet Service Providers(数学求解)