Vue实现点击图片放大功能、element-ui自带隐藏的图片查看器el-image-viewer放大预览图片-element 点击按钮查看图片弹窗

本文介绍如何使用Vue和Element UI实现点击图片放大预览的功能,包括两种方法:一是使用隐藏的el-image-viewer组件;二是利用已暴露的Image组件中的el-image-viewer,后者兼容IE浏览器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue实现点击图片放大显示功能_厦门子豪的博客-CSDN博客_vue 点击查看大图

vue 实现点击图片放大_qq_36320160的博客-CSDN博客_vue点击图片放大

使用element的:

element-ui Image组件中的隐藏功能el-image-viewer组件的使用_element ui el-image实现el-image-viewer功能-CSDN博客 巧用element-ui自带隐藏的图片查看器el-image-viewer浏览图片(附兼容IE骚操作)-CSDN博客

想通过点击这个按钮,显示大图预览

urlList 绑定的文件列表
zIndex 查看器层级
onSwitch 图片切换事件
onClose 查看器关闭事件
initialIndex 初始化展示哪张图片

:url-list="[url]" 一个图片数组的url可以写成这样的

<el-image> 可通过 previewSrcList 开启预览大图的功能。

<template>
  <div class="wscn-http404-container">
    <el-button @click="handlePreview">预览</el-button>
    <el-image-viewer
      v-if="isShowPics"
      :on-close="closeViewer"
      :url-list="srcList"
    />
  </div>
</template>

<script>
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
export default {
  name: "Page404",
  data() {
    return {
      srcList: [
        "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
        "https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg",
      ],
      isShowPics: false,
    };
  },
  components: { ElImageViewer },
  methods: {
    handlePreview() {
      this.isShowPics = true;
    },
    onPreview() {
      this.isShowPics = true;
    },
    // 关闭查看器
    closeViewer() {
      this.isShowPics = false;
    },
  },
};
</script>

<style lang="scss" scoped></style>

 以上方法不兼容IE!!!因为element没有将此组件暴露出去并经过webpack打包,直接引入该组件的话IE有兼容性问题,大多数网上的都是上面的方法。

第二种:这里我们利用已经暴露的Image组件包含的el-image-viewer来重新实现我们的目的,它由于暴露出来并经过webpack打包编译

因此以下方法是兼容IE的(推荐使用此方法,也无须再引入任何组件!):

调用Image 的源码中的image-viewer里面的方法,然后生成预览图片的框,然后通过查看按钮 将预览图片的数据拿到,再调用image-viewer中的clickHandler内置方法,该方法会将image-viewer中的是否显示的标识置为ture

<el-image> 可通过 previewSrcList 开启预览大图的功能。

<template>
    <div>
        <el-button @click="onPreview">预览</el-button>
        <!-- 图片查看器(兼容ie) -->
        <el-image
          ref="preview"
          class="hideImgDiv"
          :src="url"
          :preview-src-list="[url]"
        ></el-image>
    </div>
</template>
<script>
    export default {
      name: 'Index',
      data() {
        return {
          url:'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg'
        }
      },
      methods: {
        onPreview() {
          //调用image组件中的大图浏览图片方法
          this.$refs.preview.clickHandler();
        },
      }
</script>

父组件:

<template>
  <div>
<!-- imgBaseUrl为图片URL-->
<!-- <img v-if="imgBaseUrl" style="width:100%" :src="imgBaseUrl"  @click.self="showBigImage(imgBaseUrl)">
-->
<img
    @click.self="showBigImage($event)"
    src="~@/assets/img/liaojiewt/202141.png"
    alt=""
/>
//显示放大图片的组件
<BigImg :visible="photoVisible" :url="bigImgUrl" @closeClick="()=>{photoVisible=false}"></BigImg>
  </div>
</template>

import BigImg from "./BigImg.vue";
export default {
  data() {
    return {
      photoVisible: false,
      bigImgUrl: "",
     }
  },
  methods: {
  showBigImage(e) {//点击图片函数,点击后,把photoVisible设置成true
    if (e != "") {
      this.photoVisible = true;
      this.bigImgUrl = e.currentTarget.src;
    }
  },
  components: {
     BigImg,
      },
  }

其他方法↓:

子组件:

<template>
  <div v-show="visible" @click="closeClick" class="showPhoto">
    <img class="img" :src="url" alt="图片加载失败" />
  </div>
</template>
 
<script>
export default {
  props: {
    url: {
      type: String,
      default: "",
    },
    visible: {
      type: Boolean,
      default: false,
    },
  },
  methods: {
    closeClick() {
      //子组件可以使用 $emit 触发父组件的自定义事件
      this.$emit("closeClick");
    },
  },
};
</script>
<style lang="css" scoped>
.showPhoto {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
}

.showPhoto .img {
  display: block;
  margin: auto 0;
  max-width: 100%;
  text-align: center;
}
</style>
 
点击按钮查看图片弹窗

百度的:

<el-image> 可通过 previewSrcList 开启预览大图的功能。

<template>
  <div>
    <!-- 按钮,点击后触发showImageDialog方法 -->
    <el-button @click="showImageDialog">查看图片</el-button>
 
    <!-- 图片弹窗 -->
    <el-dialog
      :visible.sync="dialogVisible"
      title="图片展示"
      :before-close="handleClose">
      <!-- 使用el-image组件展示图片 -->
      <el-image
        style="width: 100%; height: 100%"
        :src="imageUrl"
        fit="contain"></el-image>
    </el-dialog>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      // 图片URL       imageUrl:'https://cbu01.alicdn.com/img/ibank/O1CN01ihj8QW1Em2cAGrjH4_!!2211281850393-0-cib.jpg',
      // 控制弹窗显示的布尔值
      dialogVisible: false
    };
  },
  methods: {
    // 显示图片弹窗的方法
    showImageDialog() {
      this.dialogVisible = true;
    },
    // 关闭弹窗前的回调,可以在这里编写清理操作
    handleClose(done) {
      this.dialogVisible = false;
      done();
    }
  }
};
</script>

第二种:element 点击button弹出图片 运用自带隐藏的图片查看器el-image-viewer浏览图片_element 弹窗图片-CSDN博客

第三种:点击按钮(文字)调起elementUI大图预览_element点击按钮查看大图-CSDN博客 

Element-UI的点击按钮实现图片预览功能_javascript_不一般的菜瓜-Vue

template>
    <div>
        <el-button @click="onPreview">预览</el-button>
        <el-image-viewer  v-if="showViewer" :on-close="closeViewer" :url-list="[url]" />
    </div>
</template>
<script>
    // 导入组件
    import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
    
    export default {
      name: 'Index',
      components: { ElImageViewer },
      data() {
        return {
          showViewer: false, // 显示查看器
          url:'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg'
        }
      },
      methods: {
        onPreview() {
          this.showViewer = true
        },
        // 关闭查看器
        closeViewer() {
          this.showViewer = false
        }
      }
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值