欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Vue自定义弹窗指令的实现代码

程序员文章站 2022-06-19 21:25:40
目标 使用vue2.0实现自定义弹窗指令,当标签有该指令时,点击标签可以弹出弹窗 实现

目标

使用vue2.0实现自定义弹窗指令,当标签有该指令时,点击标签可以弹出弹窗

Vue自定义弹窗指令的实现代码

实现

<!doctype html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="x-ua-compatible" content="ie=edge">
 <title>document</title>
 <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
</head>
<body>
 <div id="app">
  <button id="btn" v-popup="{text: '这是一个自定义的弹窗'}">点击我弹窗哈哈哈</button>
  <div id="d"></div>
 </div>
 <script>
   vue.directive('popup', {
    inserted: function (el, binding) {
     // console.log(binding.value.text)
     var o = el;
     var mydiv = document.createelement('div');
     mydiv.style.width = '300px';
     // mydiv.style.height = '130px';
     mydiv.style.position = 'fixed';
     mydiv.style.top = '50%';
     mydiv.style.left = '50%';
     mydiv.style.transform = 'translate(-50%, -100%)';
     mydiv.style.zindex = '100';
     mydiv.style.backgroundcolor = '#f3f5f8';
     mydiv.style.display = 'none';
     mydiv.style.textalign = 'center';
     mydiv.style.paddingtop = '15px'
     mydiv.style.borderradius = '5px';
     mydiv.style.borderwidth = '1px';
     mydiv.style.borderstyle = 'solid';
     mydiv.style.bordercolor = '#696969';
     var mycontent = document.createelement('p');
     var mytext = document.createtextnode(binding.value.text);
     var btnwrapper = document.createelement('div')
     btnwrapper.style.margintop = '20px'
     btnwrapper.style.marginbottom = '20px'
     var myconfirm = document.createelement('input');
     myconfirm.type = 'button';
     myconfirm.value = '确定';
     myconfirm.style.marginright = '15px'
     var mycancel = document.createelement('input');
     mycancel.type = 'button';
     mycancel.value = '取消';
     btnwrapper.appendchild(myconfirm)
     btnwrapper.appendchild(mycancel)
     mydiv.appendchild(mycontent.appendchild(mytext))
     mydiv.appendchild(btnwrapper)
     document.body.appendchild(mydiv);
     o.onclick = function (event) {
      mydiv.style.display = 'block'
     }
     myconfirm.onclick = function (event) {
      mydiv.style.display = 'none'
     }
     mycancel.onclick = function (event) {
      mydiv.style.display = 'none'
     }
    }
   })
   var vm = new vue({
    el: '#app',
    data:{
    }
   })
 </script>
</body>
</html>

总结

以上所述是小编给大家介绍的vue自定义弹窗指令的实现代码,希望对大家有所帮助