首页 > 其他分享 >vue拖拽指令

vue拖拽指令

时间:2023-02-21 09:22:05浏览次数:33  
标签:function el vue odiv setAttribute flag 指令 document 拖拽

Vue.directive('drag', {
  // 1.指令绑定到元素上回立刻执行bind函数,只执行一次
  // 2.每个函数中第一个参数永远是el,表示绑定指令的元素,el参数是原生js对象
  // 3.通过el.focus()是无法获取焦点的,因为只有插入DOM后才生效
  bind: function(el) {},
  // inserted表示一个元素,插入到DOM中会执行inserted函数,只触发一次
  inserted: function(el) {
    const odiv = el // 获取当前元素
    let firstTime = ''
    let lastTime = ''
    el.onmousedown = function(e) {
      var disx = e.pageX - el.offsetLeft
      var disy = e.pageY - el.offsetTop
      // 给当前元素添加属性,用于元素状态的判断
      odiv.setAttribute('ele-flag', false)
      odiv.setAttribute('draging-flag', true)
      firstTime = new Date().getTime()
      document.onmousemove = function(e) {
        el.style.left = e.pageX - disx + 'px'
        el.style.top = e.pageY - disy + 'px'
      }
      document.onmouseup = function(event) {
        document.onmousemove = document.onmouseup = null
        lastTime = new Date().getTime()
        if (lastTime - firstTime > 200) {
          odiv.setAttribute('ele-flag', true)
          event.stopPropagation()
        }
        setTimeout(function() {
          odiv.setAttribute('draging-flag', false)
        }, 100)
      }
    }
  },
})

标签:function,el,vue,odiv,setAttribute,flag,指令,document,拖拽
From: https://www.cnblogs.com/whh666/p/17139735.html

相关文章

  • Vue3 - defineProps 设置默认值
    在TS中,仅类型声明的一个缺点defineProps是它无法为props提供默认值。为了解决这个问题,withDefaults还提供了一个编译器宏,同时给出JS默认值的写法<scriptsetuplang="ts......
  • vue3 门户网站搭建2-ngnix
    路由配好了,需要调试下build后是否可用,这时我们需要一个服务端来运行静态网页。官网直接下载一个windows版本的ngnix即可:http://nginx.org/en/download.html 下......
  • vue-cli创建 vue创建项目 vue项目目录介绍 es导入导出
    目录回顾vue-cli创建项目创建vue项目使用什么vue创建项目vue项目目录介绍es导入导出语法App.vuemain.jsAbout.vue写了什么导入导出语法vue项目编写步骤小练习-登录功......
  • vue-cli创建项目 vue项目目录介绍 es6导入导出语法 scoped
    上节回顾#1组件使用-局部-全局#2组件间通信一旦组件化开发--->组件间通信-父传子:自定义属性-子穿父:自定义事件-ref属......
  • vuecli创建项目,vue项目介绍,二是导入导出语法,小练习登录功能,scoped
    内容回顾组件的使用局部组件components全局组件Vue.component(‘名称’,{})组件间通信一旦组件化开发—》组件间通信父传子:自定义属性:子组件用props属性接收子传......
  • vue基础6种通信方式
    1props父组件Father子组件Son//父组件给子组件传递参数<Sonname="何世蟒"sex="男":age="22"/>//子组件接收参数//方式一props:['name','sex','age']/......
  • Vue-路由(vue-roter)
    1.路由的使用1.路由的安装vue-routernpmivue-router@3vue3中使用router4版本,vue2中使用router3版本2.应用路由插件①在src目录下创建router文件夹作为路......
  • vue-vue项目创建、es6导入导出语法、scoped使用
    1.vue-cil下载和创建1.1下载安装vue-cli: 我们使用npm(并行)下载是是从国外的网站下载,所以速度会比较慢,建议使用cnpm(串行),cnpm要从淘宝镜像下载。 步骤: 1.安装cnp......
  • vue2,nginx,redis,tomcat,Java的关系
    Java作为一种广泛应用的编程语言,在后端开发中扮演着重要的角色。Java后端开发不仅需要掌握Java语言的基本语法和相关技术,还需要熟悉一些其他的技术和工具,如Vue2、Nginx、Re......
  • Vue 非单文件组件(不常用)3步骤(创建、注册、使用)
    Vue中使用组件的三大步骤:1、定义组件(创建)2、注册组件3、使用组件(写组件标签)一、如何定义一个组件?使用Vue.extend(options)创建,其中options和newVue(options)时传入......