最近有个老移动端项目
以前是从安卓外壳内弹出弹窗进行交互,现在需要更换外壳,可以使用H5尽量使用H5,因为这个弹窗又许多地方需要调用所以我写了一个公用js和css,只需要将其引入到页面即可直接调用,不需要增加新的dom,几乎兼容所有浏览器
下面是html文件内容
下面是js内容
// 此插件的使用方法 // openMyPopup()打开弹窗 // 点击取消可直接关闭弹窗,也可调用MyPopupClose()函数,该函数return false不关闭弹窗,true关闭弹窗 // 确认按钮调用MyPopupSure()函数,该函数有两个参数user和pow,该函数return false不关闭弹窗,true关闭弹窗
window.onload = function () { var html = '<div class="MyPopup"><div class="disflex tabBox"><div class="tab tabactive" data-index="0">员工账号</div><div class="tab" data-index="1">AD账号</div><div class="tab" data-index="2">统一账号</div></div><div style="margin-top: 15px;" class="disflex"><span>用户名:</span><input type="text" placeholder="请输入用户名" class="flexOne user"></div><div style="margin-top: 10px;" class="disflex"><span>密 码:</span><input type="text" placeholder="请输入密码" class="flexOne pow"></div><div class="disflex btnbox" style="margin-top: 20px;"><div class="btn" data-index="0">取消</div><div class="btn" data-index="1">确定</div></div></div>'
var MyPopupBoxDom = document.createElement("div"); //创建一个div MyPopupBoxDom.setAttribute('id','MyPopup') // 给div绑定id值 document.querySelector('body').appendChild(MyPopupBoxDom) // 将上边新建的div添加到body内 document.querySelector('#MyPopup').innerHTML = html // 将新增加的div内增加弹窗dom字符串
var MyPopup_index = 0 document.querySelector('#MyPopup .tabBox').addEventListener('click',function(ev) { // 绑定tab事件 var ev = ev || window.event; var target = ev.target || ev.srcElement; var MyPopup_Newindex = target.getAttribute('data-index') var tablist = document.querySelectorAll('#MyPopup .tabBox .tab') if(MyPopup_Newindex == MyPopup_index ) { return }else{ MyPopup_index = MyPopup_Newindex } for(var a =0;a<tablist.length;a++) { tablist[a].classList.remove('tabactive') } if(target.classList.contains('tab')) { document.querySelector('#MyPopup .user').value = '' document.querySelector('#MyPopup .pow').value = '' tablist[target.getAttribute('data-index')].classList.add('tabactive') } })
document.querySelector('#MyPopup').addEventListener('click',function(ev) { // 绑定tab事件 var ev = ev || window.event; var target = ev.target || ev.srcElement; if(target.getAttribute('id') == 'MyPopup') { document.querySelector('#MyPopup').style.display = 'none' } })
document.querySelector('#MyPopup .btnbox').addEventListener('click',function(ev) { // 绑定底部确认取消按钮事件 var ev = ev || window.event; var target = ev.target || ev.srcElement; var tablist = document.querySelectorAll('#MyPopup .btnbox .btn') if(target.classList.contains('btn')) { var btnNum = target.getAttribute('data-index') if(btnNum == 0) { try{ // 可以添加自定义取消事件 if(MyPopupClose()) { clearMyPopup_input() }else{ console.log('不关闭弹窗') } }catch(err){ clearMyPopup_input() } }else{ var user = document.querySelector('#MyPopup .user').value var pow = document.querySelector('#MyPopup .pow').value if(MyPopupSure(user,pow)) { // 将用户名及密码给到确认按钮函数/函数返回true操作成功关闭弹窗/失败或不需要关闭弹窗反false clearMyPopup_input() }else{ console.log('不关闭弹窗') } } } })
function clearMyPopup_input() { // 清空弹窗并关闭弹窗 document.querySelector('#MyPopup .user').value = '' document.querySelector('#MyPopup .pow').value = '' document.querySelector('#MyPopup').style.display = 'none' } } function openMyPopup() { // 外部调用打开弹窗 document.querySelector('#MyPopup').style.display = 'block' }
下面是css内容
#MyPopup { width: 100%; height: 100%; position: fixed; background-color:rgba(0, 0, 0,0.4); text-align: center; top: 0; display: none; z-index: 999; } #MyPopup .MyPopup { position: absolute; width: 80%; border-radius: 5px; background-color: #fff; /* height: 300px; */ top: 150px; left: 10%; padding: 20px; box-sizing: border-box; } #MyPopup .disflex { display: flex; } #MyPopup .flexOne { flex: 1; } #MyPopup .tabBox .tab{ padding: 0px 0 5px 0; color: blue; } #MyPopup .disflex .tabactive { border-bottom: 2px solid blue; } #MyPopup span { display: inline-block; width: 70px; } #MyPopup input { padding: 5px 0; } #MyPopup .disflex .tab { flex: 1; } #MyPopup .btnbox { margin-top: 10px; color: blue; justify-content: space-around; } #MyPopup .disflex .btn { border-radius: 5px; border: 1px solid blue; width: 30%; } #MyPopup .disflex .btn:nth-child(2) { background-color: blue; color: #fff; } 如果你也对原生感兴趣可以联系我呀QQ283254340,上面代码有不妥的也可以给我发邮件,共同学习