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

HTML中同一张图片能否根据鼠标悬停切换资源?仅用HTML和CSS如何实现

解决方案

失效原因说明

src是HTML<img>标签的原生属性,CSS不支持直接修改HTML属性值,因此你写的img:hover {src=""}规则不会生效。仅用HTML+CSS可以通过以下几种方案实现悬停时的图片变化效果:


方案1:背景图切换(最常用,实现简单)

将图片设置为块级元素的背景,悬停时替换背景图地址即可:

代码示例

<!-- HTML部分 -->
<div class="img-box"></div>
/* CSS部分 */
.img-box {
  /* 替换为你的图片实际宽高 */
  width: 300px;
  height: 200px;
  /* 替换为默认状态的图片地址 */
  background-image: url("./default-img.png");
  background-size: cover;
  background-position: center;
  /* 加过渡动画让切换更自然 */
  transition: all 0.3s ease;
}
.img-box:hover {
  /* 替换为悬停状态的图片地址 */
  background-image: url("./hover-img.png");
}

如果不需要完全换图,只是要小幅视觉变化,也可以直接在hover中加变形/滤镜效果,比如:

.img-box:hover {
  /* 放大3% + 向上偏移2px + 提高10%亮度 */
  transform: scale(1.03) translateY(-2px);
  filter: brightness(1.1);
}

方案2:双图叠加切换(适合必须用<img>标签的场景)

把两张图片叠放在同一个容器内,默认隐藏悬停状态的图,悬停时切换透明度即可:

代码示例

<!-- HTML部分 -->
<div class="img-wrapper">
  <img src="./default-img.png" alt="展示图" class="default">
  <img src="./hover-img.png" alt="悬停图" class="hover">
</div>
/* CSS部分 */
.img-wrapper {
  position: relative;
  width: 300px;
  height: 200px;
}
.img-wrapper img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity 0.3s ease;
}
/* 默认隐藏悬停图 */
.img-wrapper .hover {
  opacity: 0;
}
/* 悬停时切换显示状态 */
.img-wrapper:hover .default {
  opacity: 0;
}
.img-wrapper:hover .hover {
  opacity: 1;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:36:03