图片加载失败时如何显示默认占位图? 一俊俊 提问于 2026-03-19 04:12:20 阅读 34 组件 我在用 Vue 做一个用户头像展示组件,但有些用户的头像 URL 是坏的,页面就直接裂图了。试过在 img 标签上加 @error 事件切换 src,但有时候还是不生效,特别是动态加载的数据。 比如下面这段代码,明明写了错误处理,但偶尔还是会显示空白或者默认的 broken image 图标: <img :src="user.avatar" @error="handleImageError" alt="avatar" /> 有没有更可靠的方案?是不是得配合 CSS 或者用 v-if 控制? 我来解答 赞 7 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 打工人乙豪 Lv1 最省心的办法是直接用 onerror 属性硬编码默认图,比 Vue 事件更稳: :src="user.avatar" onerror="this.src='https://cdn.example.com/default-avatar.png'; this.onerror=null" alt="avatar" /> 如果还担心,配合 CSS 把浏览器默认的裂图图标 hide 掉: img { error-simulation: none; } img[src=""] { visibility: hidden; } 或者更彻底用 v-if 判断 src 是否有效再渲染,无效直接用占位图。动态数据的话在获取到数据时就处理好 url,别等到渲染阶段再处理。 回复 点赞 2026-03-19 05:01 加载更多 相关推荐 2 回答 71 浏览 Vue图片懒加载时,加载失败的降级方案没生效怎么办? 我在用Vue做图片懒加载优化时,想给加载失败的图片显示默认占位图。参考了一些方案后写了类似下面的代码,但实际测试时发现图片加载失败后还是直接显示红叉,占位图没出现。试过把<img标签换成v-if... 一东旭 优化 2026-01-30 19:16:31 2 回答 35 浏览 Element Plus的Avatar头像不显示图片是怎么回事? 我在用Element Plus的Avatar组件时,传了图片地址但头像一直显示默认占位符,没报错也没加载图片。我试过直接写死URL和用变量绑定,都不行。 代码是这样写的: <el-avatar ... IT人红会 组件 2026-03-04 14:23:19 2 回答 98 浏览 element-plus的el-image设置error属性后占位图没显示怎么办 在用element-plus的el-image组件时,图片加载失败后设置的error属性里的占位图完全没显示,页面上直接显示空白区域。我检查过图片路径没问题,正常访问能打开,但出错时就是不显示占位图。... 顺红 组件 2026-02-02 08:42:45 1 回答 41 浏览 懒加载图片时 CSS 占位导致布局偏移怎么办? 我在做图片懒加载的时候,为了防止加载时页面跳动,给 img 加了固定宽高,但实际显示还是会有轻微偏移,特别在移动端很明显。是不是我的占位样式写得不对? 目前是这样写的: .lazy-img { wid... FSD-毓珂 优化 2026-03-24 22:45:17 1 回答 53 浏览 占位图加载时如何避免布局偏移? 我在做图片懒加载,用了灰色占位图,但真实图片加载后页面还是会跳一下,怎么解决啊? 已经给 img 加了固定宽高,也试过用 aspect-ratio,但有些图片比例不一致,还是会有抖动。 这是我的写法:... Code°绍懿 优化 2026-03-23 10:46:22 1 回答 29 浏览 图片懒加载时占位图怎么保持宽高比不抖动? 我在做图片懒加载,用一个灰色div当占位图,但真实图片加载后页面会跳动,因为不知道原图尺寸。有没有办法提前固定容器比例? 试过用padding-top百分比方案,但需要后端返回宽高,现在接口没给这些数... 技术汉霖 优化 2026-03-18 14:45:22 1 回答 40 浏览 Taro 中如何正确处理微信小程序和 H5 端的图片路径差异? 我在用 Taro 开发一个多端项目,本地图片在 H5 上能正常显示,但编译到微信小程序就加载失败了。查了文档说要放 src/assets 下,也试过 require 引入,但还是不行。是不是不同端对静... 琳贺 Dev 框架 2026-03-17 13:48:22 1 回答 66 浏览 加载失败时怎么优雅地显示错误提示? 我在做列表页的加载逻辑,网络请求失败后想显示“加载失败,请重试”的提示,但现在的写法好像没生效,状态切换也不对。 我试过在 catch 里改 loading 和 error 状态,但页面还是卡在 lo... 博主丽萍 交互 2026-03-14 01:46:22 2 回答 37 浏览 图片懒加载时占位图怎么处理才不抖动? 我在做图片懒加载,用了一张灰色的占位图,但图片加载完成后页面还是会“抖”一下,布局好像被撑开了。明明设置了宽高,为啥还会这样? 我试过给 img 加 width: 100%; height: auto... 小艺菲 优化 2026-03-10 17:29:19 2 回答 44 浏览 图片加载失败时怎么优雅地显示默认图? 我在用原生JS动态渲染用户头像,但有些图片链接失效了,页面就直接裂图很难看。试过在img标签上加onerror,但好像没生效?是不是写法有问题? 这是我的代码: const img = documen... 小艺童 组件 2026-03-03 13:52:18
onerror="this.src='https://cdn.example.com/default-avatar.png'; this.onerror=null" alt="avatar"
/>
如果还担心,配合 CSS 把浏览器默认的裂图图标 hide 掉:
img {
error-simulation: none;
}
img[src=""] {
visibility: hidden;
}
或者更彻底用 v-if 判断 src 是否有效再渲染,无效直接用占位图。动态数据的话在获取到数据时就处理好 url,别等到渲染阶段再处理。