vue 实现拖拽效果

实现方式:使用自定义指令可以实现多个面板拖拽互不影响

1.自定义指令 js

directives: {
    // 拖拽
    drag(el) {
      el.onmousedown = function (e) {
        let x = e.pageX - el.offsetLeft
        let y = e.pageY - el.offsetTop
        document.onmousemove = function (e) {
          el.style.left = e.pageX - x + 'px'
          el.style.top = e.pageY - y + 'px'
        }
        //鼠标抬起事件
        document.onmouseup = function () {
          document.onmousemove = null
        }
      }
    }
  },

2.html

    // 想拖动那个标签就在那个标签上面绑定 自定义指令 v-drag
      
按住拖拽

3.css

.box {
  height: 300px;
  width: 300px;
  background-color: #ccc;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  cursor: pointer;
}

vue 实现拖拽效果_第1张图片

 按住就可以随便拉vue 实现拖拽效果_第2张图片

 

你可能感兴趣的:(vue.js,前端,javascript)