You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在图片无法显示时用含background image与书名的<div>替代

解决方案

可以通过图片的onerror事件结合CSS显示控制实现需求:初始隐藏替代用的<div>,当封面图片加载失败时,触发事件隐藏原图片、显示带背景和书名的替代容器。

实现步骤

1. 调整HTML结构

给原图片添加onerror事件处理,同时给替代div设置初始隐藏的类:

<a href="#popup1">
  <img 
    src="uploadimages/<?=$image['image']?>" 
    alt="<?=$image['titre']?>"
    onerror="this.classList.add('hidden'); this.nextElementSibling.classList.remove('hidden');"
  />

  <div class="altimage hidden">
    <div class="alttitle"><?=$image['titre']?></div>
  </div>
</a>

2. 配置CSS样式

确保替代容器和图片布局一致,同时实现背景图和文字排版:

/* 让a标签作为定位容器,确保替代div和图片重合 */
a[href="#popup1"] {
  position: relative;
  display: inline-block;
  /* 设置和图书封面一致的固定宽高,避免布局跳动 */
  width: 220px;
  height: 320px;
  overflow: hidden;
}

/* 初始隐藏类 */
.hidden {
  display: none;
}

/* 替代容器样式:背景图+居中书名 */
.altimage {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: url('uploadimages/couvalt.png');
  background-size: cover;
  background-position: center;
  /* 让书名居中显示 */
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 15px;
  box-sizing: border-box;
}

/* 书名样式,提升可读性 */
.alttitle {
  color: #fff;
  font-size: 15px;
  font-weight: 600;
  text-shadow: 0 0 4px rgba(0,0,0,0.9);
  line-height: 1.4;
}

补充说明

  • 不需要额外引入外部JS文件,把切换逻辑直接写在onerror属性里即可,适合简单场景。
  • 固定宽高可以根据你网站的实际封面尺寸调整,避免图片加载失败后页面布局错乱。

内容的提问来源于stack exchange,提问作者lilogon7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 04:36:22