【Vue3】图片未加载成功前占位

背景

在写项目时,加载图片未成功前,会出现空白页面,太影响美观和体验感

解决方案

1. element ui通过slot占位符解决

2. 自定义指令

原生img标签可以通过自定义指令解决,img标签有onload和onerror事件,都是在渲染成功后才出发,想占位要在渲染前触发

html 复制代码
<template>
     <img
         class="image_item-img"
         v-preload="'loading'" 
         src="https://xx"
         alt="加载失败"
     />
</template>
<script setup>
import { reactive } from 'vue'

// 自定义图片占位
const vPreload = {
	//未渲染img标签前
    beforeMount(el, binding) {
        el.style.backgroundColor = '#ececec'
        el.classList.add(binding.value) //binding.value是上面传过来'loading',我自定义的类名(可自己定义loading样式)
    },
    mounted(el, binding) {
        el.addEventListener('error', () => {
            el.classList.remove(binding.value)
        })
    },
}
</script>

3.用图片代替

html 复制代码
 <img
     class="image_item-img"
     v-for="(item, index) in imageList"
     :key="item.id"
     :src="item.url ? require('/src/assets/logo.png') : item.url"
     alt="加载失败"
     @click="handlePreview(index)"
 />
相关推荐
执剑、天涯9 分钟前
通过一个typescript的小游戏,使用单元测试实战(二)
javascript·typescript·单元测试
麦麦大数据29 分钟前
F025 基于知识图谱图书可视推荐系统 vue+flask+neo4j | python编写、知识图谱可视化+推荐系统
vue.js·python·知识图谱·推荐算法·协同过滤·图书推荐
古一|1 小时前
vue3都有哪些升级相比vue2-核心响应式系统重构
javascript·vue.js·重构
HHHHHY1 小时前
http接口响应头类型不对,导致svg图片无法预览,前端解决方案
前端·javascript
元亓亓亓2 小时前
考研408--组成原理--day1
开发语言·javascript·考研·计组
ruanCat2 小时前
记一次因 vue-router 升级而导致的 uniapp 故障
前端·vue.js
Mintopia2 小时前
🌌 知识图谱与 AIGC 融合:
前端·javascript·aigc
秋子aria2 小时前
作用域详解 立即执行函数详解
javascript
fox_2 小时前
写多参数函数总重复传值?用柯里化3步搞定参数复用与延迟执行
javascript
我叫黑大帅2 小时前
面对组件的不听话,我还是用了它…………
前端·javascript·vue.js