美文网首页
Vue 超简单教你如何实现一个文件拖拽

Vue 超简单教你如何实现一个文件拖拽

作者: Alawaysonl_c839 | 来源:发表于2019-10-29 10:27 被阅读0次

HTML 拖放(Drag and Drop)接口使应用程序能够在Firefox和其他浏览器中使用拖放功能。例如,通过这些功能,用户可以使用鼠标选择可拖动元素,将元素拖动到可放置元素,并通过释放鼠标按钮来放置这些元素。可拖动元素的一个半透明表示在拖动操作期间跟随鼠标指针。对于网站、扩展以及 XUL 应用程序来说,你可以自定义能够成为可拖拽的元素类型、可拖拽元素产生的反馈类型,以及可放置的元素。

image.png

看到这个图片之后是不是有一种豁然开朗的感觉?我们要想实现一个简单的拖拽文件上传,只需要4个属性 drop、dragleave、dragenter、dragover;

话不多说,直接上代码;
html结构

<div class="updata-body" @dragenter="dragenter($event)">
    <div @drop="enentDrop($event)" @dragleave="dragleave($event)" @dragover="dragover($event)">
      <div class="drag-box">{{drapText}}</div>
    </div>
    <ul>
      <li v-for="(item, index) in fileData" :key="index">{{item.name}}</li>
    </ul>
  </div>
  <script>
   export default {
    name: 'drag',
    data() {
      return {
        drapText: '将文件拖拽到此处进行上传',
        fileData: []
        }
      }
    }
</script>
image.png

接下来就是方法和思路
第一步 dragenter() 是当选中的文件移入到拖拽的区域会触发此方法
第二步 dragover() 是在拖拽的区域不断的移动会触发此方法
第三步 enentDrop() 鼠标在拖拽的区域松开鼠标,释放拖拽的问题会触发此方法
第四步 dragleave() 是拖拽的文件离开拖拽的区域会触发此方法

methods: {
      enentDrop: function(e) {
        e.stopPropagation();
        e.preventDefault(); 
        this.updataFun(e.dataTransfer.files)
      },
      dragleave(e) {
        e.stopPropagation();
        e.preventDefault();
      },
      dragenter(e) {
        e.stopPropagation();
        e.preventDefault();
        this.drapText = '松开鼠标完成上传';
      },
      dragover(e) {
        e.stopPropagation();
        e.preventDefault();
      },
      updataFun(data) {
        let that = this;
        for (let i = 0; i < data.length; i++) {
          this.fileData.push(data[i])
        }
        this.drapText = '上传成功';
        setTimeout(() => {
          that.drapText = '将文件拖拽到此处进行上传';
        }, 500);
      }
    }

方法里需要注意的一些问题;1. 一定要阻止默认事件和阻止冒泡事件,不然就会发生你把文件拖入到浏览器中会自动下载,如果是图片的话就会默认展示到浏览器中;
2. 在拖拽释放之后想要获取上传的文件信息e.dataTransfer.files

image.png

https://github.com/xiangnideye/vue-select 这个是github地址,有需要可以去拉去代码。如果喜欢可以给个星星,谢谢~

相关文章

  • Vue 超简单教你如何实现一个文件拖拽

    HTML 拖放(Drag and Drop)接口使应用程序能够在Firefox和其他浏览器中使用拖放功能。例如,通...

  • 纯vue实现轮播,超简单

    用vue如何实现轮播,超简单。新手用vue实现轮播,超简单 知识点: v-if 指令 --- 显示隐藏transf...

  • JS实现拖拽功能

    拖拽功能是我们日常项目中常用的效果,今天我们就来研究一下如何实现简单的拖拽功能。想实现拖拽功能其实很简单,主要需要...

  • 原生拖拽,拖放事件(drag and drop)

    拖拽,拖放事件可以通过拖拽实现数据传递,达到良好的交互效果,如:从操作系统拖拽文件实现文件选择,拖拽实现元素布局的...

  • HTML5拖拽drag

    通过拖拽实现页面元素的位置改变 实现拖拽效果 源元素 - 要拖拽的文件 目标元素 - 要拖拽到哪里去 目前实现拖拽...

  • HTML5实现拖拽

    实现拖拽效果源元素 - 要拖拽的文件目标元素 - 要拖拽到哪里去 目前实现拖拽效果使用原生DOM就能实现 - 最麻...

  • vue项目实现文件拖拽上传

    一,基本界面 二,监听拖动事件事件让vue支持文件拖拽,写在vue的mounted:function(){},里面...

  • iOS - UICollectionView 长按拖拽

    简单写了一个collectionview的拖拽效果,记录下.只是简单的实现了拖拽,其它都没有加 实现思路: 首先给...

  • vue 弹窗可拖拽

    vue 弹窗可拖拽 通过自定义指令实现

  • VUE+WebRTC实现音视频直播

    如何使用 Vue 实现音视频功能 1 功能简介 本文将介绍如何快速使用 Vue 实现一个简单的实时音视频通话。 相...

网友评论

      本文标题:Vue 超简单教你如何实现一个文件拖拽

      本文链接:https://www.haomeiwen.com/subject/nlopvctx.html