JS实现仿微信支付弹窗功能

先奉上效果

HTML代码

rush:js;"> 仿手机微信支付输入密码界面<a href="https://www.jb51.cc/tag/xiaoguo/" target="_blank" class="keywords">效果</a>

css

<div class="jb51code">
<pre class="brush:js;">
body {
margin: 0;
padding: 0;
font-size: 0.3rem;
font-family: "微软雅黑",arial;
}
ul,li {
margin: 0;
padding: 0;
list-style: none;
}
img {
display: block;
}

myBtn {

    <a href="https://www.jb51.cc/tag/dis/" target="_blank" class="keywords">dis</a>play: block; 
    width: 80%; 
    height: auto; 
    margin: 5rem auto; 
    padding: 0.2rem; 
    border-radius: 5px; 
    border: 0; 
    outline: none; 
    font-family: "微软雅黑"; 
    color: #fff; 
    background-color: #5CB85C; 
  } 
  /* 弹窗 */ 
  .modal { 
    <a href="https://www.jb51.cc/tag/dis/" target="_blank" class="keywords">dis</a>play: none; 
    /* <a href="https://www.jb51.cc/tag/mo/" target="_blank" class="keywords">默</a>认隐藏 */ 
    position: fixed; 
    z-index: 1; 
    left: 0; 
    top: 0; 
    width: 100%; 
    height: 100%; 
    overflow: auto; 
    background-color: rgb(0,0); 
    background-color: rgba(0,0.4); 
    -webkit-animation-name: fadeIn; 
    -webkit-animation-duration: 0.4s; 
    animation-name: fadeIn; 
    animation-duration: 0.4s 
  } 
  /* 弹窗<a href="https://www.jb51.cc/tag/neirong/" target="_blank" class="keywords">内容</a> */ 
  .modal-content { 
    position: fixed; 
    b<a href="https://www.jb51.cc/tag/ott/" target="_blank" class="keywords">ott</a>om: 0; 
    /*background-color: #fefefe;*/ 
    width: 100%; 
    -webkit-animation-name: slideIn; 
    -webkit-animation-duration: 0.4s; 
    animation-name: slideIn; 
    animation-duration: 0.4s 
  } 
  /** 
   * 支付弹窗样式 
   * **/ 
  .paymentArea-Entry { 
    width: 90%; 
    margin: 0 auto; 
    padding-b<a href="https://www.jb51.cc/tag/ott/" target="_blank" class="keywords">ott</a>om: 0.3rem; 
    background-color: #fff; 
  } 
  .paymentArea-Entry-Head { 
    <a href="https://www.jb51.cc/tag/dis/" target="_blank" class="keywords">dis</a>play: flex; 
    <a href="https://www.jb51.cc/tag/dis/" target="_blank" class="keywords">dis</a>play: -webkit-flex; 
    height: 0.8rem; 
    line-height: 0.8rem; 
    padding: 0.2rem; 
    border-b<a href="https://www.jb51.cc/tag/ott/" target="_blank" class="keywords">ott</a>om: 1px solid #5CB85C; 
  } 
  /* <a href="https://www.jb51.cc/tag/guanbi/" target="_blank" class="keywords">关闭</a>按钮 */ 
  .paymentArea-Entry-Head .close { 
    width: 0.5rem; 
    height: 0.5rem; 
    padding: 0.15rem 0.15rem 0.15rem 0; 
  } 
  .paymentArea-Entry-Head .close:hover,.paymentArea-Entry-Head .close:focus { 
    color: #000; 
    text-<a href="https://www.jb51.cc/tag/decoration/" target="_blank" class="keywords">decoration</a>: none; 
    cursor: pointer; 
  } 
  .paymentArea-Entry-Head .useImg { 
    width: 0.8rem; 
    height: 0.8rem; 
    margin-right: 0.15rem; 
  } 
  .paymentArea-Entry-Head .tips-txt { 
    font-size: 0.4rem; 
  } 
  .paymentArea-Entry-Content { 
    position: relative; 
    padding: 0.2rem 0; 
    text-align: center; 
  } 
  .paymentArea-Entry-Content:after { 
    content: ""; 
    position: absolute; 
    b<a href="https://www.jb51.cc/tag/ott/" target="_blank" class="keywords">ott</a>om: 0; 
    left: 0.3rem; 
    right: 0.3rem; 
    height: 1px; 
    background-color: #ddd; 
  } 
  .paymentArea-Entry-Content .pay-name { 
    font-size: 0.3rem; 
  } 
  .paymentArea-Entry-Content .pay-price { 
    font-size: 0.4rem; 
    font-weight: bold; 
  } 
  ul.paymentArea-Entry-Row { 
    <a href="https://www.jb51.cc/tag/dis/" target="_blank" class="keywords">dis</a>play: flex; 
    <a href="https://www.jb51.cc/tag/dis/" target="_blank" class="keywords">dis</a>play: -webkit-flex; 
    justify-content: <a href="https://www.jb51.cc/tag/spacebetween/" target="_blank" class="keywords">space-between</a>; 
    margin: 0.2rem 0.3rem 0 0.3rem; 
    padding: 0; 
    border: 1px solid #a2a2a2; 
  } 
  ul.paymentArea-Entry-Row li { 
    position: relative; 
    flex-grow: 1; 
    min-width: 1rem; 
    height: 0.8rem; 
    line-height: 0.8rem; 
    text-align: center; 
    border-right: 1px solid #ddd; 
  } 
  ul.paymentArea-Entry-Row li:last-child { 
    border-right: 0; 
  } 
  ul.paymentArea-Entry-Row li img { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    width: 0.5rem; 
    height: 0.5rem; 
    margin: -0.25rem 0 0 -0.25rem; 
  } 
  .paymentArea-Keyboard { 
    margin-top: 1.2rem; 
    background-color: #fff; 
  } 
  .paymentArea-Keyboard h4 { 
    height: 0.5rem; 
    line-height: 0.5rem; 
    margin: 0; 
    text-align: center; 
  } 
  .paymentArea-Keyboard h4 img { 
    width: 0.93rem; 
    height: 0.32rem; 
    margin: 0 auto; 
  } 
  .paymentArea-Keyboard h4:active { 
    background-color: #e3e3e3; 
  } 
  .paymentArea-Keyboard ul { 
    border-top: 1px solid #ddd; 
  } 
  .paymentArea-Keyboard li { 
    <a href="https://www.jb51.cc/tag/dis/" target="_blank" class="keywords">dis</a>play: flex; 
    <a href="https://www.jb51.cc/tag/dis/" target="_blank" class="keywords">dis</a>play: -webkit-flex; 
    justify-content: <a href="https://www.jb51.cc/tag/spacebetween/" target="_blank" class="keywords">space-between</a>; 
    border-b<a href="https://www.jb51.cc/tag/ott/" target="_blank" class="keywords">ott</a>om: 1px solid #ddd; 
  } 
  .paymentArea-Keyboard li a { 
    flex-grow: 1; 
    <a href="https://www.jb51.cc/tag/dis/" target="_blank" class="keywords">dis</a>play: block; 
    min-width: 1rem; 
    line-height: 1rem; 
    border-right: 1px solid #ddd; 
    font-size: 0.3rem; 
    text-align: center; 
    text-<a href="https://www.jb51.cc/tag/decoration/" target="_blank" class="keywords">decoration</a>: none; 
    color: #000; 
  } 
  .paymentArea-Keyboard li:last-child,.paymentArea-Keyboard li a:last-child { 
    border: 0; 
  } 
  .paymentArea-Keyboard li a:active { 
    outline: none; 
    background-color: #ddd; 
  } 
  /* <a href="https://www.jb51.cc/tag/tianjia/" target="_blank" class="keywords">添加</a>动画 */ 
  @-webkit-keyframes slideIn { 
    from { 
      b<a href="https://www.jb51.cc/tag/ott/" target="_blank" class="keywords">ott</a>om: -300px; 
      opacity: 0 
    } 
    to { 
      b<a href="https://www.jb51.cc/tag/ott/" target="_blank" class="keywords">ott</a>om: 0; 
      opacity: 1 
    } 
  } 
  @keyframes slideIn { 
    from { 
      b<a href="https://www.jb51.cc/tag/ott/" target="_blank" class="keywords">ott</a>om: -300px; 
      opacity: 0 
    } 
    to { 
      b<a href="https://www.jb51.cc/tag/ott/" target="_blank" class="keywords">ott</a>om: 0; 
      opacity: 1 
    } 
  } 
  @-webkit-keyframes fadeIn { 
    from { 
      opacity: 0 
    } 
    to { 
      opacity: 1 
    } 
  } 
  @keyframes fadeIn { 
    from { 
      opacity: 0 
    } 
    to { 
      opacity: 1 
    } 
  } </pre>

js

<div class="jb51code">
<pre class="brush:js;">
//定义根目录字体大小,通过rem实现适配
document.addEventListener("DOMContentLoaded",function() {
var html = document.documentElement;
var windowWidth = html.clientWidth;
//console.log(windowWidth)
html.style.fontSize = windowWidth / 7.5 + "px";
},false);
// 获取弹窗
var modal = document.getElementById('myModal');
// 打开弹窗的按钮对象
var btn = document.getElementById("myBtn");
// 获取 元素,用于关闭弹窗 that closes the modal
var span = document.getElementsByClassName("close")[0];
/创建密码输入框/
var entryArea = document.querySelector(".paymentArea-Entry-Row");
for(var i = 0; i < 6; i++) {
var li = document.createElement("li");
entryArea.appendChild(li);
}
/键盘操作/
var doms = document.querySelectorAll('ul li a');
var entryLis = document.querySelectorAll(".paymentArea-Entry-Row li");
var pwds = ""; //存储密码
var count = 0; //记录点击次数
for(var i = 0; i < doms.length; i++) {
! function(dom,index) {
dom.addEventListener('click',function() {
var txt = this.innerHTML;
switch(txt) {
case "清空":
if(count != 0) {
for(var i = 0; i < entryLis.length; i++) {
entryLis[i].innerHTML = "";
}
pwds = "";
count = 0;
console.log(pwds)
console.log(count)
}
break;
case "删除":
if(count != 0) {
console.log(pwds)
entryLis[count - 1].innerHTML = "";
pwds = pwds.substring(0,pwds.length - 1);
count--;
console.log(pwds)
console.log(count)
}
break;
default:
/通过判断点击次数 向输入框填充内容/
if(count < 6) {
/创建一个图片对象 插入到方框中/
var img = new Image();
img.src = "images/dd_03.jpg";
entryLis[count].appendChild(img);
/为存储密码的对象赋值/
if(pwds == "") {
pwds = txt;
} else {
pwds += txt;
}
count++;
if(pwds.length == 6) {
location.href = "https://www.baidu.com";
}
} else {
return;
alert("超出限制")
}
}
});
}(doms[i],i);
}
// 点击按钮打开弹窗
btn.onclick = function() {
modal.style.display = "block";
}
// 点击 (x),关闭弹窗
span.onclick = function() {
modal.style.display = "none";
if(count != 0) {
for(var i = 0; i < entryLis.length; i++) {
entryLis[i].innerHTML = "";
}
pwds = "";
count = 0;
}
}
// 在用户点击其他地方时,关闭弹窗
window.onclick = function(event) {
if(event.target == modal) {
modal.style.display = "none";
if(count != 0) {
for(var i = 0; i < entryLis.length; i++) {
entryLis[i].innerHTML = "";
}
pwds = "";
count = 0;
}
}
}
/开关键盘/
var openKey = document.querySelector(".paymentArea-Entry-Row");
var switchOfKey = document.querySelector(".paymentArea-Keyboard h4");
switchOfKey.addEventListener('click',function() {
var KeyboardH = document.querySelector(".paymentArea-Keyboard").clientHeight;
document.querySelector(".paymentArea-Keyboard").style.height = KeyboardH + "px";
document.querySelector(".paymentArea-Keyboard").style.backgroundColor = "transparent";
document.querySelector(".paymentArea-Keyboard h4").style.display = "none";
document.querySelector(".paymentArea-Keyboard ul").style.display = "none";
})
openKey.addEventListener('click',function() {
document.querySelector(".paymentArea-Keyboard").style.backgroundColor = "#fff";
document.querySelector(".paymentArea-Keyboard h4").style.display = "block";
document.querySelector(".paymentArea-Keyboard ul").style.display = "block";
})

总结

以上所述是小编给大家介绍的JS实现仿微信支付弹窗功能。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

js微信支付微信支付弹窗

相关文章

什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据...
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:...
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面