处理在 electron 中使用开启了懒加载的 el-image 后,窗口最大化或窗口尺寸变化后图片无法显示的问题

文章目录

1、问题描述

electron 中使用 el-image 时,开启了懒加载后,发现只有当窗口滚动后,图片才会显示,即便图片已经处于窗口的可视区域。当拖动窗口使其尺寸变大及点击窗口最大化后发现图片无法显示。

2、详情动图

3、解决思路

由于拖拽及窗口最大化时,窗口无滚动,只好通过手动方式滚动装载图片的父级容器,该父级容器设置了 overflow: scroll;overflow-y: auto 属性,在组件挂载前滚动界面并监听 resize 事件,组件卸载后取消监听,即可修复该问题。

4、解决方案

html 复制代码
<div id="imgs" ref="scrollContainer">
    <el-image 
    :src="info.small" 
    lazy 
    fit="contain" 
    :preview-src-list="imgPathList" 
    :initial-index="index" 
    :hide-on-click-modal="true">
        <template #error id="img_error">
            <div class="image-slot">Loading image error</div>
        </template>
    </el-image>
</div>
js 复制代码
// 绑定图片展示主容器
const scrollContainer = ref(null);

const handleResize = () => {
    nextTick(() => {
        if (scrollContainer.value) {
            // 只需滚动 1px 即可解决,无需过多,但也不可太少
            scrollContainer.value.scrollTop += 1;
        }
    });
};

onMounted(() => {
    handleResize();
    window.addEventListener("resize", handleResize);
});

onUnmounted(() => {
    window.removeEventListener("resize", handleResize);
});

5、效果展示

通过观察dom元素结构还发现,即便手动滚动了1个像素点,依然保留了懒加载的功能,并非把所有的图片都提前加载完。

相关推荐
兜兜转转了多少年几秒前
《Python 应用机器学习:代码实战指南》笔记2 从0理解机器学习 —— 核心概念全解析
笔记·python·机器学习
玄尺_007几秒前
uniapp h5端使浏览器弹出下载框
前端·javascript·uni-app
军军君017 分钟前
Three.js基础功能学习三:纹理与光照
前端·javascript·3d·前端框架·three·三维·三维框架
淡笑沐白7 分钟前
Vue3基础语法教程
前端·javascript·vue.js
MarkHD12 分钟前
智能体在车联网中的应用:第37天 CARLA仿真中的端到端车道保持:基于CNN模仿学习的自动驾驶实践
学习·cnn·自动驾驶
polarislove021413 分钟前
9.4 呼吸灯实验-嵌入式铁头山羊STM32笔记
笔记·stm32·嵌入式硬件
一 乐13 分钟前
景区管理|基于springboot + vue景区管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
JIngJaneIL15 分钟前
基于java + vue连锁门店管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
Mintopia15 分钟前
🧠 从零开始:纯手写一个支持流式 JSON 解析的 React Renderer
前端·数据结构·react.js
week_泽17 分钟前
网安基础_1_补充_网络安全渗透测试学习笔记
笔记·学习·web安全