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

如何在Angular4及以上版本中实现鼠标悬停切换图片src属性

Angular 4+ 悬停修改图片src实现方案

1. 修改.ts组件逻辑

首先在组件类中新增一个变量存储当前悬停的菜单索引,再实现你模板中已经绑定的over和out方法:

// 组件类中新增变量
hoveredIndex: number = -1;

// 实现悬停事件方法
over(i: number): void {
  // 如果需要排除禁用状态的菜单,可以在这里加判断条件
  this.hoveredIndex = i;
}

out(): void {
  this.hoveredIndex = -1;
}

你现有的菜单JSON配置不需要做任何修改,直接复用已有的icon和activeIcon字段即可。

2. 修改HTML模板的图片绑定

你原来用两个div加hidden切换图片的写法可以简化,直接用Angular属性绑定动态计算src的值即可,既保留原有的选中态高亮逻辑,又新增悬停切换效果:

<!-- 替换原来两个带hidden的img div,只保留这一个img即可 -->
<img 
  [src]="selectedItem == i || hoveredIndex == i ? menu.activeIcon : menu.icon" 
  alt="{{menu.menuText}}"
/>

完整修改后的li内部图片相关代码片段如下:

<div class="ci-pl-20 ci-pr-20" [ngClass]="menuList ? 'ci-pt-10' : ''">
  <!-- 替换后的动态图片 -->
  <img 
    [src]="selectedItem == i || hoveredIndex == i ? menu.activeIcon : menu.icon" 
    alt="{{menu.menuText}}"
  />
  <div [hidden]="menuName == 'Encounter' && menuName == 'Clinical Trials' && menuName !== 'Case Summary'" class="ci-position-absolute" 
  style="top:-3%; left: 63%;">
    <img src="{{menu.betaIcon}}" />
  </div>
</div>

补充说明

  • 该方案完全基于Angular原生的事件绑定和属性绑定能力,兼容Angular 4及以上所有版本,无额外依赖
  • 如果需要禁用态菜单不触发悬停效果,只需要在over方法中加对应的状态判断,匹配你ngClass里的禁用条件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:39:00