javascript - 只有第一个 img 标签从 *ngFor li 标签不断变化
问题描述
我正在尝试在鼠标悬停时创建弹出描述
这是 HTML 代码
<div class = "col-12 container" id = {{i}}>
<ul class= "list-unstyled row">
<li *ngFor = "let z of data(m[m.length-1]) | slice: 0 : 10; index as j" class = "list-item col-6">
<img id = "champ" src = {{z[0]}}/>
<div id = "spells">
<img (mouseover)="pop(z[1].description, $event)" (mouseout) = "desc = out()" src = {{z[1].spellurl}}/>
<img (mouseover)="pop(z[2].description, $event)" (mouseout) = "desc = out()" src = {{z[2].spellurl}}/>
</div>
<div id = "desc"></div>
</li>
</ul>
这些是 mouseover 和 mouseout 的函数
pop(desc: string, event){
let ds = document.getElementById("desc");
let pos = event.target.getBoundingClientRect();
let newpos = "translate(" + pos.right + "px, " + pos.bottom+ "px)";
ds.style.display = "block";
ds.innerHTML = desc;
ds.style.transform = newpos;
}
out(){
let ds = document.getElementById("desc");
ds.style.display = "none";
}
我想要做的是,当鼠标悬停在其中一个小图像上时,获取它的位置并在图像右侧底部显示描述 DIV。
一个问题是,即使我试图将鼠标悬停在所有图像上,所有描述 div 都显示在我绘制箭头的相同位置。所以我从浏览器中“检查元素”来检查 HTML 代码,我发现只有第
<div id = "desc">
一个 ngFor li 标记在鼠标悬停时才会发生变化。
我不知道它为什么会发生,并且 event.target.getBoundingClientRect() 应该为我提供一个元素的当前位置,但它看起来不像。
有什么建议可以解决这个问题吗?
解决方案
推荐阅读
- google-api - 使用新 Gmail 主题时,Google Tasks API 不会提供有关任务完成的更新
- redis - 如何在本地配置 Redis 缓存?
- html - PWA 与 html5 网络应用?
- c# - 如果代码有其他方法可以编写吗?
- java - Java Swing JTextArea 行号
- php - 如何在 Laravel 5.6 中为每个通知文件创建具有单独通知表的多个通知文件
- android - 如何在不在线的情况下发送通知?
- c# - 从程序集中获取所有资源的列表
- ios - 将 ASWebAuthenticationSession 与 OAuth 或任何 Web 服务一起使用?
- sql - sql转换数据类型cast和convert