vue2升级vue3:图片点击预览出现样式错乱

表格内的图片点击预览出现样式错乱

表格里的图片预览后,预览层只显示在表格区域里,没有覆盖整个页面,而是被页面容器"裁剪"了,看起来像是只在表格区域中间显示一块

这在 Element Plus 的 el-image 预览里是一个比较常见的问题,原因通常是:

1️⃣ 父容器有 transform / overflow 导致层级被限制

很多后台布局(如 el-table 外层、dialogdrawerlayout)会有:

css 复制代码
overflow: hidden;
transform: translate3d(...);

这样会导致 fixed / teleport 的层被限制在父容器内

所以预览层就不会覆盖整个页面,而是被裁剪。

2️⃣ preview-teleported 没有开启(Element Plus 关键属性)

Element Plus 中,图片预览需要开启 teleport 到 body

你现在的代码:

ini 复制代码
<el-image
  class="table-image-preview"
  style="width: 90px; height: 50px"
  :src="scope.row.appendixFiles[0].fullUrlShow"
  :preview-src-list="scope.row.imgList"
  :append-to-body="true"
  fit="cover"
>

append-to-body 其实 不是 el-image 的属性

正确写法应该是:

ini 复制代码
<el-image
  class="table-image-preview"
  style="width: 90px; height: 50px"
  :src="scope.row.appendixFiles[0].fullUrlShow"
  :preview-src-list="scope.row.imgList"
  preview-teleported
  fit="cover"
/>

✅ 改成这样

ini 复制代码
<el-image
  class="table-image-preview"
  style="width: 90px; height: 50px"
  :src="scope.row.appendixFiles[0].fullUrlShow"
  :preview-src-list="scope.row.imgList"
  :preview-teleported="true"
  fit="cover"
/>

3️⃣ 如果还不行,再检查这个 CSS

某些布局会有:

css 复制代码
.el-table__body-wrapper {
  overflow: hidden;
}

可以测试:

css 复制代码
.el-table {
  overflow: visible;
}

不过 一般 preview-teleported 就能解决


📌 最推荐写法(完整)

ini 复制代码
<el-table-column label="图片" align="center" min-width="90px">
  <template #default="scope">
    <div v-if="scope.row.appendixFiles?.length">
      <el-image
        style="width:90px;height:50px"
        :src="scope.row.appendixFiles[0].fullUrlShow"
        :preview-src-list="scope.row.imgList"
        :preview-teleported="true"
        fit="cover"
      />
    </div>
  </template>
</el-table-column>

💡 额外建议(企业项目常用)

如果你的 imgList 其实只有一张,可以这样写更安全:

ruby 复制代码
:preview-src-list="[scope.row.appendixFiles[0].fullUrlShow]"

避免 imgList undefined。

相关推荐
码视野23 分钟前
基于 Spring Boot + Vue3 的【大学英语四六级 (CET-4/6) 作文智能评分与句式润色系统】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端·vue3
大模型码小白29 分钟前
AI 对话流性能调优:万级消息的虚拟滚动落地
java·大数据·前端·javascript·人工智能·算法·机器学习
xm_xm_xm_11 小时前
react17版本以前类组件常用操作
前端·javascript·react.js
ly76892 小时前
Web 性能优化实战:从 Core Web Vitals 到工程化性能治理
前端·性能优化
冬奇Lab3 小时前
一天一个开源项目(第200篇):next-forge - 生产级 Next.js SaaS 启动模板
前端·前端框架·开源
Profile排查笔记3 小时前
指纹浏览器怎么设置 IP?代理配置、检测与排错流程
前端·人工智能·后端·自动化
lzhdim3 小时前
13、JavaScript事件循环机制 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
liangshanbo12153 小时前
Vue 3 <script setup> 的本质原理是什么?它与普通 setup()有何区别?
前端·javascript·vue.js
IT_陈寒4 小时前
SpringBoot自动配置失效?你可能漏了这个小开关
前端·人工智能·后端
kyriewen4 小时前
我写了1个复盘Skill,和AI协作踩过的坑第二天自动变成护栏
前端·程序员·ai编程