首页 > 其他分享 >vue3自定义指令

vue3自定义指令

时间:2023-02-12 02:11:05浏览次数:42  
标签:el 自定义 top 指令 let vue3 document event

前言

  很多时候我们写的方法是通用的,这个时候根据使用场景可以选择放在js或者ts文件并让其他文件引入使用,但如果是对现有组件添加新功能的话,还是建议用自定义指令更方便。

 

设置v-draggin来操作dom元素的拖拽

1. 在main.js 全局添加自定义指令

const app = createApp(App)

app.directive('dragging',{
    mounted(el, binding, vnode) {
        console.log(el, binding, vnode);

        el.addEventListener('mousedown', (e:any) => {
            console.log(e);
            let ol = e.clientX - el.offsetLeft;
            let ot = e.clientY - el.offsetTop;

            // 给document绑定一个onmousemove事件
          document.onmousemove = function (event) {
            event = event || window.event;
            let left = event.clientX - ol;
            let top = event.clientY - ot;
   
            //修改el的位置
            el.style.left = left + "px";
            el.style.top = top + "px";
          };
   
          document.onmouseup = function () {
            document.onmousemove = null;
   
            document.onmouseup = null;
          };
        })
    }
});

  

2. 在需要使用拖拽功能的dom元素上添加v-dragging

<div id="imgId" width="125" height="125" v-dragging ></div>

<img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" v-dragging />

  

标签:el,自定义,top,指令,let,vue3,document,event
From: https://www.cnblogs.com/zxd66666/p/17113192.html

相关文章