Vue中移动div

html代码: 

<div class="kongtiaojifang" ref="kongtiao" @mousedown="mouseDownHandleelse($event)" @mouseup="mouseUpHandleelse($event)">
</div>

js代码:

<script>
export default {
  name: 'zhinengjifang',
  data () {
    return {
      moveDataelse: {
        x: null,
        y: null
      }
    }
  },
  mounted () {
  },
  beforeDestroy () {
  },
  components: {
  },
  methods: {
    mouseDownHandleelse (event) {
      this.moveDataelse.x = event.pageX - this.$refs.kongtiao.offsetLeft
      this.moveDataelse.y = event.pageY - this.$refs.kongtiao.offsetTop
      event.currentTarget.style.cursor = 'move'
      window.onmousemove = this.mouseMoveHandleelse
    },
    mouseMoveHandleelse (event) {
      let moveLeft = event.pageX - this.moveDataelse.x + 'px'
      let moveTop = event.pageY - this.moveDataelse.y + 'px'
      this.$refs.kongtiao.style.left = moveLeft
      this.$refs.kongtiao.style.top = moveTop
    },
    mouseUpHandleelse (event) {
      window.onmousemove = null
      event.currentTarget.style.cursor = 'move'
      console.log('鼠标松开了')
    }
  }
}
</script>

 3、css代码:

<style scoped lang='scss'>
 .kongtiaojifang{
    height: 200px;
    width: 400px;
    position: fixed;
    left: 550px;
    cursor: pointer;
  }
</style>

 

 

Vue.js本身并不是一个直接支持HTML元素拖拽功能的库,但是你可以通过第三方插件如`vue-draggable`或者`vuedraggable`来轻松实现这个功能。以下是一个简单的步骤: 1. 安装插件:首先你需要在项目安装`vue-draggable`,可以使用npm或yarn进行安装: ```bash npm install vue-draggable # 或者 yarn add vue-draggable ``` 2. 在组件引入并使用:在Vue文件导入`vuedraggable`,并在需要拖拽的div上应用这个属性: ```html <template> <draggable v-model="items" :options="{ group: 'people', draggable: '.draggable-element' }"> <div class="draggable-element" v-for="(item, index) in items" :key="index"> {{ item.name }} </div> </draggable> </template> <script> import draggable from "vuedraggable"; export default { components: { draggable }, data() { return { items: [ { name: "Item 1", position: { x: 0, y: 0 } }, // 更多元素... ] }; } }; </script> ``` 在这个例子,`.draggable-element`是你需要可以被拖动的元素的选择器,`group`属性用于指定哪些元素可以互相拖拽,`position`数据绑定到每个元素上,以便跟踪它们的位置。 3. 监听事件:`vuedraggable`会触发一些事件,如`start`、`end`等,你可以监听这些事件以处理拖拽过程的各种操作。 ```javascript <script> // ... methods: { onDragEnd(e) { const draggedItem = e.item; this.$set(this.items, draggedItem.index, { ...draggedItem, position: { x: e.x, y: e.y } }); } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值