iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何利用vue.js实现拖放功能
  • 823
分享到

如何利用vue.js实现拖放功能

2024-04-02 19:04:59 823人浏览 独家记忆
摘要

前言 添加拖放功能是使你的程序更加自然和友好的方法。尽管有一些提供拖放功能的库,但是了解它们在底层的工作原理是非常有意义的。 在本文中,我们将用内置的 html 拖放 api 来实现

前言

添加拖放功能是使你的程序更加自然和友好的方法。尽管有一些提供拖放功能的库,但是了解它们在底层的工作原理是非常有意义的。

在本文中,我们将用内置的 html 拖放 api 来实现简单的拖放系统。像这样:

拖放API

HTML拖放API 是一种内置方法,它包含几个事件和属性,但是可以归纳为以两种类型的元素为思路来进行处理。

  1. 可拖动元素:可以被拖动的元素
  2. 可放置元素:可以接受被拖动元素的元素

如果这样分析,将会使分析拖放事件变得更加容易。

拖放事件

API 中有八个拖放事件可以用在我们程序中。

  • drag:可拖动的项目被拖动
  • dragstart:开始拖动可拖动元素
  • dragend:拖动结束(例如放开鼠标)
  • dragenter :拖动的项目进入可放置元素
  • dragleave –可拖动的项目离开可放置元素
  • draGover:可拖动项目在可放置元素上移动(每一百毫秒左右调用一次)
  • drop:可拖动项目被放置在可放置元素上

dataTransfer对象

关于拖放 API 最重要的一个知识点时它将 dataTransfer对象添加到事件中。

dataTransfer 对象允许我们在开始拖动元素时设置数据,并在将元素放在拖放区中时访问相同的数据。

我们应该知道一些关于 dataTransfer 的属性和方法(如果要了解更多,请查看dataTransfer API 文档)。

  • dropEffect:当前的拖放操作(例如,移动,复制)
  • effectAllowed:指定拖放操作
  • setData(name,val):允许我们向dataTransfer对象添加值
  • getData(name):检索存储的值

创建自己的拖放系统

如你所见例子中有两个列表,我们可以在它们之间顺畅地拖放项目。

配置我们的项目

首先,我们必须设置数据。在脚本中,创建一个 item 对象数组,对象的属性有:

  • id:唯一的 ID,以便我们可以查找对象
  • title:要显示文字
  • list:它所属的列表。

我决定在这个数组中添加三项:


data () {
    return {
      items: [
      {
        id: 0,
        title: 'Item A',
        list: 1
      },
      {
        id: 1,
        title: 'Item B',
        list: 1
      },
      {
        id: 2,
        title: 'Item C',
        list: 2
      }]
    }
}

另外还创建了两个计算属性用来把项目列表过滤为列表1中的项目和列表2中的项目。


computed: {
    listOne () {
      return this.items.filter(item => item.list === 1)
    },
    listTwo () {
      return this.items.filter(item => item.list === 2)
    }
}

创建计算属性比在 v-for 中使用 v-if 更好。

创建的模板代码

这是组件的轮廓。该代码将显示所有内容,但没有拖放功能。


<template>
  <div>
    <div class='drop-zone'>
      <div v-for='item in listOne' :key='item.title' class='drag-el'>
        {{ item.title }}
      </div>
    </div>
    <div class='drop-zone'>
      <div v-for='item in listTwo' :key='item.title' class='drag-el'>
        {{ item.title }}
      </div>
    </div>
  </div>
</template>

组件的样式并不重要。重要的是,即使没有内部元素,你的放置区也必须具有一定的高度,否则,你无法将鼠标悬停在上面!


<style scoped>
  .drop-zone {
    background-color: #eee;
    margin-bottom: 10px;
    padding: 10px;
  }

  .drag-el {
    background-color: #fff;
    margin-bottom: 10px;
    padding: 5px;
  }
  
</style>

通过在拖放区样式中添加一些填充来实现。

添加拖放功能

首先在脚本中添加一些方法:一种在开始拖动元素时使用,另一种在拖放元素时使用。

对于 startDrag 方法,我们想使用前面讨论的 dataTransfer 属性存储要拖动的元素的 ID。另外这个拖动事件将是一个动作。


startDrag: (evt, item) => {
      evt.dataTransfer.dropEffect = 'move'
      evt.dataTransfer.effectAllowed = 'move'
      evt.dataTransfer.setData('itemID', item.id)
}

然后在 ondrop 中检索存储的 ID,以便我们可以访问数组中正确的项目。


onDrop (evt, list) {
      const itemID = evt.dataTransfer.getData('itemID')
      const item = this.items.find(item => item.id == itemID)
      item.list = list
}

下面添加模板代码。

首先向事件添加事件。需要使元素可拖动并检测拖动开始事件。


<div 
        class='drag-el' 
        v-for='item in listTwo' 
        :key='item.title' 
        draggable
        @dragstart='startDrag($event, item)'
 >
        {{ item.title }}
</div>

由于添加了 draggable 属性,所以,如果你运行程序,应该可以像这样拖动元素,但是无法将其拖放到任何地方。

让我们给它一个接受可拖动元素的放置区域。先添加调用 onDrop 方法的 drop 事件侦听器。


<div
      class='drop-zone'
      @drop='onDrop($event, 1)' 
>

但是要注意,我们必须在 dragEnter 和 dragOver 这两个拖放 hooks 上调用 preventDefault。

因为在默认情况下,这两种方法不允许删除元素。所以为了使我们的 drop 事件能够正常运行,必须阻止其默认操作才行。

可以用 Vue 内置的 .prevent 事件修改器来完成此操作。


<div
      class='drop-zone'
      @drop='onDrop($event, 1)' 
      @dragover.prevent
      @dragenter.prevent
>

现在运行程序,可以看到一切正常。我们能够在两个不同的列表之间拖放元素。

总结

尽管这个例子非常简单,但可以帮你很好地了解 HTML 拖放 API 的工作原理。实际上它并不像你所想象的那么难。

到此这篇关于如何利用vue.js实现拖放功能的文章就介绍到这了,更多相关vue.js拖放功能内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 如何利用vue.js实现拖放功能

本文链接: https://www.lsjlt.com/news/127348.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何利用vue.js实现拖放功能
    前言 添加拖放功能是使你的程序更加自然和友好的方法。尽管有一些提供拖放功能的库,但是了解它们在底层的工作原理是非常有意义的。 在本文中,我们将用内置的 HTML 拖放 API 来实现...
    99+
    2024-04-02
  • 使用vue.js怎么实现拖放功能
    这期内容当中小编将会给大家带来有关使用vue.js怎么实现拖放功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。拖放APIHTML拖放API 是一种内置方法,它包含几个事件和属性,但是可以归纳为以两种类型...
    99+
    2023-06-15
  • 如何使用Vue.js实现拖放效果
    这篇“如何使用Vue.js实现拖放效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用Vue.js实现拖放效果”文章吧...
    99+
    2023-07-04
  • HTML5中如何实现拖放功能
    这篇文章主要介绍了HTML5中如何实现拖放功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、什么是拖放拖放就是通过鼠标放在一个物体上,按住鼠标不放就可以把一个物体托动到另...
    99+
    2023-06-09
  • 如何使用HTML5+CSS3实现拖放功能
    这篇文章主要为大家展示了“如何使用HTML5+CSS3实现拖放功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用HTML5+CSS3实现拖放功能”这篇文...
    99+
    2024-04-02
  • 脚本div如何实现拖放功能
    这篇文章给大家分享的是有关脚本div如何实现拖放功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。网页上有很多拖曳的操作,比如拖动树状列表,可拖曳的图片等。1.原生拖放实现<...
    99+
    2024-04-02
  • HTML5如何拖放功能
    这篇文章主要为大家展示了“HTML5如何拖放功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5如何拖放功能”这篇文章吧。 ...
    99+
    2024-04-02
  • HTML5拖放API怎么实现拖放排序功能
    小编给大家分享一下HTML5拖放API怎么实现拖放排序功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言HTML5 中提供了...
    99+
    2024-04-02
  • 怎么用HTML5+CSS3实现拖放功能
    这篇文章主要介绍“怎么用HTML5+CSS3实现拖放功能”,在日常操作中,相信很多人在怎么用HTML5+CSS3实现拖放功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么...
    99+
    2024-04-02
  • 利用vue组件实现图片的拖拽和缩放功能
    目录前言如图所示:方法如下:总结前言 vue实现一个组件其实很简单但是要写出一个好的可复用的组件那就需要多学习和钻研一下,一个好的组件必须有其必不可少的有优点:一是能提高应用开发效率...
    99+
    2024-04-02
  • HTML5中怎么实现拖放功能
    小编给大家分享一下HTML5中怎么实现拖放功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!关于HTML5中的拖放拖放(Drag...
    99+
    2024-04-02
  • HTML5 中怎么实现拖放功能
    本篇文章给大家分享的是有关HTML5 中怎么实现拖放功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、拖放 <!DOCTY...
    99+
    2024-04-02
  • VB.NET中怎么实现拖放功能
    VB.NET中怎么实现拖放功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Windows用户一般分为两类:一类习惯用键盘操作,一类习惯用鼠标操作。程序员们在编程时一般会提...
    99+
    2023-06-17
  • Python GUI 编程:实现拖放功能
    ...
    99+
    2024-04-02
  • vue实现放大缩小拖拽功能
    本文实例为大家分享了vue实现放大缩小拖拽功能的具体代码,供大家参考,具体内容如下 点击放大至全屏 再次点击缩小至原始  这个弹框是基于element dialog的基础上...
    99+
    2024-04-02
  • 怎么利用vue组件实现图片的拖拽和缩放功能
    这篇文章将为大家详细讲解有关怎么利用vue组件实现图片的拖拽和缩放功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言vue实现一个组件其实很简单但是要写出一个好的可复用的组件那就需要多学...
    99+
    2023-06-26
  • js如何实现拖拽功能
    这篇文章主要为大家展示了“js如何实现拖拽功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js如何实现拖拽功能”这篇文章吧。效果图:(红色方块可任意拖动)代码...
    99+
    2024-04-02
  • 如何使用HTML5实现拖拽功能
    这篇文章给大家分享的是有关如何使用HTML5实现拖拽功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   问题:突然奇想,想在电影网上加一个收藏(类似于购物车的东西),可以通...
    99+
    2024-04-02
  • VB.NET如何实现拖放
    本篇文章为大家展示了VB.NET如何实现拖放,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。VB.NET还是比较常用的,于是我研究了一下VB.NET实现拖放,在这里拿出来和大家分享一下,希望对大家有用...
    99+
    2023-06-17
  • Angular+rxjs如何实现拖拽功能
    这篇文章主要介绍“Angular+rxjs如何实现拖拽功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Angular+rxjs如何实现拖拽功能”文章能帮助大家解决...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作