element查看大图添加下载按钮(整理)

简介: element查看大图添加下载按钮(整理)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <title>element查看大图添加下载按钮</title>
  </head>
  <body>
    <div id="app">
      <div class="demo-image__preview" @click="checkImage">
        <el-image style="width: 100px; height: 100px" :src="url" :preview-src-list="srcList">
        </el-image>
      </div>
    </div>
    <!-- <i class="el-icon-download" onclick="installImage()"></i> -->
  </body>
  <!-- import Vue before Element -->
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
  <!-- import JavaScript -->
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <script>
    let vueEle = null;
    window.installImage = function() {
      alert(111)
      console.log('下载')
      let srcUrl = document.querySelector('.el-image-viewer__img').src;
      vueEle.downloadIamge(srcUrl, '图片名字');
    }
    vueEle = new Vue({
      el: '#app',
      data: function() {
        return {
          url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
          srcList: [
            'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
            'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
          ]
        }
      },
      methods: {
        checkImage() { //这个事件要绑定el-image父级盒子上
          console.log('点击事件');
          let a = document.querySelector('.el-image-viewer__actions__inner');
          $(a).append(`<i class="el-icon-download" onclick="installImage()"></i>`)
        },
        downloadIamge(imgsrc, name) { //下载图片地址和图片名
          let image = new Image();
          // 解决跨域 Canvas 污染问题
          image.setAttribute("crossOrigin", "anonymous");
          image.onload = function() {
            let canvas = document.createElement("canvas");
            canvas.width = image.width;
            canvas.height = image.height;
            let context = canvas.getContext("2d");
            context.drawImage(image, 0, 0, image.width, image.height);
            let url = canvas.toDataURL("image/png"); //得到图片的base64编码数据
            let a = document.createElement("a"); // 生成一个a元素
            let event = new MouseEvent("click"); // 创建一个单击事件
            a.download = name || "photo"; // 设置图片名称
            a.href = url; // 将生成的URL设置为a.href属性
            a.dispatchEvent(event); // 触发a的单击事件
          };
          image.src = imgsrc;
        }
      }
    })
  </script>
</html>
相关文章
element中使用走马灯效果el-carousel点击按钮切换第几页demo效果示例(整理)
element中使用走马灯效果el-carousel点击按钮切换第几页demo效果示例(整理)
uniapp点击底部tabBar事件效果(整理)
uniapp点击底部tabBar事件效果(整理)
element-ui时间选择器限制只能点击不让输入(整理)
element-ui时间选择器限制只能点击不让输入(整理)
|
9月前
|
前端开发 JavaScript
【项目笔记】:elementui下拉框数据太多造成页面卡顿怎么解决?
针对前端下拉框数据过多造成页面卡顿,元芳你怎么看?
121 2
|
5月前
|
XML JavaScript 前端开发
javascript点击图片在弹出层显示大图
Javascript是个好东西。 Jquery是基于这个好东西的一个强大的库。 今天要实现的功能是基于这两个玩意儿的。 点击图片,在弹出层显示原图。
58 0
|
6月前
|
JavaScript
jquery实现点击图片切换为另一图片,再次点击恢复到原图片
jquery实现点击图片切换为另一图片,再次点击恢复到原图片
72 0
uniapp上传多张图片-带删除按钮查看大图效果demo(整理)
uniapp上传多张图片-带删除按钮查看大图效果demo(整理)
element关闭弹窗点击背景色(整理)
element关闭弹窗点击背景色(整理)
jq点击导航页面滑动到对应内容demo效果示例(整理)
jq点击导航页面滑动到对应内容demo效果示例(整理)
|
8月前
|
JavaScript
js限制文字字数--点击展开点击收起demo效果示例(整理)
js限制文字字数--点击展开点击收起demo效果示例(整理)