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

如何实现鼠标hover时切换商品模块data-bg对应的背景图

实现方案

纯CSS方案(推荐)

无需依赖JavaScript,性能最优,可自带平滑过渡效果:

/* 父容器设置相对定位,作为子元素的定位基准 */
.collection-product-image {
  position: relative;
  /* 可根据实际业务调整高度,保留你原有设置即可 */
  height: 320px;
  overflow: hidden;
}

/* 两个背景图容器占满父容器,层叠摆放 */
.collection-product_image {
  position: absolute;
  inset: 0; /* 等价于top:0;left:0;right:0;bottom:0 */
  background-size: cover;
  background-position: center;
  /* 0.3秒淡入淡出过渡,不需要可删除该行 */
  transition: opacity 0.3s ease;
}

/* 默认状态:第一个图显示,第二个图隐藏 */
.collection-product_image.first {
  opacity: 1;
  z-index: 1;
}
.collection-product_image.second {
  opacity: 0;
  z-index: 0;
}

/* hover状态:显隐切换 */
.collection-product-image:hover .first {
  opacity: 0;
  z-index: 0;
}
.collection-product-image:hover .second {
  opacity: 1;
  z-index: 1;
}

JavaScript实现方案

如果有特殊场景需要用脚本控制,提供两种版本可选:

原生JS版本

document.querySelectorAll('.collection-product-image').forEach(container => {
  const firstBg = container.querySelector('.first');
  const secondBg = container.querySelector('.second');
  
  // 鼠标移入切换
  container.addEventListener('mouseenter', () => {
    firstBg.style.opacity = '0';
    secondBg.style.opacity = '1';
  });
  
  // 鼠标移出恢复
  container.addEventListener('mouseleave', () => {
    firstBg.style.opacity = '1';
    secondBg.style.opacity = '0';
  });
});

jQuery版本

$('.collection-product-image').hover(function() {
  $(this).find('.first').css('opacity', '0');
  $(this).find('.second').css('opacity', '1');
}, function() {
  $(this).find('.first').css('opacity', '1');
  $(this).find('.second').css('opacity', '0');
});

提示:如果不需要过渡效果,把CSS里的transition属性删掉,JS里把opacity改成display的none/block切换即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 12:54:02