图片加载失败并不等于页面失效。关键判断是:这张图承担的是“信息本身”还是“装饰作用”。前者必须在图片缺失时用文字补位,后者可以直接留空或收起容器。下面用一个假设情境说明决策过程。
假设一家株洲的机械配件厂,产品列表页每行左侧是零件照片,右侧是型号、材质、适配机型;页面顶部还有一张车间全景照。某天图床迁移,产品图与车间照全部返回失败。此时两种图的处理方式完全不同。
产品图是信息的一部分——客户要靠它确认外观、接口方向、表面处理。图片没了,右侧文字如果只写“型号 A-102”,客户无法判断能否替代原配件。车间照是信任装饰,缺失后不影响选型,留一个空容器反而更糟。
可以用一个问题快速分类:把这张图遮住,读者还能不能完成页面上的主要动作?
分类动作的结果会决定下一步:信息型图片要写替代文案,辅助型和信任型图片要处理容器。如果混在一起统一加“图片加载失败”,页面会变得又乱又长。
补位文字不是复述文件名,而是把图片原本传达的关键差异写出来。以零件图为例,可以写成:
<img src="part-a102.jpg" alt="A-102 零件正面,左侧为 12mm 进油口,右侧为 8mm 回油口">
当图片正常显示时,这段 alt 不占版面;当图片失败时,浏览器会把它显示在图片位置。读者至少能知道接口方向和尺寸。这是最省事的一层补位。
如果图片承载的信息量更大,比如一张安装步骤图包含四个动作,单靠 alt 不够。此时应在图片下方或旁边保留一段简短说明,把步骤写成有序列表。图片恢复后,这段说明仍然成立,不会变成冗余。
图片丢失后常见的第二个问题是布局塌陷:原本固定高度的图片区域变成一条细线,右侧文字上移,整行错位。解决办法不是给图片写死高度,而是让容器承担尺寸。
可以给图片外层容器设置一个最小高度和背景色,图片加载失败时容器仍然占据原位置,文字不会被挤走。如果图片是辅助型,直接给容器设置 display:none 或在图片的 onerror 里隐藏整个容器,比留一个灰色方块更干净。
这里有一个取舍:信息型图片保留容器,读者能看到“这里本来有一张图”,配合补位文字形成完整信息;辅助型图片隐藏容器,页面更紧凑。判断依据仍然是上一步的分类结果。
如果图片只是临时失败,补位文字加容器兜底就够了。但如果图片连续多天无法恢复,或者原图已经丢失且没有备份,继续保留图片位置会让页面看起来一直处于故障状态。
这时应做一次决策:
<img> 标签,避免每次访问都触发失败请求。这个动作的结果会影响后续维护:移除失败图片后,页面不再依赖那个资源,但也要检查其他页面是否引用了同一张图。如果同一张图被多个页面引用,应统一处理,而不是只修当前页。
遇到图片丢失时,按这个顺序走:先判断图片属于信息型、辅助型还是信任型;信息型补 alt 和必要说明,辅助型隐藏容器,信任型移除模块;再检查容器高度是否兜住布局;最后确认图片是否长期不可用,决定恢复还是替换。每一步的结果都会改变下一步的选择,不需要一次性把所有页面改完。