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

vue 点击放大,图片预览效果

背景:

在使用vue框架+element组件的背景下,我们对图片的展示需要点击放大(单张);如果是多张图片,要支持左右滑动查看多张图片(多张)。

单张图片放大,el-image图片组件,或者原生的img标签。

多张图片放大,el-image图片组件图片预览的自定义预览出效果。

这里也遇到了走马灯的图片的放大效果,给图片绑定了一个自定义的点击事件@click,用来解决走马灯的放大效果。

走马灯效果点击放大,Carousel走马灯,el-carousel。

走马灯单张放大实现了。。。

走马灯多张放大切换没有实现。。。

一、单张图片点击放大

el-image组件:

效果展示:

核心代码:

使用element组件,其中的 el-image图片组件

//组件属性绑定:preview-src-list属性
        <el-image
            v-if="item.photo"
            class="img-style"
            :src="BASEUrl + '/file/' + item.photo"
            :zoom-rate="1.2"
            :max-scale="7"
            :min-scale="0.2"
            :preview-src-list="[BASEUrl + '/file/' + item.photo]"
            show-progress
            :initial-index="4"
            fit="cover"
          />

接口数据:

//接口数据
[
    {
        "pid": 51,
        "cname": "川蓬安渡0012",
        "name": "川蓬安渡0012",
        "mmsi": 415931252,
        "carryPassengersNum": 15,
        "status": 2,
        "photo": "shipPhoto/9a80f083-32a7-41ee-b508-46c3cf385372.jpg",
    },
    {
        "pid": 52,
        "cname": "川蓬安渡0011",
        "name": "川蓬安渡0011",
        "mmsi": 415931259,
        "carryPassengersNum": 15,
        "status": 2,
        "photo": "shipPhoto/4cee0bbb-1b91-494d-a546-fff012fa96be.jpg",
    },
    {
        "pid": 78,
        "cname": "测试渡船",
        "name": "测试渡船",
        "mmsi": 432781135,
        "carryPassengersNum": 29,
        "status": -1,
        "photo": "shipPhoto/6c505716-d5e8-447d-9fe6-f41879a9a9a3.png",
    },
    {
        "pid": 79,
        "cname": "测试渡船1136",
        "name": "测试渡船1136",
        "mmsi": 432781136,
        "carryPassengersNum": 39,
        "status": -1,
        "photo": "shipPhoto/2b3816e5-d2a8-4caf-80ab-a714f68a12d8.jpg",
    }
]

 组件官网:点击跳转

 el-carousel组件:

效果展示:

核心代码:

//自定义一个点击事件@click="handleClick(item)"
<template>
      <el-carousel
        :interval="5000"
        arrow="always"
        height="190px"
        @change="imgChange"
        trigger="click"
      >
        <el-carousel-item
          v-for="(item, index) of state.repairData"
          :key="index"
        >
          <div class="img-box">
            <img
              style="width: 100%; height: 100%"
              :src="item.file"
              alt="一张图"
              @click="handleClick(item)"
            />
          </div>
        </el-carousel-item>
      </el-carousel>
//图片预览,绝对布局相对于系统,所以放在走马灯标签外面
    <el-image-viewer
      v-if="showPreview"
      :url-list="[state.imgSrc]"
      show-progress
      @close="showPreview = false"
    />
</template>

遇见的问题:

问题描述:

图片放大的效果是放大在走马灯组件内部,没有放大到系统

问题展示: 

图片放大的效果是放大在走马灯组件内部,没有放大到系统;解决办法:查看图片预览组件的position等位属性,查看父子标签的位置属性。

可以发现的是el-image-viewer标签是绝对定位,

解决办法:

总结:

 二、多张图片放大

el-image组件:

官网链接:点击跳转

el-carousel组件:

组件官网:点击跳转

el-carousel组件本身并没有click点击的事件。。。

自定义click事件: 

尝试自己用el-image-viewer组件绑定一个数组,实现效果不好,图片加载失败,经过多次排查哈错误原因:1、是否是图片跨域,图片本身不能加载成功;2、百度。发现可能是触发了vue的透传机制,目前解决不了 

 

失败思路:

我想的是el-image-viewer组件可以绑定一个数组的话,我就给它绑定一个数组。但是出现了问题,图片也加载失败 ,

[Vue warn]: Extraneous non-props attributes (show-progress) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes. 

[Vue warn]: 额外的非道具属性(显示进度)被传递给组件,但无法自动继承,因为组件渲染片段或文本或传送根节点。

很明显是你无意操作,无意触发了Vue3透传Attributes机制才没有出现报错,可当你的子组件中有多个根节点时,Vue使用透传Attributes机制也没有办法确定要在哪一个根节点继承属性时,就报出了上诉警告。

vue透传:点击跳转

写到这儿。。。多张图片放大的效果暂时不做了。。。

大概问题出在走马灯组件和图片组件之间的点击事件,用户鼠标点击的时候触发了vue3的透传

相关文章:

  • vue项目配置服务器代理,解决请求跨域问题
  • el-table下的复选框关联勾选
  • thinkphp8.0\swoole的websocket应用
  • MySQL: 创建两个关联的表,用联表sql创建一个新表
  • 电机控制常见面试问题(十八)
  • vulntarget_a 训练笔记
  • 人工智能赋能:生成式游戏的未来趋势
  • 响应式 Web 设计:HTML 与 CSS 协同学习的进度(二)
  • 2025-03-24 学习记录--C/C++-PTA 习题7-7 字符串替换
  • 预测蓝桥杯16届嵌入式省赛客观题
  • 【进阶编程】Avalonia、MAUI、Uno Platform、Flutter、Electron、Qt 和 Tauri 的详细对比
  • CPP中的numeric库中的accumulate求和函数说明
  • Python----计算机视觉处理(Opencv:绘制图像轮廓:寻找轮廓,findContours()函数)
  • 深入剖析ReLU激活函数:特性、优势与梯度消失问题的解决之道,以及Leaky ReLU 和 Parametric ReLU
  • Python和json
  • PTA 1105-链表合并(C++)
  • 大模型的后训练(post-training)方法
  • 【区块链通用服务平台及组件】绿信链 | FISCO BCOS 应用案例
  • 分布式环境下的重复请求防护:非Redis锁替代方案全解析
  • 智能汽车图像及视频处理方案,支持视频智能包装能力
  • 央行副行长:研究建立民营中小企业增信制度,破解民营中小企业信用不足等融资制约
  • 大学2025丨专访南开人工智能学院院长赵新:人工智能未来会变成通识类课程
  • 在差异中建共鸣,《20世纪美国文学思想研究》丛书出版
  • 51岁国家移民管理局移民事务服务中心联络部副主任林艺聪逝世
  • 葛兰西:“生活就是抵抗”
  • 戴昕谈隐私、数据、声誉与法律现实主义