当前位置: 首页 > article >正文

Vue 点击图片放大显示功能

1 方式一:列表中感应鼠标显示大图

在这里插入图片描述
我管理后台使用的是 element , 列表使用的是 el-tabe

  <el-table-column
    prop="identifImg"
    header-align="center"
    align="center"
    label="证件照"
    width="100">
    <template slot-scope="scope">
      <el-popover
        placement="top-start"
        trigger="hover">
        <div class="row_reserve"><img class="big-img" :src="scope.row.identifImg"/></div>
        <div slot="reference"><img class="td-img" :src="scope.row.identifImg"/></div>
      </el-popover>
    </template>
  </el-table-column>

在列表中实现放大图片使用的是 el-popover 使用说明文档
在这里插入图片描述

2 方式二:自定义通用组件实现

首先是自定义大图显示的通用组件:big-img.vue

<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: 20%;
    text-align: center;
  }
</style>

然后在使用到文件中 引入组件并注册组件

<script>

  import BigImg from "../components/big-img"

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

然后在图片 img 处使用

<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>
 

完毕


http://www.kler.cn/a/4403.html

相关文章:

  • 在 Webpack 中使用 预加载(Preloading) 技术可以通过动态导入(import())以及指定预加载的方式来进行优化
  • 怎么防止SQL注入攻击
  • 基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用-以ENSO预测为例讲解
  • 《异步编程之美》— 全栈修仙《Java 8 CompletableFuture 对比 ES6 Promise 以及Spring @Async》
  • 【2025最新】机器学习类计算机毕设选题80套,适合大数据,人工智能
  • (12)springMVC文件的上传
  • 11_nginx_document_uri
  • 信息打点-主机架构蜜罐识别WAF识别端口扫描协议识别服务安全
  • 测试开发进阶系列课程
  • 问卷中多选题该怎么分析?
  • 《毫无意义的工作》笔记——一个人的工作越明显对他人有益,他得到的酬劳就越低?
  • STM32之TIM编码器接口
  • uni-app使用uview组件中的封装
  • 【笔记】C# 泛型约束
  • 【华为OD机试 2023最新 】 回文字符串(C++)
  • 基于springboot实现校园在线拍卖电商系统【源码】
  • 小波阈值去躁
  • 除了四大“门派”菌,一文了解肠道菌群的其它17个小众“门派”细菌
  • Java 线程调度
  • C语言的灵魂---指针(进阶)
  • 两数之和(力扣刷题)
  • OpenFeign调用微服务使用RequestInterceptor或@RequestHeader传递http请求头信息
  • Docker安装Redis集群(主从复制)
  • 【id:134】【20分】B. 求最大值最小值(引用)
  • 如何利用ChatGPT自动生成SQL语句
  • 物流云数据分析平台