Vue简单实现自定义拖拽


前言

我们在写Vue项目的时候有时候会遇到一些拖拽的问题,但是Vue又不直接操作底层DOM,这个时候我们就需要用到自定义指令了来对底层DOM进行操作。


什么是自定义指令

先来看看官方的解释:除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令。注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。官网解释,这里就不多做介绍了。大家可自行去学习。

lib-drag插件的使用

第一步

npm i lib-drag -S

第二步

在入口文件中引入
import drag from “lib-drag”
Vue.directive('自定义指令ID',drag)

第三步

在页面中通过<div v-自定义指令ID=‘这里需要有个布尔值’>
为true时盒子全部可以拖拽,为false时只有顶部可以拖拽。
父盒子一定要有高度!!!!!
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 组件拖拽可以通过使用 HTML5 的拖放 API 实现,具体步骤如下: 1. 在组件中定义一个 `draggable` 属性,设置为 `true`,表示该组件拖拽。 2. 监听组件的 `dragstart` 事件,在事件处理函数中设置 `event.dataTransfer.setData` 方法,将要传递的数据存储到 `dataTransfer` 对象中,这里可以存储组件的标识符或其他需要传递的数据。 3. 监听组件的 `dragover` 事件,阻止默认行为(即禁止拖放元素的默认行为,如禁止在拖拽时选中文本),同时设置 `event.dataTransfer.dropEffect` 属性,表示当前的拖放操作是复制、移动还是链接等。 4. 监听组件的 `drop` 事件,在事件处理函数中获取 `dataTransfer` 对象中存储的数据,进行相关操作。 下面是一个简单的示例: ```vue <template> <div> <div class="box" draggable="true" @dragstart="onDragStart">拖拽我</div> <div class="dropzone" @dragover.prevent @drop="onDrop">放置区域</div> </div> </template> <script> export default { methods: { onDragStart(event) { // 设置要传递的数据 event.dataTransfer.setData('text/plain', 'box'); }, onDrop(event) { // 获取传递的数据 const type = event.dataTransfer.getData('text/plain'); if (type === 'box') { console.log('拖拽成功!'); } } } } </script> ``` 在上面的示例中,我们在 `box` 元素上设置了 `draggable` 属性,并监听了 `dragstart` 事件,在事件处理函数中使用 `setData` 方法设置要传递的数据。在 `dropzone` 元素上监听了 `dragover` 和 `drop` 事件,分别阻止默认行为和获取传递的数据。当拖拽完成后,在控制台中会输出“拖拽成功!”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值