【vue/JS】拖拽图片加载图片文件到页面&画布等

45 篇文章 6 订阅
30 篇文章 0 订阅

1、阻止浏览器默认行为事件。

2、声明拖拽的区域,为该区域html标签添加drop拖拽事件。

3、获取拖拽的文件数据列表。

4、循环文件列表并且判断文件类型。

5、最终读取文件后加载图片即可!!

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .app {
      width: 100vw;
      height: 50vh;
      background-color: pink;
    }
    * {
      box-sizing: border-box;
      padding: 0;
      margin: 0;
    }
  </style>

</head>

<body>
  <div class="app">
    拖拽区域!!
  </div>
  <script>
    // 阻止浏览器默认行为
    const app = document.querySelector('.app')
    function preventDefaults(e) {
      e.preventDefault();
      e.stopPropagation();
    }

    ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
      app.addEventListener(eventName, preventDefaults, false);
    });
    console.log(app);
    app.addEventListener("drop", (e) => {
      console.log('drop !', e);
      let dt = e.dataTransfer;
      let files = dt.files;
      console.log(files);
      for (let i = 0; i < files.length; i++) {
        const file = files[i];
        // 检查是否是图片文件
        if (file.type.startsWith('image/')) {
          const reader = new FileReader();
  
          // 读取文件内容
          reader.onload = function (e) {
            var imgObj = new Image();
            console.log(e.target.result,'e.target.result');
            imgObj.src = e.target.result
            imgObj.onload = function () {
              document.body.appendChild(imgObj)
            };
          };
  
          // 将文件内容读取为 Data URL
          reader.readAsDataURL(file);
        }
      }

    })

    // app.addEventListener("dragend", (event) => {
    //   console.log('dragend !', event);
    // })
  </script>
</body>

</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 如果在Vue页面中使用echarts加载图片非常小,可以尝试以下几种处理方式。首先,可以在mounted生命周期函数中实例化echarts对象,并确保dom元素已经挂载到页面中。在initEchart方法中,可以通过this.$refs.chart获取到dom元素,然后使用this.$echarts.init方法初始化echarts对象,并设置相应的配置项。\[1\]另外一种处理方式是,在页面加载完成之后,使用$(document).ready函数重新绘制echarts图表,并调用resize方法进行重绘。\[2\]此外,为了更好地初始化echarts对象,可以使用ref的方式获取dom元素,而不是使用原生的document.getElementById方法。在div元素上添加ref属性,并在初始化echarts对象时使用this.$refs.chart来获取dom元素。\[3\]通过以上处理方式,可以解决Vue页面中echarts加载图片过小的问题。 #### 引用[.reference_title] - *1* *3* [Vue中echarts加载不出问题](https://blog.csdn.net/weixin_44080648/article/details/108993511)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue中echarts初次加载图很小的问题](https://blog.csdn.net/myfmyfmyfmyf/article/details/124705627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值